带SSE传输的MCP多服务器演示
此项目演示了如何使用模型上下文协议(MCP)与使用不同传输方法(stdio和服务器发送事件)的多个服务器一起使用。
它基于以下示例:https://github.com/langchain-ai/langchain-mcp-adapters
概述
该项目包括:
- 提供基本算术运算(加法、乘法)的数学服务器
- 提供不同地点模拟天气信息的天气服务器
- 使用MultiServerMCPClient连接到两台服务器的主应用程序
- 与LangChain和OpenAI集成,创建一个可以使用两个服务器工具的代理
需求
- Python 3.8+
- OpenAI API密钥
安装
- 克隆存储库:
git clone https://github.com/yourusername/mcp-sse.git
cd mcp-sse- 安装所需的依赖项:
pip install -r requirements.txt- 在中设置您的OpenAI API密钥
.env文件:
OPENAI_API_KEY=your-api-key-here项目结构
main.py:连接到两个服务器并运行代理的主要应用程序math_server.py:一个使用stdio传输提供数学运算的简单MCP服务器weather_server.py:使用SSE传输提供天气信息的简单MCP服务器requirements.txt:Python依赖项列表.env:环境变量(包含您的OpenAI API密钥)
运作原理
该应用程序演示了如何使用MultiServerMCPClient以不同的传输方式连接到多个MCP服务器:
- 数学服务器使用stdio传输,这是一种简单的基于管道的通信方法
- 天气服务器使用服务器发送事件(SSE)传输,这是一种基于HTTP的服务器到客户端推送通知协议
主要应用:
- 将天气服务器作为单独的进程启动
- 使用MultiServerMCPClient连接到两台服务器
- 创建一个可以使用两个服务器上的工具的LangChain代理
- 演示如何使用代理执行数学计算并获取天气信息
用法
运行主应用程序:
python main.py这将:
- 在端口8000上启动气象服务器
- 连接到数学和天气服务器
- 使用数学和天气的示例查询运行代理
查询示例
演示包括两个示例查询:
- 数学问题:“什么是(3+5)x 12?”
- 天气查询:“纽约的天气怎么样?”
扩展项目
您可以通过以下方式扩展此项目:
- 向数学或天气服务器添加更多工具
- 创建具有不同功能的其他MCP服务器
- 修改代理以处理更复杂的查询
- 连接到真实的天气API,而不是使用模拟数据
许可证
麻省理工学院
致谢
- 该项目使用 MCP(模型上下文协议) 由Anthropic开发
- 与集成 LangChain 用于代理功能
