Skip to content

高频面试题

MCP 协议和 A2A 协议如何协同工作?请设计一个同时使用两者的多 Agent 系统架构

面试官问 MCP + A2A,不是想听两个协议名,而是在看你能否把“Agent 调工具”和“Agent 互相协作”拆成两层,并设计出可控、可观测、可扩展的系统。

适合阶段:Agent 架构 / 多 Agent 系统设计面核心能力:协议分层 · Agent 通信 · 工具生态 · 安全边界

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

  • MCP 和 A2A 分别解决什么问题?
    考分层:MCP 接工具和数据,A2A 做 Agent 间任务协作,两者互补不替代。

  • 一个系统里哪些走 MCP,哪些走 A2A?
    考架构:Agent 内部用 MCP 调自己的工具,Agent 之间用 A2A 发现、委派和交付。

  • 接上协议后安全边界和适用边界在哪?
    考取舍:身份、最小权限、审计;简单场景用函数或 Workflow 往往更稳。

可直接抄走的 30 秒参考答案

text
MCP 和 A2A 是互补关系。MCP 解决的是 Agent 怎么标准化接工具、数据源和 prompt,比如一个 Research Agent 通过 MCP 调搜索和知识库;A2A 解决的是 Agent 之间怎么发现能力、委派任务、交换状态和返回 artifact。设计时我会让 Coordinator Agent 通过 A2A 读取各 Agent 的能力卡片并拆任务,再让每个专业 Agent 在自己的权限边界内通过 MCP 调工具。这样既能复用工具生态,又能把多 Agent 的职责、上下文和权限隔离开。生产上要加身份认证、最小权限、任务级审计、危险动作人工确认和完整 trace。

面试回答详解,知其所以然

这道题的核心不是把 MCP 和 A2A 都接上,而是说清楚它们处在不同通信面:MCP 是 Agent 到工具/数据源的南北向连接,A2A 是 Agent 到 Agent 的东西向协作

1. 先把协议边界讲清楚

MCP(Model Context Protocol)关注的是:一个 LLM 应用或 Agent 如何以标准方式接入外部工具、资源和 prompt。典型角色是 Host、Client、Server。Host 通过 MCP Client 连接一个或多个 MCP Server,获取 tools、resources、prompts,再把可调用工具暴露给模型侧的工具调用链路。

A2A(Agent2Agent Protocol)关注的是:不同 Agent 如何发现彼此能力、发起任务、交换消息、跟踪任务状态和交付 artifacts。典型对象包括 Agent Card、Message、Task、Artifact。它假设每个 Agent 都可能由不同团队、不同框架、不同模型实现,所以需要一个跨 Agent 的互操作层。

可以这样记:

text
MCP:Agent -> Tool / Resource / Prompt
A2A:Agent -> Agent
Function Calling:LLM App -> LLM API

三者不是互斥关系。真实链路经常是:A2A 把任务交给某个 Agent,Agent 内部再用 Function Calling 决定调用哪个工具,执行层通过 MCP 去访问外部系统。

2. 一个同时使用两者的参考架构

以“企业研究与执行助手”为例:用户提出一个复杂目标,比如“调研某个客户的近况、评估风险、生成拜访纪要,并在 CRM 里创建后续任务”。

text
用户
  -> Coordinator Agent
      -> A2A: Research Agent
          -> MCP: Web Search / 文档库 / 向量库
      -> A2A: CRM Agent
          -> MCP: CRM / 工单 / 权限系统
      -> A2A: Compliance Agent
          -> MCP: 策略库 / DLP / 审计日志
      -> A2A: Writer Agent
          -> MCP: 文档模板 / 文件系统
  -> 最终报告 + 可审批动作

这里的分层是:

  • Coordinator Agent:接收用户目标,拆任务,选择要协作的 Agent,维护全局任务状态。
  • Research Agent:通过 A2A 接收“调研客户近况”的任务,通过 MCP 调搜索、知识库和内部文档工具。
  • CRM Agent:通过 A2A 接收“查询客户记录 / 创建跟进任务”的任务,通过 MCP 访问 CRM Server。
  • Compliance Agent:通过 A2A 被要求审查输出和动作,通过 MCP 访问策略库、DLP 工具和审计系统。
  • Writer Agent:通过 A2A 接收结构化材料,通过 MCP 读取模板并生成文档 artifact。

3. 关键执行流程

一个典型任务可以拆成六步:

text
① Agent 发现:Coordinator 读取各 Agent 的 Agent Card
② 任务规划:Coordinator 拆分子任务,确定并行/串行依赖
③ A2A 委派:向 Research / CRM / Compliance Agent 创建 Task
④ MCP 执行:每个 Agent 在自己的边界内调用 MCP Server
⑤ A2A 汇总:各 Agent 返回 Task 状态、Message 和 Artifact
⑥ 审批与落库:高风险动作经人工确认后由对应 Agent 执行

