MCP多服务器聊天机器人
MCP多服务器聊天机器人 是一个生成式人工智能项目,展示了如何将单个代理连接到多个代理 MCP(模型上下文协议)服务器.
它使用:
- LangChain MCP适配器 -连接到多个MCP服务器。
- LangGraph重构代理 -让模型决定何时使用工具,何时响应。
- 希腊 LLM -用于快速推理和对话。
- FastMCP -快速构建自定义MCP服务器(
math和weather).
该项目演示了MCP如何将不同的服务(数学运算、天气信息等)统一到 一个聊天机器人.
______________________________________________________________________
特性
- 连接到 同时使用多个MCP服务器.
- 数学MCP服务器(stdio) → 加、减、乘数字。
- 气象MCP服务器(HTTP) → 获取简单的天气响应。
- 用途 Groq的Qwen3-32B型号 (通过
langchain-groq). - LangGraph ReAct代理 → 选择自动调用哪个MCP工具。
______________________________________________________________________
设置为 uv
- 初始化项目
uv init mcp-multi
cd mcp-multi- 创建并激活虚拟环境
uv venv
source .venv/bin/activate- 安装依赖项
uv add langchain-groq
uv add langchain-mcp-adapters
uv add langgraph
uv add python-dotenv
uv add mcp- 创建一个
.env文件 使用Groq API密钥:
GROQ_API_KEY=your_groq_api_key_here______________________________________________________________________
每个文件的说明
1. mathserver.py (stdio MCP服务器)
- 实现三个工具:
add,subtract,multiply. - 用途
stdio传输-通过标准输入/输出流进行通信。 - 适用于简单的本地工具服务器。
运行方式:
uv run python mathserver.py______________________________________________________________________
2. weather.py (HTTP MCP服务器)
- 实现单个工具:
get_weather(city). - 用途
streamable-http传输-作为HTTP服务器运行。 - 适用于通过API公开的服务。
运行方式:
uv run python weather.py______________________________________________________________________
3. client.py (多服务器客户端)
- 用途
MultiServerMCPClient要连接到两台服务器,请执行以下操作:
- math (stdio) - weather (http)
- 从两台服务器动态加载所有工具。
- 将它们包裹成 LangGraph ReAct代理 随着 希腊 LLM.
- 代理人决定是否:
- 使用LLM直接回答。 - 调用其中一个MCP工具(add, get_weather等等)。
运行方式:
uv run python client.py______________________________________________________________________
示例运行
- 启动服务器 在单独的终端中:
uv run python mathserver.pyuv run python weather.py- 运行客户端:
uv run python client.py- 输出:
______________________________________________________________________
运作原理
- MCP服务器
- mathserver.py 公开数学函数。 - weather.py 公开天气API。
- MCP客户端
- client.py 使用同时连接到两个服务器 MultiServerMCPClient. - 收集可用工具(add, subtract, get_weather等等)。
- 重新代理
- 用途 希腊 LLM (qwen3-32b)就像大脑一样。
- 应用 重演模式:
- 原因-决定调用哪个工具。 - 动作-调用MCP工具。 - 观察-将工具输出纳入上下文。 - 响应-向用户提供最终答案。
- 运输
- stdio -简单、轻量级的通信(由数学服务器使用)。 - http -类似API的通信(由气象服务器使用)。
