MCP+A2A多代理POC
演示 主控程序 (模型上下文协议)和 A2A (代理到代理)协议与真正的多代理通信协同工作。
建筑
MCP Client → MCP Server → Researcher Agent (A2A) → Writer Agent (A2A)组件
- MCP客户端 (
demo_client.py)-使用MCP协议的LLM接口 - MCP服务器 (
mcp_server/server.py)-暴露call_agent工具 - 研究员代理人 (端口8001)-研究主题的A2A代理
- 编剧代理 (端口8002)-起草报告的A2A代理
真正的A2A沟通
- 研究人员和作家 独立A2A服务器
- 每个人都有自己的 代理卡 在
/.well-known/agent-card.json - 研究人员通过以下方式联系作家 A2A客户端 (HTTP://JSON-RPC)
- 没有共享的Python类 -仅A2A协议消息
设置
# Install dependencies
uv sync
# Create .env file
cp .env.example .env
# Add your OPENAI_API_KEY跑步
你需要 3个终端:
终端1:编剧代理
.venv\Scripts\python backend/writer_agent.py开始 http://localhost:8002
2号航站楼:研究员代理
.venv\Scripts\python backend/researcher_agent.py开始 http://localhost:8001
终端3:MCP客户端
.venv\Scripts\python demo_client.py运作原理
- 用户 输入一个主题(例如,“量子计算”)
- MCP客户端 电话
call_agent工具 - MCP服务器 向发送A2A消息 研究员代理人
- 研究员代理人:
- 呼吁OpenAI研究该主题 - 将笔记发送到 编剧代理 通过A2A
- 编剧代理:
- 通过A2A接收主题+笔记 - 呼吁OpenAI起草降价报告 - 通过A2A返回报告
- 研究员代理人 将报告转发到MCP服务器
- MCP客户端 显示最终报告
验证
检查代理卡
# Writer Agent
curl http://localhost:8002/.well-known/agent-card.json
# Researcher Agent
curl http://localhost:8001/.well-known/agent-card.json查看日志
您将在日志中看到A2A通信:
[Researcher] Calling Writer Agent via A2A...[Writer] Received topic: '...'[Writer] Drafting report...[Researcher] Received report from Writer
主要特点
✅ 协议遵从:使用官方 a2a-sdk 和 mcp 软件开发工具包 ✅ 真正的多代理:两台独立的A2A服务器 ✅ A2A通信:研究员→ 通过HTTP/JSON-RPC编写 ✅ 代理卡:适当的A2A发现机制 ✅ 会议准备就绪:用于演示的干净架构
依赖项
a2a-sdk[http-server]-A2A协议实现mcp-MCP协议实现openai-LLM集成httpx-A2A调用的HTTP客户端uvicorn-ASGI服务器
