多智能体通信协议演示

展示MCP和A2A协议在多智能体通信中的协作,实现独立智能体间的任务分配与报告生成。

  • by rohit0221
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 rohit0221/mcp-a2a-acp

使用说明

MCP+A2A多代理POC

演示 主控程序 (模型上下文协议)和 A2A (代理到代理)协议与真正的多代理通信协同工作。

建筑

MCP Client → MCP Server → Researcher Agent (A2A) → Writer Agent (A2A)

组件

  1. MCP客户端 (demo_client.py)-使用MCP协议的LLM接口
  2. MCP服务器 (mcp_server/server.py)-暴露 call_agent 工具
  3. 研究员代理人 (端口8001)-研究主题的A2A代理
  4. 编剧代理 (端口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

运作原理

  1. 用户 输入一个主题(例如,“量子计算”)
  2. MCP客户端 电话 call_agent 工具
  3. MCP服务器 向发送A2A消息 研究员代理人
  4. 研究员代理人:
    • 呼吁OpenAI研究该主题
    • 将笔记发送到 编剧代理 通过A2A
  5. 编剧代理:
    • 通过A2A接收主题+笔记
    • 呼吁OpenAI起草降价报告
    • 通过A2A返回报告
  6. 研究员代理人 将报告转发到MCP服务器
  7. 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服务器