主题
高频面试题
A2A 协议与 MCP 协议的关系是怎样的?
这道题容易和第 12、15 题重叠;这里重点讲“关系模型”:上下两层怎么拼、什么时候互补、什么时候不要硬套协议。
面试官角度分析,想考什么
A2A 和 MCP 是什么关系?
考互补:A2A 管 Agent 协作,MCP 管工具接入。为什么不能用 MCP 代替 A2A?
考对象不同:MCP Tool 没有任务生命周期和 opaque Agent 协作语义。怎么同时用,什么时候都不需要?
考每个 Agent 用 MCP 接工具,Agent 间用 A2A;简单系统用函数或 Workflow 即可。
可直接抄走的 30 秒参考答案
text
A2A 和 MCP 不是替代关系,而是互补关系。MCP 解决的是一个 Agent 或 LLM Host 怎么连接工具、资源和 prompt,比如数据库、文件系统、SaaS API;A2A 解决的是一个 Agent 怎么发现、委托和协作另一个 Agent。真实多 Agent 系统里通常是 Agent 之间通过 A2A 传 Task、Message 和 Artifact,每个 Agent 内部再通过 MCP 调自己的工具。简单说,MCP 是纵向工具接入层,A2A 是横向 Agent 协作层。面试回答详解,知其所以然
这道题的核心是分层。最容易翻车的回答是“它们都是 Agent 协议,所以差不多”。更准确的说法是:A2A 是横向协作,MCP 是纵向工具接入。
1. 两者解决的问题不同
- MCP:解决 LLM 应用或 Agent 如何标准化连接工具、数据源和 prompt。典型对象是 Host、Client、Server、Tool、Resource、Prompt。
- A2A:解决独立 Agent 之间如何发现能力、委托任务、交换消息、跟踪状态和交付 Artifact。典型对象是 Agent Card、Message、Part、Task、Artifact。
可以这样记:
text
MCP:Agent / Host -> Tool / Data / Prompt
A2A:Agent -> Agent2. 两者在架构里通常上下叠加
一个常见组合是:
text
Coordinator Agent
-> A2A: Research Agent
-> MCP: Search / Knowledge Base / Browser
-> A2A: Finance Agent
-> MCP: ERP / Database / Approval System
-> A2A: Writer Agent
-> MCP: Docs / File Store / Template ServiceCoordinator 用 A2A 选择和委托专业 Agent。每个专业 Agent 在自己的边界内用 MCP 接工具。这样每个 Agent 的职责和权限都更小,工具选择更聚焦,审计也更清晰。
3. 为什么 MCP 不能完全替代 A2A
你可以把一个 Agent 包成 MCP Tool,但它通常只适合简单场景。复杂协作会遇到问题:
- MCP Tool 更像一次函数调用,A2A Task 是长生命周期任务。
- MCP 暴露工具级 schema,A2A 暴露 Agent 能力和技能。
- MCP 不天然表达 Agent Card、任务状态、多轮澄清、artifact 增量和 push notification。
- 把 Agent 包成工具会把远端自主执行过程压成一个黑盒长调用,难以取消、追踪和协商。
- A2A 明确强调远端 Agent opaque,调用方不应该依赖它内部工具列表。
所以,MCP 可以作为远端 Agent 内部的工具层,但不适合作为跨 Agent 协作的全部语义。
4. 为什么 A2A 也不能替代 MCP
A2A 把任务交给另一个 Agent,但远端 Agent 仍然需要访问外部系统。比如 Research Agent 要查网页和知识库,CRM Agent 要访问客户系统,Code Agent 要读仓库和跑测试。这些工具和数据源的接入仍然适合 MCP 或类似工具协议。
- A2A 不负责把数据库表、文件系统、SaaS API 变成工具 schema。
- A2A 不负责 Host 与工具 Server 的能力发现和 tools/call。
- A2A 不替代 function calling 或模型工具选择。
因此官方也把 A2A 与 MCP 描述为高度互补:A2A 处理 Agent 协作,MCP 处理工具和资源接入。
5. 选型判断
- 只用 MCP:单个 Agent 要接多个工具或数据源。
- 只用 A2A:多个外部 Agent 协作,但每个 Agent 内部工具接入由自己系统解决。
- A2A + MCP:多 Agent 系统中,每个 Agent 内部有标准工具接入,同时 Agent 之间也要互操作。
- 都不用或少用:同一个进程、同一个团队、固定 workflow、简单函数拆分,用内部调用更简单。
6. 安全关系
组合使用时有两条安全链:
- A2A 安全链:Agent 身份、Agent Card 来源、任务授权、租户隔离、跨 Agent 消息审计。
- MCP 安全链:MCP Server 来源、工具权限、资源读取、参数校验、工具结果注入防护。
真正成熟的架构不会让一个 Agent 拿万能 token,也不会让所有 Agent 共享所有 MCP Server。
面试官追问3个问题
追问一:把 Agent 包成 MCP Tool 有哪些适用场景?
- 考察点:边界场景判断。
- 回答方向:一次性、短耗时、输入输出稳定、无需多轮状态的 Agent 服务可以包成工具。长任务、多轮协作、需要状态和 artifact 的场景更适合 A2A。
追问二:A2A + MCP 架构下权限怎么划分?
- 考察点:最小权限和职责边界。
- 回答方向:A2A 层按任务和 Agent 身份授权,MCP 层按工具和资源授权。每个专业 Agent 只挂自己职责需要的 MCP Server,不能共享万能凭证。
追问三:A2A 和 MCP 都用了 JSON-RPC,是否说明它们同层?
- 考察点:传输机制和协议语义的区别。
- 回答方向:不是。同样的传输风格不代表同一抽象层。MCP 的语义是工具和资源,A2A 的语义是 Agent 任务协作。
扩展知识
和 Function Calling 的三层关系
text
A2A:Agent A 委托 Agent B
MCP:Agent B 连接工具和数据源
Function Calling:Agent B 内部模型表达工具调用意图这三层经常同时存在,但不要混成一种协议。
A2A Agent 可以暴露为 MCP Resource 吗
官方讨论过把 A2A Agent 作为 MCP Resource 表示的方式,用于让 MCP Host 发现可用 Agent。但这不是说 MCP 替代 A2A,而是让两层协议在发现和编排上更好衔接。