Skip to content

高频面试题

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

这道题容易和第 12、15 题重叠;这里重点讲“关系模型”:上下两层怎么拼、什么时候互补、什么时候不要硬套协议。

适合阶段:Agent 协议 / 架构选型面核心能力:Protocol Layering · A2A · MCP · Tool Boundary · Agent Boundary

面试官角度分析,想考什么

  • 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 -> Agent

2. 两者在架构里通常上下叠加

一个常见组合是:

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 Service

Coordinator 用 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,而是让两层协议在发现和编排上更好衔接。

基于 MIT 协议开源