智能体通信协议MCP
智能体通信协议解决了工具集成、能力扩展和多智能体协作的核心问题MCP、A2A、ANP 三种协议分别针对不同场景,互为补充HelloAgents 框架通过三层架构实现了协议的标准化集成MCP 协议作为应用最成熟的协议,提供了灵活的工具访问能力和多种传输方式实际应用中应根据具体需求选择合适的协议,并利用框架提供的工具封装简化开发通过掌握这些通信协议,能够构建更灵活、可扩展、协同工作的智能体系统,突破单
·
智能体通信协议学习笔记
智能体通信协议
├── 核心问题
│ ├── 智能体与外部世界高效交互
│ └── 多个智能体相互协作
├── 三种核心协议
│ ├── MCP(Model Context Protocol)
│ │ ├── 定位:智能体与工具的标准化通信
│ │ ├── 设计理念:标准化智能体与外部工具/资源的通信方式,基于“上下文共享”
│ │ ├── 架构:Host(宿主层)、Client(客户端层)、Servers(服务器层)
│ │ ├── 核心能力:Tools(主动执行操作)、Resources(被动提供数据)、Prompts(提供模板)
│ │ ├── 传输方式:Memory Transport(测试)、Stdio Transport(本地开发)、HTTP/SSE/StreamableHTTP(远程/生产)
│ │ └── 应用:通过MCPTool集成到智能体,自动展开为独立工具供调用
│ ├── A2A(Agent-to-Agent Protocol)
│ │ ├── 定位:智能体间的点对点协作
│ │ ├── 设计理念:实现智能体对等通信,无中心化协调器
│ │ ├── 特点:每个智能体既是服务提供者也是消费者,支持主动请求与响应
│ │ └── 应用:通过A2ATool实现智能体间直接对话与协作
│ └── ANP(Agent Network Protocol)
│ ├── 定位:构建大规模智能体网络的基础设施
│ ├── 设计理念:去中心化服务发现,支持动态发现和连接智能体
│ ├── 核心功能:服务注册、服务发现、路由机制
│ └── 应用:通过ANPTool实现大规模智能体网络的管理与通信
├── 协议选择依据
│ ├── 访问外部服务(文件、数据库等)→ 选MCP
│ ├── 多个智能体协作 → 选A2A
│ └── 构建大规模智能体生态 → 选ANP
└── HelloAgents框架实现
├── 三层架构
│ ├── 协议实现层:MCP(基于FastMCP)、A2A(基于a2a-sdk)、ANP(自研轻量实现)
│ ├── 工具封装层:MCPTool、A2ATool、ANPTool(均继承自BaseTool)
│ └── 智能体集成层:通过Tool System与智能体(ReActAgent等)集成
└── 核心优势:标准化接口、互操作性、动态发现、可扩展性
一、为什么需要智能体通信协议
在构建复杂 AI 系统时,单体智能体面临三大限制:
- 工具集成困境:访问新外部服务需编写专门 Tool 类,兼容性差
- 能力扩展瓶颈:能力局限于预定义工具集,无法动态发现新服务
- 协作缺失:多智能体协作需手动编排,效率低下
通信协议的核心价值在于提供标准化接口,实现:
- 标准化接口:统一访问各种外部服务的方式
- 互操作性:不同开发者的工具可无缝集成
- 动态发现:智能体运行时可发现新服务和能力
- 可扩展性:轻松添加新功能模块
二、三种核心通信协议对比
1. MCP(Model Context Protocol)
-
定位:智能体与工具的标准化通信
-
设计理念:标准化智能体与外部工具 / 资源的通信方式,基于 “上下文共享”
-
核心特点
:
- 不仅是 RPC 协议,还支持丰富的上下文信息共享
- 采用 Host、Client、Servers 三层架构
- 提供三大核心能力:Tools(主动执行操作)、Resources(被动提供数据)、Prompts(提供模板)
-
与 Function Calling 的差异
:
- Function Calling 是模型的能力,解决 “如何调用”
- MCP 是基础设施协议,解决 “如何连接”,实现跨模型兼容
2. A2A(Agent-to-Agent Protocol)
-
定位:智能体间的点对点协作
-
设计理念:实现智能体对等通信,无中心化协调器
-
核心特点
:
- 每个智能体既是服务提供者也是消费者
- 支持主动请求与响应
- 避免中心化瓶颈,网络更灵活可扩展
3. ANP(Agent Network Protocol)
-
定位:构建大规模智能体网络的基础设施
-
设计理念:去中心化服务发现,支持动态发现和连接智能体
-
核心特点
:
- 提供服务注册、发现和路由机制
- 适用于成百上千智能体组成的大规模网络
- 无需预先配置所有连接关系
协议选择依据
- 访问外部服务(文件、数据库等)→ 选 MCP
- 多个智能体协作 → 选 A2A
- 构建大规模智能体生态 → 选 ANP
三、HelloAgents 框架通信协议架构
采用三层设计架构:
- 协议实现层:三种协议的具体实现
- MCP:基于 FastMCP 库
- A2A:基于 Google 官方 a2a-sdk
- ANP:自研轻量级实现
- 工具封装层:将协议封装为统一 Tool 接口
- MCPTool、A2ATool、ANPTool 均继承自 BaseTool
- 提供一致的
run()方法,简化调用
- 智能体集成层:智能体与协议的集成点
- 所有智能体通过 Tool System 使用协议工具
- 无需关心底层协议细节
四、MCP 协议实战
1. MCP 客户端使用
import asyncio
from hello_agents.protocols import MCPClient
async def connect_to_server():
# 连接到社区提供的文件系统服务器
client = MCPClient([
"npx", "-y",
"@modelcontextprotocol/server-filesystem",
"." # 指定根目录
])
async with client:
# 发现可用工具
tools = await client.list_tools()
print(f"可用工具: {[t['name'] for t in tools]}")
# 调用工具
result = await client.call_tool("read_file", {"path": "README.md"})
print(f"文件内容:{result}")
asyncio.run(connect_to_server())
2. MCP 传输方式
MCP 支持多种传输方式,适应不同场景:
- Memory Transport:用于测试,无需实际服务器
- Stdio Transport:本地开发,通过标准输入输出通信
- HTTP Transport:生产环境,远程服务通信
- SSE Transport:实时通信、流式处理
- StreamableHTTP Transport:双向流式通信
# 不同传输方式的使用示例
from hello_agents.tools import MCPTool
# 1. 内存传输(测试用)
mcp_tool = MCPTool()
# 2. 标准输入输出传输(本地开发)
mcp_tool = MCPTool(server_command=["python", "my_mcp_server.py"])
# 3. 社区服务器(npx方式)
mcp_tool = MCPTool(server_command=["npx", "-y", "@modelcontextprotocol/server-filesystem", "."])
3. 在智能体中使用 MCP 工具
MCPTool 具有自动展开特性,会将服务器提供的工具自动展开为独立工具:
from hello_agents import SimpleAgent, HelloAgentsLLM
from hello_agents.tools import MCPTool
agent = SimpleAgent(name="助手", llm=HelloAgentsLLM())
# 添加MCP工具(自动展开为多个独立工具)
mcp_tool = MCPTool(name="calculator")
agent.add_tool(mcp_tool)
# 智能体可直接使用展开后的工具
response = agent.run("计算 25 乘以 16")
print(response) # 输出:25 乘以 16 的结果是 400
五、总结
- 智能体通信协议解决了工具集成、能力扩展和多智能体协作的核心问题
- MCP、A2A、ANP 三种协议分别针对不同场景,互为补充
- HelloAgents 框架通过三层架构实现了协议的标准化集成
- MCP 协议作为应用最成熟的协议,提供了灵活的工具访问能力和多种传输方式
- 实际应用中应根据具体需求选择合适的协议,并利用框架提供的工具封装简化开发
通过掌握这些通信协议,能够构建更灵活、可扩展、协同工作的智能体系统,突破单体智能体的能力边界。
学习途径:https://github.com/datawhalechina/hello-agents/tree/main/docs
更多推荐



所有评论(0)