简单的多代理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 fastmcp2.运行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_agent3.测试查询
直接工具(无子代理):
- “你们的营业时间是什么时候?”
- “你们的退货政策是什么?”
库存代理(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要点
- ✅ 主代理不直接使用MCP工具
- ✅ 子代理在内部使用MCP工具
- ✅ 子代理被包装为AgentTool
- ✅ 主代理调用AgentTool(运行子代理)
- ✅ 在“跟踪”选项卡中可以看到完整的沿袭
样品数据
库存
- 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日志中的错误
后续步骤
- 测试所有查询类型
- 在“跟踪”选项卡中观察沿袭
- 添加更多MCP工具
- 部署到代理引擎
