多服务器聊天机器人

MCP多服务器聊天机器人是一个生成式AI项目,展示如何将单个代理连接到多个MCP服务器,统一不同服务(如数学运算、天气信息等)到一个聊天机器人中。

  • by Subitha-Murugesan
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 subitha-murugesan/mcp-multi-server-chatbot

使用说明

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

  1. 初始化项目

    uv init mcp-multi
    cd mcp-multi
    
  2. 创建并激活虚拟环境

    uv venv
    source .venv/bin/activate
    
  3. 安装依赖项

    uv add langchain-groq
    uv add langchain-mcp-adapters
    uv add langgraph
    uv add python-dotenv
    uv add mcp
    
  4. 创建一个 .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

示例运行

  1. 启动服务器 在单独的终端中:
uv run python mathserver.py
uv run python weather.py
  1. 运行客户端:
uv run python client.py
  1. 输出:

运作原理

  1. MCP服务器

    • mathserver.py 公开数学函数。
    • weather.py 公开天气API。
  2. MCP客户端

    • client.py 使用同时连接到两个服务器 MultiServerMCPClient.
    • 收集可用工具(add, subtract, get_weather等等)。
  3. 重新代理

    • 用途 希腊 LLM (qwen3-32b)就像大脑一样。

    • 应用 重演模式:

      • 原因-决定调用哪个工具。
      • 动作-调用MCP工具。
      • 观察-将工具输出纳入上下文。
      • 响应-向用户提供最终答案。
  4. 运输

    • stdio -简单、轻量级的通信(由数学服务器使用)。
    • http -类似API的通信(由气象服务器使用)。