什么是 A2A 协议?它和 MCP 协议有什么区别?
- 标签:AI、大模型、Agent
🏛 业务架构师
一句话定位:A2A 管 Agent 与 Agent 的协作,MCP 管 Agent 与工具/数据的连接。
- MCP(Anthropic 发起):垂直集成协议。AI 应用作为客户端,连接工具和数据源(数据库、API、文件系统)——"让 Agent 长出手脚"。交互模式是主从式:模型调度工具执行。
- A2A(Google 发起,Linux 基金会治理):水平协作协议。对等的 Agent 主体之间互相发现、委派任务、交换成果——"让 Agent 找到同事分工"。交互模式是对等式:双方各有自主权,通过 Agent Card、Task、Artifact 协作。
三个关键差异:连接对象(工具 vs Agent)、关系模式(调用 vs 协商)、暴露程度(工具全透明可编排 vs Agent 内部不透明只交付成果)。
业务类比:MCP 是员工使用办公系统的统一接口标准;A2A 是部门间/企业间的协作流程标准。
落地取舍:企业内部 Agent 平台建设,MCP 优先且强制——工具治理、权限、审计都靠它标准化,投入产出最明确;A2A 按需引入——当出现跨团队、跨供应商的 Agent 协作场景(采购 Agent 对接供应商 Agent)再落地,目前生态仍在成熟期。两者在同一系统共存:Agent 内部用 MCP 调工具,对外用 A2A 谈协作,是 2026 年企业 Agent 架构的标准形态。
🏗 系统架构师
一句话定位:A2A 是 Agent 之间的协作协议,MCP 是 Agent 与工具/数据之间的连接协议——层级不同、互补而非竞争。
区别对比:
- 服务对象:A2A 服务"Agent ↔ Agent"(对等协作,双方都是有自主性的智能体);MCP 服务"Host ↔ 工具/资源 Server"(调用与被调用);
- 交互模型:A2A 是长任务状态机(submitted → working → input-required → completed)+ 流式 Artifact + 多轮交互;MCP 以请求-响应为主(tools/call 等原语),工具是被动的;
- 发现机制:A2A 用 Agent Card(能力、模态、认证的自描述)做对等发现;MCP 用 tools/list 做能力枚举;
- 抽象层级:MCP 管能力接入(一个 Agent 接 N 个工具);A2A 管任务委派(把整个任务交给另一个 Agent,"怎么做"是黑盒——Opaque Execution)。
协同示例:旅行规划系统——编排 Agent 通过 A2A 把"订机票"委托给订票 Agent(它有自己的策略与工具),订票 Agent 内部用 MCP 连航司 API、支付系统、日历。
架构类比:MCP 像服务内的驱动/SDK 层,A2A 像微服务间的协作协议。选型口诀:接工具用 MCP,找帮手用 A2A;跨团队、跨组织的 Agent 生态里两者缺一不可。
💻 全栈开发专家
A2A 和 MCP 的区别,我用工程视角从五个维度切:
| 维度 | A2A | MCP |
|---|---|---|
| 解决 | Agent ↔ Agent 协作 | Agent ↔ 工具/数据连接 |
| 类比 | 企业间 API 合约(B2B) | USB-C 外设接口 |
| 通信对象 | 两个自治 Agent(对等) | Host 应用与能力提供方 |
| 核心概念 | Agent Card、Task 生命周期、Artifact | Tools/Resources/Prompts 原语 |
| 任务模型 | 长任务状态机、异步回调、human-in-loop | 即时请求响应(工具调用) |
关键差异展开:
- 自治性:A2A 双方都是「黑盒 Agent」,各自有自己的 LLM、工具、记忆,只通过声明的能力协作;MCP 的 Server 是被动服务,没有自主性;
- 任务语义:A2A 有完整的任务生命周期(submitted→working→completed),支持多轮续传和长时间执行;MCP 一次 tools/call 就是一次函数执行;
- 发现机制:A2A 用 Agent Card 声明能力,语义级匹配;MCP 用 tools/list 列工具,协议级发现;
- 协作粒度:A2A 委托「任务」(帮我处理退款);MCP 调用「能力」(查一下订单表)。
组合使用(生产架构常态):客服 Agent 收到复合请求 → A2A 委托退款 Agent(水平协作)→ 退款 Agent 内部用 MCP 连数据库、ERP、通知服务(垂直连接)。一句话记忆:MCP 给 Agent 装手脚,A2A 让 Agent 交朋友。