带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 密钥
- 虚拟环境支持
🛠️ 安装
- 克隆/下载项目
cd "MCP Server With Langchain"- 创建并激活虚拟环境
python -m venv .venv
.venv\Scripts\activate.bat # On Windows- 安装依赖项
pip install -r requirements.txt- 设置环境变量
- 复制 .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"🛠️ 发展
添加新工具
- 创建新的MCP服务器 遵循FastMCP模式
- 添加服务器配置 给客户
- 更新客户端 处理新的工具类型
示例:添加计算器服务器
# 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")🔍 故障排除
常见问题
- ModuleNotFoundError:没有名为“mcp”的模块
- 解决方案:确保您使用的是虚拟环境Python - 用途: .venv\Scripts\python.exe 而不是 python
- 与天气服务器的连接被拒绝
- 解决方案:确保气象服务器在端口8000上运行 - 检查: python weather.py 正在另一个终端中运行
- Groq API错误
- 解决方案:在中验证您的GROQ_API_KEY .env 文件 - 检查:您的API密钥有足够的信用
调试提示
- 检查可用工具:客户端在启动时打印所有可用工具
- 验证服务器日志:两台服务器都显示请求/响应日志
- 单独测试:您可以独立测试每台服务器
📚 了解更多
🤝 贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 彻底测试
- 提交拉取请求
📄 许可证
这个项目是为了教育目的。请检查单个组件许可证。
🎯 后续步骤
- \[\]添加更多MCP服务器(数据库、文件系统等)
- \[\]实现错误处理和重试逻辑
- \[\]添加流媒体响应
- \[\]创建web界面
- \[\]添加身份验证和安全性
- \[\]实现工具结果缓存
______________________________________________________________________
快乐编码! 🚀
如有疑问或问题,请查看故障排除部分或在存储库中创建问题。
