多代理MCP演示

一个展示多代理系统如何通过MCP工具集进行库存查询和物流跟踪的演示项目。

  • by suryapa1
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 suryapa1/adk-simple-mcp-demo-with-armour

使用说明

简单的多代理MCP演示

建筑

Main Agent (customer_service)
├─→ Direct Tool: get_store_hours()
├─→ Direct Tool: get_return_policy()
├─→ AgentTool: inventory_agent
│   └─→ MCPToolset: inventory_mcp
│       ├─→ check_stock(product_id)
│       └─→ get_low_stock_products(threshold)
└─→ AgentTool: shipping_agent
    └─→ MCPToolset: shipping_mcp
        ├─→ track_shipment(tracking_number)
        └─→ get_active_shipments()

完整谱系示例

当你问: “PROD-001有现货吗?”

Main Agent (customer_service)
└─ execute_tool inventory_agent ✅
   └─ Agent: inventory_agent
      └─ execute_tool check_stock ✅
         └─ MCP Server: Inventory Service
            └─ Returns: {"product_id": "PROD-001", "stock": 45, "in_stock": true}

组件

1.MCP服务器(FastMCP)

  • 库存/服务器.py -2个工具(检查库存、获取库存产品)
  • 发货/服务器.py -2个工具(track_ships、get_active_ships)

2.子代理(使用MCP工具)

  • 库存代理 -使用库存MCP工具
  • 发货代理 -使用装运MCP工具

3.主代理(使用子代理作为工具)

  • 客户服务 -有2个直接工具+2个代理工具

快速开始

1.安装依赖项

pip install google-adk fastmcp

2.运行ADK Web UI

cd /home/ubuntu/adk-simple-mcp-demo
export GOOGLE_API_KEY=your-key
adk web --host 0.0.0.0 --port 8004 agents/main_agent

3.测试查询

直接工具(无子代理):

  • “你们的营业时间是什么时候?”
  • “你们的退货政策是什么?”

库存代理(MCP工具):

  • “PROD-001有现货吗?”
  • “检查PROD-002的库存”
  • “显示低库存产品”

货运代理(MCP工具):

  • “跟踪装运SHIP-001”
  • “SHIP-002在哪里?”
  • “显示活动发货”

预期血统

问:“PROD-001有现货吗?”

跟踪视图:

invocation
└─ agent_run [customer_service]
   ├─ call_llm
   └─ execute_tool inventory_agent
      └─ invocation
         └─ agent_run [inventory_agent]
            ├─ call_llm
            └─ execute_tool check_stock
               └─ MCP call to Inventory Service
            └─ call_llm
   └─ call_llm

要点

  1. ✅ 主代理不直接使用MCP工具
  2. ✅ 子代理在内部使用MCP工具
  3. ✅ 子代理被包装为AgentTool
  4. ✅ 主代理调用AgentTool(运行子代理)
  5. ✅ 在“跟踪”选项卡中可以看到完整的沿袭

样品数据

库存

  • PROD-001:笔记本电脑Pro 15(库存45台)
  • PROD-002:无线鼠标(库存120只)
  • PROD-003:USB-C线缆(库存200条)
  • PROD-004:显示器27英寸(库存15英寸-低!)

货运

  • SHIP-001:已交付
  • SHIP-002:在途(芝加哥)
  • SHIP-003:加工(西雅图)

故障排除

MCP服务器未启动

  • 检查是否安装了fastmcp
  • 验证MCPToolset server_args中的Python路径

未找到代理

  • 确保 初始化.py文件存在
  • 检查main_agent/agent.py中的导入路径

未显示工具

  • 验证MCP服务器是否正在运行
  • 检查MCPToolset配置
  • 查找ADK日志中的错误

后续步骤

  1. 测试所有查询类型
  2. 在“跟踪”选项卡中观察沿袭
  3. 添加更多MCP工具
  4. 部署到代理引擎