Information
A2A ⚡ MCP 代理
该项目展示了两种不同的代理通信方法:
主控程序 (MCP) - 一种基于中心服务器的方法,其中代理通过中央服务器进行通信
代理到代理 (A2A) - 一种去中心化的点对点方法,其中代理直接相互通信
安装
创建并激活虚拟环境:
bash
python -m venv venv
source venv/bin/activate # 在 Windows 上: venvScriptsactivate
安装依赖项:
bash
pip install -r requirements.txt
使用
MCP 服务器和代理
启动 MCP 服务器:
bash
python cli.py run-mcp-server
在单独的终端中,启动一个或多个 MCP 代理:
bash
python cli.py run-mcp-agent --agent-id agent1
python cli.py run-mcp-agent --agent-id agent2
MCP 服务器将跟踪所有连接的代理及其状态。您可以通过在浏览器中打开 http://localhost:5000 来查看状态。
A2A(代理到代理)网络
启动第一个 A2A 代理:
bash
python cli.py run-a2a-agent --agent-id a2a1 --port 5001
启动其他 A2A 代理,并将其连接到现有的代理:
bash
python cli.py run-a2a-agent --agent-id a2a2 --port 5002 --peer localhost:5001
python cli.py run-a2a-agent --agent-id a2a3 --port 5003 --peer localhost:5001 --peer localhost:5002
A2A 代理将通过其初始对等体自动发现其他代理。您可以在任何代理的终端中键入消息以广播给所有连接的代理。
架构
MCP(主控程序)
跟踪所有代理的集中式服务器
代理向服务器注册并通过心跳保持连接
服务器提供 Web 界面来监控代理状态
简单可靠但存在单点故障
A2A(代理到代理)
去中心化的点对点网络
代理直接相互连接
消息在网络中泛洪传播
更具弹性但需要更复杂的协调
无单点故障
项目结构
a2a_mcp/
├── agents/ # 代理实现
│ ├── mcp_agent.py # 基于 MCP 的代理
│ └── a2a_agent.py # 点对点代理
├── mcp/ # MCP 服务器实现
│ └── server.py # 基于 Flask 的 MCP 服务器
├── cli.py # 命令行接口
└── requirements.txt # Python 依赖项
贡献
欢迎提交问题和拉取请求以改进演示。