多服务器MCP代理

一个使用LangChain、LangGraph和Groq创建的AI代理,能够与多个MCP服务器交互进行数学运算和天气信息查询。

  • by Rachneet
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 rachneet/mcp-server-demo

使用说明

MCP演示项目

使用LangChain、LangGraph和Groq创建AI代理的模型上下文协议(MCP)演示,该代理可以与多个MCP服务器进行交互,以进行数学运算和天气信息。

概述

该项目展示了如何:

  • 使用FastMCP创建MCP服务器
  • 设置多个MCP服务器(数学和天气)
  • 使用LangChain MCP适配器连接到多个服务器
  • 使用LangGraph创建一个ReAct代理,该代理可以使用来自不同MCP服务器的工具
  • 与Groq的语言模型集成

项目结构

mcp_demo/
├── client.py          # Main client that connects to MCP servers and runs the agent
├── mathserver.py      # MCP server providing mathematical operations
├── weather.py         # MCP server providing weather information
├── main.py           # Simple entry point
├── requirements.txt   # Python dependencies
├── pyproject.toml    # Project configuration
└── README.md         # This file

特性

数学服务器(mathserver.py)

  • 添加:添加两个数字
  • 乘:将两个数字相乘
  • 使用stdio传输进行通信

天气服务器(weather.py)

  • 获得天气:获取城市的天气信息(模拟数据)
  • 使用流式HTTP传输进行通信

客户(client.py)

  • 连接到数学和天气MCP服务器
  • 使用LangGraph创建ReAct代理
  • 使用Groq的Qwen模型进行推理
  • 演示跨多个服务器的工具使用情况

先决条件

  • Python 3.13+
  • Groq API 密钥

安装

  1. 克隆存储库:
git clone <your-repo-url>
cd mcp_demo
  1. 安装依赖项:
pip install -r requirements.txt
  1. 设置环境变量: 创建一个 .env 项目根目录中的文件:
GROQ_API_KEY=your_groq_api_key_here

用法

运行天气服务器

首先,在单独的终端中启动天气服务器:

python weather.py

天气服务器将启动 http://localhost:8000/mcp 使用流式HTTP传输。

运行客户端

在另一个终端中,运行主客户端:

python client.py

这将:

  1. 连接到数学服务器(stdio)和天气服务器(HTTP)
  2. 使用两台服务器上的工具创建ReAct代理
  3. 让代理人解决一道数学题:“什么是(3+5)x 12?”
  4. 向客服询问天气:“加利福尼亚的天气怎么样?”

运作原理

  1. MCP服务器:数学和天气服务器使用FastMCP公开工具
  2. 多服务器客户端:The MultiServerMCPClient 同时连接到多个MCP服务器
  3. 工具集成:所有服务器上的工具都可供LangGraph代理使用
  4. 重新代理:代理可以推理使用哪些工具以及如何组合它们的结果
  5. 语言模型Groq的Qwen模型提供了推理能力

依赖项

  • langchain-groq:与Groq的语言模型集成
  • langchain-mcp-adapters:LangChain的MCP适配器
  • langgraph:用于创建ReAct代理
  • mcp:模型上下文协议实现

运输类型

此演示展示了两种不同的MCP传输类型:

  • 标准输入输出:由数学服务器用于直接进程通信
  • 可流式传输http:由天气服务器用于基于HTTP的通信

输出示例

运行客户端时,您应该看到如下输出:

Math response: The result of (3 + 5) x 12 is 96.

Weather response: The weather in California is sunny.

扩展项目

您可以通过以下方式扩展此项目:

  • 向现有服务器添加更多工具
  • 为不同域创建新的MCP服务器
  • 实现真实天气API集成
  • 添加更复杂的数学运算
  • 创建自定义LangGraph工作流

许可证

该项目仅用于演示目的。请检查依赖项的许可证以供生产使用。