跳转至

A2A vs MCP 对比

两个协议解决不同层面的问题,互补而非竞争。

核心区别

维度 MCP (Model Context Protocol) A2A (Agent-to-Agent)
定义者 Anthropic Google / Linux Foundation
通信方向 Agent ↔ Tool / Resource Agent ↔ Agent
交互模式 结构化函数调用 对话式协作
状态管理 通常无状态 有状态,多轮
粒度 单次工具调用 复杂任务编排
典型用例 查 DB、调 API、用计算器 委托给账单 Agent、协调差旅
发现机制 无标准化 AgentCard + Well-Known URI
流式传输 无内置支持 SSE 原生支持
任务管理 完整状态机

关系:分层协作

两个协议工作在不同层,可以组合使用:

用户 → A2A → 商店经理 Agent → A2A → 配件供应商 Agent
         │                        │
         └── MCP → 订单数据库      └── MCP → 库存系统
  • A2A: Agent 之间的伙伴关系,互相委托任务
  • MCP: Agent 使用底层工具和数据的能力

什么时候用哪个

用 MCP 的场景

  • Agent 需要调用特定 API 或数据库
  • 获取结构化数据(天气、股票、文档)
  • 单次请求-响应模式足够
  • 不需要跨 Agent 协调

用 A2A 的场景

  • 需要 Agent 之间协商和协作
  • 任务需要多轮对话才能完成
  • 需要跨组织/系统委托任务
  • 任务有复杂状态(进行中、需要输入、需要授权)

两者都用的场景

  • 一个编排 Agent 通过 A2A 调度子 Agent
  • 每个 Agent 内部通过 MCP 访问各自工具

社区讨论

"为什么不直接用 MCP 做一切?"

学派 1: 把 Agent 当工具,通过 MCP 暴露,不需要 A2A 的复杂性。

学派 2: MCP 只用于工具/数据/上下文访问;Agent 间通信保持独立。

类比:就像 CPU↔GPU 通信和进程间通信是不同层面的事情。REST、WebSocket、GraphQL 共存,各有用途。

采纳现状(2026.05)

方面 MCP A2A
客户端分发 Claude Desktop、Cursor、大量 IDE 零主流客户端采用
公开 Agent/工具 大量 ~100+,一半是 demo
生态成熟度 较成熟 早期
核心优势 开发者立即可用 理论上更灵活

关键洞察

"未来模型会原生互相通信 — 不需要将输出向量压缩为 token 列表、跨越工具调用协议、重新 tokenize。当 tokenizer 和向量维度跨模型对齐时,连接将是直接的。"

相关页面