Skip to content

A2A 协议与 MCP 协议的关系是怎样的? ​

  • 标签:大模型、AI、A2A、MCP

🏛 业务架构师 ​

一句话定位:MCP 管"Agent 怎么用工具",A2A 管"Agent 怎么找 Agent 协作",两者是互补而非竞争。

  • MCP(Model Context Protocol):解决 Agent 与工具/数据源的连接。像 USB-C 一样,工具方实现一次 MCP Server(查库存、下订单),所有支持 MCP 的 Agent 都能即插即用,省去每个应用重复开发工具集成。
  • A2A(Agent2Agent):解决对等 Agent 之间的协作。各自是独立主体,有自己的模型、记忆和工具,通过 Agent Card 互相发现、以任务和成果物协作,不暴露内部细节。

类比业务:MCP 是"员工与办公软件的接口标准",A2A 是"部门间甚至企业间的协作流程标准"。一个智能采购 Agent 内部用 MCP 调 ERP 和合同系统,对外用 A2A 与供应商的报价 Agent 谈判——两者在同一系统中天然共存。

架构建议:企业做 Agent 规划时,我建议把 MCP 作为工具治理的强制标准(避免集成碎片化),A2A 则按需引入——只有真正出现跨团队、跨供应商的 Agent 协作场景时才落地,否则就是为协议而协议。

🏗 系统架构师 ​

一句话定位:MCP 是"纵向"连接协议(Agent ↔ 工具/数据),A2A 是"横向"协作协议(Agent ↔ Agent),两者互补,生产架构里通常同时存在。

分工对比:

  • 解决的问题不同:MCP 解决工具接入的 M×N 问题——M 个应用 × N 个工具,没有统一协议要写 M×N 个适配器,有了 MCP 写 M+N 个;A2A 解决 Agent 互操作——不同框架、不同厂商的 Agent 互相发现和委托任务;
  • 交互模型不同:MCP 是 Client-Server,工具是被动的、同步为主;A2A 是对等协作,Agent 是主动的,支持长任务状态机、多轮 input-required、流式 Artifact;
  • 抽象层级不同:MCP 暴露的是"能力"(tools/resources/prompts),A2A 暴露的是"服务"(Agent Card 声明的技能)。

协同架构举例:客服场景,我的编排 Agent 通过 A2A 把退款审核委托给财务 Agent(长任务,异步等结果),财务 Agent 内部用 MCP 调 ERP 工具、查数据库。类比微服务:A2A 像服务间的 RPC/事件协作,MCP 像服务内集成的 SDK 和驱动层。选型时不用二选一,按"要接的是工具还是自主 Agent"来决定用哪个。

💻 全栈开发专家 ​

一句话定位:MCP 管 Agent 与工具/数据的垂直连接,A2A 管 Agent 与 Agent 的水平协作,互补而不是竞争。

  • 层次不同:MCP(Model Context Protocol)解决「一个 Agent 怎么标准化地接外部工具、资源」——文件系统、数据库、GitHub 都有现成 MCP Server,一次封装处处复用。A2A 解决「多个独立 Agent 怎么互相发现、委托任务」——每个 Agent 是自治的黑盒,通过 Agent Card 声明能力。
  • 类比:MCP 像 USB-C(设备接外设),A2A 像企业间的 API 合约(系统对系统)。
  • 通信对象:MCP 是 Host 内的 Client ↔ Server(进程内 stdio 或 HTTP);A2A 是跨组织的 Agent ↔ Agent(HTTP/JSON-RPC/SSE)。

实际架构里我这么组合:订单 Agent 收到「帮我处理退款并通知物流」→ 通过 A2A 委托退款 Agent 和物流 Agent(它们各自是独立服务)→ 每个内部再通过 MCP 连自己的数据库、ERP 工具。选型经验:给 Agent 加「手」用 MCP,让 Agent 之间「对话」用 A2A;别用 A2A 去包工具(粒度错位),也别用 MCP 去做多 Agent 编排(它没有任务生命周期语义)。