Agent Card 很关键。它不只是“自我介绍”,而是能力契约:这个 Agent 能做什么、输入输出格式是什么、支持什么认证、是否支持流式状态、能交付哪些 artifact。Coordinator 不应该靠 prompt 猜,而应该根据 Agent Card 和策略配置做路由。

MCP Server 则是工具契约。比如 Research Agent 只挂搜索和知识库 MCP Server,CRM Agent 只挂 CRM MCP Server,Compliance Agent 只挂策略和 DLP MCP Server。这样每个 Agent 的工具面更小,权限也更容易收敛。

4. 为什么这样拆,而不是让一个 Agent 接所有工具

单 Agent 也能通过 MCP 接很多工具,但工具一多会出现工具选择混乱、prompt 膨胀、权限过大和上下文污染。A2A 的价值是把能力拆到多个独立 Agent,让每个 Agent 有自己的职责、工具集、状态和安全边界。

  • 能力边界更清晰:Research Agent 不应该拥有创建 CRM 任务的权限,CRM Agent 也不需要访问开放网页搜索。
  • 上下文更干净:调研过程中的大量网页材料不必污染 CRM 写入 Agent 的上下文。
  • 扩展更容易:新增 Legal Agent 时,只要发布 Agent Card,并接入 A2A 路由层。
  • 审计更友好:每个 Agent 的输入、输出、工具调用和审批节点都能单独追踪。

5. 生产安全与治理设计

同时使用 MCP 和 A2A 后,攻击面也变大了。生产架构至少要做这些控制:

  • 身份认证:Agent 调用 Agent、Agent 调用 MCP Server 都要有明确身份,不能共用一个万能 token。
  • 最小权限:每个 Agent 只连接完成职责所需的 MCP Server,每个 MCP Server 只授予必要 API 权限。
  • 任务级授权:A2A 的 Task 里要带租户、用户、作用域和审批状态,不能只传自然语言目标。
  • 高危动作人工确认:写 CRM、发邮件、删除数据、付款、改权限都应进入 human-in-the-loop。
  • 不信任外部内容:网页、文档、邮件和其他 Agent 的消息都可能携带 prompt injection。
  • 完整 trace:记录 A2A 消息、任务状态、MCP tools/list、tools/call、参数、返回值摘要、错误和最终 artifact。
  • 策略网关:在 Coordinator 和工具执行层之间增加 policy check,拒绝越权任务和危险参数。

面试官追问3个问题

追问一:A2A 能不能替代 MCP?

  • 考察点:协议分层是否清楚。
  • 回答方向:不能直接替代。A2A 处理 Agent 之间的任务协作,MCP 处理 Agent 与工具/资源的连接。A2A 可以把任务发给某个 Agent,但这个 Agent 内部访问数据库、搜索、文件系统时仍然需要 MCP 或其他工具协议。

追问二:Coordinator Agent 会不会成为单点瓶颈?

  • 考察点:分布式系统意识。
  • 回答方向:会,所以要限制 Coordinator 的职责,让它做任务拆分、路由和汇总,而不是执行所有细节。复杂系统可以做分层 coordinator、任务队列、持久化状态和超时取消;关键路径上还要有 deterministic policy,而不是完全依赖 LLM 判断。

追问三:Agent 之间返回矛盾结果怎么办?

  • 考察点:结果聚合和验证机制。
  • 回答方向:不要让 Coordinator 直接“相信多数”。应该要求每个 Agent 返回证据、来源、置信度和不确定性;对关键结论做交叉验证;必要时调用 evaluator 或 Compliance Agent;高风险结论交给人工确认。

扩展知识

MCP、A2A、Function Calling 的三层关系

text
用户目标
  -> A2A:选择哪个 Agent / 委派什么 Task
      -> Function Calling:模型决定调哪个工具
          -> MCP:Host/Agent 调用外部 MCP Server

Function Calling 是模型 API 层能力;MCP 是工具进程协议;A2A 是 Agent 间协作协议。很多面试翻车点都来自把这三层混成一层。

A2A 不等于“多个 Agent 聊天”

A2A 的价值不是让几个模型自由对话,而是让协作变成可跟踪的任务协议。一个合格的 A2A 任务应该有明确状态、输入、输出、artifact、错误和取消语义。否则系统只是把一堆自然语言消息丢来丢去,很难 debug,也很难做权限控制。

MCP Server 是供应链风险入口

MCP 让工具生态变得可插拔,但也意味着恶意或脆弱的 MCP Server 可能读取本地文件、访问凭据、发起网络请求或返回带注入的工具描述。生产环境不能随便安装和启用 MCP Server,要做来源审核、版本锁定、权限声明、沙箱和审计。

基于 MIT 协议开源