返回市场
语言图谱-MCP

语言图谱-MCP

作者:lumenghe2 星标更新:2025-05-26

项目介绍

LangGraph 多MCP数学代理

这是一个使用多个模型上下文协议(MCP)服务器进行数学运算的LangGraph演示项目。该项目展示了如何构建一个智能代理,该代理可以无缝地使用不同的MCP服务器执行各种数学计算。

🚀 特性

  • 多MCP集成:使用多个MCP服务器进行不同的数学运算
  • 对话上下文:在多次查询中维护对话历史
  • 智能工具选择:根据用户查询自动选择合适的工具
  • 错误处理:具有强大错误处理能力并进行适当验证
  • 可扩展架构:易于添加新的MCP服务器和数学运算

🏗️ 架构

系统由以下部分组成:

  1. 主代理client.py):基于LangGraph的代理,协调多个MCP服务器
  2. 基础数学服务器elementary_math_server.py):基本算术运算
  3. 高级数学服务器exponentiation_math_server.py):幂运算和高级数学
┌─────────────────┐
│   LangGraph     │
│   数学代理      │
└─────────┬───────┘
          │
          ├── 基础数学MCP服务器
          │   ├── 加法
          │   ├── 减法
          │   ├── 乘法
          │   └── 除法
          │
          └── 高级数学MCP服务器
              ├── 幂/指数
              ├── 平方
              ├── 立方
              └── 平方根

📋 先决条件

  • Python 3.8+
  • Google Cloud凭证(用于Vertex AI Gemini模型)
  • 运行MCP服务器的能力

🛠️ 安装

  1. 克隆仓库

    git clone <你的仓库地址>
    cd langgraph-multi-mcp-math
    
  2. 安装依赖项

    pip install -r requirements.txt
    
  3. 设置Google Cloud凭证

    # 选项1:使用gcloud CLI
    gcloud auth application-default login
    
    # 选项2:使用服务账户密钥
    export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/service-account-key.json"
    

🚀 使用方法

基本用法

运行主要演示:

python client.py

这将启动数学代理,并展示跨多个查询的各种数学运算。

示例交互

演示包括几个示例查询:

  1. 基本算术"3 + 5 的结果乘以 12 是多少?"
  2. 上下文后续"现在我想得到那个结果的平方"
  3. 高级运算"2的8次方加15等于多少?"

样例输出

🧮 LangGraph 多MCP数学代理演示
========================================

🔍 查询1:3 + 5 的结果乘以 12 是多少?
----------------------------------------
基础数学:3 + 5 = 8
基础数学:8 × 12 = 96
AI:(3 + 5) × 12 的结果是 96。

🔍 查询2:现在我想得到那个结果的平方
----------------------------------------
高级数学:96² = 9216
AI:96 的平方是 9,216。

🔍 查询3:2的8次方加15等于多少?
----------------------------------------
高级数学:2^8 = 256
基础数学:256 + 15 = 271
AI:2^8 + 15 等于 271。

📁 项目结构

├── client.py                           # 主LangGraph代理
├── elementary_math_server.py           # 基础数学运算MCP服务器
├── exponentiation_math_server.py       # 高级数学运算MCP服务器
├── requirements.txt                    # Python依赖项
└── README.md                          # 本文档

🔧 可用操作

基础数学服务器

  • 加法add(a, b) - 将两个整数相加
  • 减法subtract(a, b) - 将两个整数相减
  • 乘法multiply(a, b) - 将两个整数相乘
  • 除法divide(a, b) - 执行带商和余数的除法

高级数学服务器

  • power(base, exponent) - 计算base^exponent
  • 平方square(number) - 计算number²
  • 立方cube(number) - 计算number³
  • 平方根square_root(number) - 计算√number

🎯 关键组件

MathAgent 类

核心的MathAgent类提供了:

  • 初始化:设置MCP客户端和工具
  • 图构建:创建LangGraph工作流
  • 查询处理:处理带有上下文的单个查询
  • 消息管理:格式化和显示对话历史

LangGraph 工作流

代理使用简单但有效的工作流:

  1. 模型调用:LLM分析查询并决定工具使用
  2. 工具执行:如果需要工具,则通过MCP服务器执行它们
  3. 响应生成:基于工具结果生成最终响应
  4. 继续逻辑:确定是否需要更多的工具调用

🔄 扩展系统

添加新的MCP服务器

  1. 创建一个新的MCP服务器

    from mcp.server.fastmcp import FastMCP
    
    mcp = FastMCP("您的服务器名称")
    
    @mcp.tool()
    def your_function(param: int) -> int:
        """您的函数描述"""
        return param * 2
    
    if __name__ == "__main__":
        mcp.run(transport="stdio")
    
  2. 添加到客户端配置

    server_config = {
        "your_server": {
            "command": "python",
            "args": ["your_server.py"],
            "transport": "stdio",
        },
        # ... 现有服务器
    }
    

添加新操作

只需向适当的服务器文件添加新的@mcp.tool()装饰函数。

🐛 故障排除

常见问题

  1. Google Cloud认证

    # 验证认证
    gcloud auth list
    gcloud config list
    
  2. MCP服务器连接问题

    • 确保Python脚本可执行
    • 检查MCP服务器是否无误启动
    • 验证stdio传输是否正常工作
  3. 未找到工具错误

    • 检查所有MCP服务器是否正确配置
    • 验证服务器和客户端之间的工具名称匹配

调试模式

通过修改日志级别启用详细日志记录:

logging.basicConfig(level=logging.DEBUG)

📊 性能考虑

  • 工具缓存:MCP工具在初始化期间加载一次
  • 消息上下文:对话历史随着每次查询增长
  • 并发操作:MCP服务器异步处理请求

🤝 贡献

  1. 分叉仓库
  2. 创建功能分支
  3. 添加改进
  4. 彻底测试
  5. 提交拉取请求

📝 许可

此项目采用MIT许可 - 查看LICENSE文件了解详情。

🙏 致谢

📞 支持

对于问题或问题:

  1. 查看上面的故障排除部分
  2. 查阅LangGraph文档
  3. 查阅MCP文档
  4. 在此仓库中打开一个问题

愉快编码! 🧮✨