MCP服务器与Langchain集成

该项目展示了如何将Model Context Protocol (MCP)服务器与Langchain和Groq集成,构建能够通过不同传输协议使用多种工具的AI代理。

  • by SwarajMundruppadyRao
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 swarajmundruppadyrao/mcp-server-with-langchain

使用说明

带Langchain的MCP服务器

该项目演示了如何将模型上下文协议(MCP)服务器与Langchain和Groq集成,以构建可以通过不同传输协议使用多种工具的AI代理。

🚀 特性

  • 多个MCP服务器:数学服务器(stdio)和天气服务器(HTTP)
  • Langchain集成:使用Langchain的MCP适配器实现无缝工具集成
  • 希腊 LLM:由Groq的快速推理提供支持 llama-3.1-8b-instant 模型
  • 反应代理:使用Langraph的预构建React代理进行工具编排
  • 双重运输:演示stdio和HTTP传输协议

📋 先决条件

  • Python 3.13或更高版本
  • Groq API 密钥
  • 虚拟环境支持

🛠️ 安装

  1. 克隆/下载项目

    cd "MCP Server With Langchain"
    
  2. 创建并激活虚拟环境

    python -m venv .venv
    .venv\Scripts\activate.bat  # On Windows
    
  3. 安装依赖项

    pip install -r requirements.txt
    
  4. 设置环境变量

    • 复制 .env.example 向 .env: copy .env.example .env
    • 编辑 .env 并添加您的Groq API密钥:
      GROQ_API_KEY="your_groq_api_key_here"
      

📂 项目结构

MCP Server With Langchain/
├── .env                    # Environment variables
├── .venv/                  # Virtual environment
├── client.py              # Main client application
├── mathserver.py          # Math MCP server (stdio transport)
├── weather.py             # Weather MCP server (HTTP transport)
├── requirements.txt       # Python dependencies
├── pyproject.toml         # Project configuration
└── README.md              # This file

🔧 配置

依赖关系(requirements.txt)

langchain-groq
langchain-mcp-adapters
mcp
httpx
python-dotenv

环境变量

GROQ_API_KEY=your_groq_api_key_here
OPENWEATHER_API_KEY=your_openweather_api_key_here  # Optional

🏃‍♂️ 用法

步骤1:启动天气服务器

打开终端并运行:

.venv\Scripts\activate.bat
.venv\Scripts\python.exe weather.py

您应该看到:

INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

步骤2:运行客户端

打开另一个终端并运行:

.venv\Scripts\activate.bat
.venv\Scripts\python.exe client.py

期望输出

Available tools: ['add', 'multiply', 'get_weather']
Math response: The result of the calculation is 96.

Testing another math operation...
Math response 2: The result of multiplying 7 and 8 is 56.

🏗️ 建筑

MCP服务器

数学服务器(mathserver.py)

  • 运输:stdio
  • 工具:
    • add(a: int, b: int) -> int:将两个数字相加
    • multiply(a: int, b: int) -> int:将两个数字相乘

天气服务器(weather.py)

  • 运输:streamable_http
  • 端口: 8000
  • API:使用OpenWeatherMap API获取真实天气数据
  • 后备方案:未提供API密钥时返回演示数据
  • 工具:
    • get_weather(location: str) -> str:返回当前天气信息

客户端应用程序(client.py)

  • 框架:表链+表链
  • LLM: 希腊语 llama-3.1-8b-instant
  • 代理:用于工具编排的React代理
  • 传输协议:stdio和HTTP

🔌 MCP集成

客户使用 MultiServerMCPClient 要连接到多个MCP服务器:

client = MultiServerMCPClient({
    "math": {
        "command": ".venv\\Scripts\\python.exe",
        "args": ["mathserver.py"],
        "transport": "stdio"
    },
    "weather": {
        "url": "http://127.0.0.1:8000/mcp",
        "transport": "streamable_http"
    }
})

📊 交互示例

数学运算

User: Calculate (3 + 5) × 12
Agent: Uses add(3, 5) → 8, then multiply(8, 12) → 96

天气查询

User: What's the weather in California?
Agent: Uses get_weather("California") → "It's always raining in California"

🛠️ 发展

添加新工具

  1. 创建新的MCP服务器 遵循FastMCP模式
  2. 添加服务器配置 给客户
  3. 更新客户端 处理新的工具类型

示例:添加计算器服务器

# calculator_server.py
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Calculator")

@mcp.tool()
def divide(a: float, b: float) -> float:
    """Divide two numbers"""
    return a / b

if __name__ == "__main__":
    mcp.run(transport="stdio")

🔍 故障排除

常见问题

  1. ModuleNotFoundError:没有名为“mcp”的模块

    • 解决方案:确保您使用的是虚拟环境Python
    • 用途: .venv\Scripts\python.exe 而不是 python
  2. 与天气服务器的连接被拒绝

    • 解决方案:确保气象服务器在端口8000上运行
    • 检查: python weather.py 正在另一个终端中运行
  3. Groq API错误

    • 解决方案:在中验证您的GROQ_API_KEY .env 文件
    • 检查:您的API密钥有足够的信用

调试提示

  • 检查可用工具:客户端在启动时打印所有可用工具
  • 验证服务器日志:两台服务器都显示请求/响应日志
  • 单独测试:您可以独立测试每台服务器

📚 了解更多

🤝 贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 彻底测试
  5. 提交拉取请求

📄 许可证

这个项目是为了教育目的。请检查单个组件许可证。

🎯 后续步骤

  • []添加更多MCP服务器(数据库、文件系统等)
  • []实现错误处理和重试逻辑
  • []添加流媒体响应
  • []创建web界面
  • []添加身份验证和安全性
  • []实现工具结果缓存

快乐编码! 🚀

如有疑问或问题,请查看故障排除部分或在存储库中创建问题。