MCP + A2A 应用程序
这个项目是一个从零开始构建多智能体系统的综合性项目。它涵盖了使用模型上下文协议(MCP)和智能体到智能体(A2A)通信来创建一个健壮且可扩展的多智能体架构的基本原理。
项目概述
该项目展示了如何构建一个包含(某种特性或组件的)多智能体系统 host_agent 该系统通过发现并委托给其他代理来协调任务。其通信和发现机制是建立在MCP(可能是指某种中间件通信协议)和A2A(Agent-to-Agent,即代理间通信)协议之上的。
涵盖的核心概念
- 多智能体系统设计: 学习如何设计和构建一个具有清晰关注点分离的多智能体系统。
- 主机代理 一个负责任务编排、委派和协调的核心代理。
- A2A兼容代理: 构建能够使用A2A协议相互通信和交互的代理。
- MCP 服务器: 为代理和工具发现实现MCP服务器。
- 可流式传输的HTTP服务器: 一个支持实时通信的可流式传输HTTP服务器。 - Stdio 服务器: 一个用于简单、直接通信的标准I/O服务器。
- MCP和A2A连接器: 用于在代理和服务器之间建立通信的连接器。
- 发现机制:
- MCP服务器和工具发现: 动态发现可用的MCP服务器及其工具。 - A2A代理发现: 发现并注册与A2A兼容的代理。
- 任务委派: 将主机代理的任务委托给专门的代理。
项目结构
/Users/theailanguage/mcp_a2a_master/
├───.gitignore
├───main.py
├───pyproject.toml
├───README.md
├───agents/
│ ├───host_agent/
│ └───website_builder_simple/
├───app/
│ └───cmd/
├───mcp/
│ └───servers/
└───utilities/
├───a2a/
├───common/
└───mcp/文件夹说明
- 代理/包含系统中的不同代理。
- 主机代理/主要的协调器代理。 - 网站构建器简易版/一个能够构建网站的简单代理。
- 应用程序/命令行界面/一个用于与系统交互的命令行应用程序。
- mcp/servers/ 翻译为中文是:“mcp/服务器/” 或者更自然的表达可以是“mcp 服务器”包含MCP服务器的实现。
- 公用设施/包含用于A2A(应用到应用)和MCP(可能是指某种通信协议或中间件平台,具体需根据上下文确定,此处暂译为“通信平台”)通信及发现的实用工具。
入门指南/开始使用
先决条件
- Python 3.11及以上版本
uv
安装
- 克隆仓库:
git clone https://github.com/your-username/mcp-a2a-master.git
cd mcp-a2a-master- 创建并激活虚拟环境:
- macOS/Linux:
python3 -m venv .venv
source .venv/bin/activate- Windows:
python -m venv .venv
.venv\Scripts\activate- 安装依赖项:
uv pip install -r requirements.txt如何跑步
- 可流式传输的HTTP服务器:
uv run python3 -m mcp.servers.streamable_http_server- 网站构建器简易代理
uv run python3 -m agents.website_builder_simple- 主机代理:
uv run python3 -m agents.host_agent- CMD 应用:
uv run python3 -m app.cmd.cmd它是如何工作的
该 main.py 脚本初始化了多智能体系统。该 host_agent 启动并使用 mcp_discovery 并且 a2a_discovery 用于查找可用服务器和代理的实用工具。一旦发现 host_agent 可以将任务委托给其他代理,例如 website_builder_simple 代理,使用A2A通信协议。
这个(或“该”) mcp 目录包含服务器实现,以及 utilities 该目录提供了发现和连接所需的工具。
做出贡献
欢迎贡献!请随时提交拉取请求或打开一个问题。
