A2A 与 MCP:两种 AI Agent 互联协议解析与选型

引言

做 AI 应用的人这两年绕不开两个缩写:MCP(Model Context Protocol)和 A2A(Agent2Agent Protocol)。它们都由头部厂商提出,都被冠以”开放标准”,却常常被混为一谈。很多人以为它们是同类竞品,其实两者解决的是完全不同的问题。

读完本文你会明白:

  • MCP 解决的是「模型如何调用外部工具和数据」,管的是单体 Agent 的能力接入;
  • A2A 解决的是「一个 Agent 如何找到并协作另一个 Agent」,管的是多 Agent 之间的互联;
  • 两者不是二选一,而是经常叠加使用,各自负责协议栈的不同层次。

本文面向已经了解 LLM 基本概念、准备搭建 Agent 系统的开发者。文中事实以官方文档与规范为准,个人理解处会明确标注。

背景:为什么 Agent 需要协议

先看一个演进过程。最早的 LLM 应用是”问答机”:模型吃 prompt,输出文本。很快大家发现模型不会查数据库、不会调 API,于是有了 Function Calling——模型按 JSON Schema 声明”我要调什么函数、传什么参数”,应用去执行。这解决了单机场景下模型与代码的连接,但每接一个工具都要写一遍适配。

更复杂的诉求随之而来:一个”订机票的 Agent”需要去读日历、查航班、走支付;一个”招聘 Agent”需要和”简历解析 Agent”、”背景调查 Agent”协作。前者要的是把各种数据源和工具统一接进来,后者要的是让多个独立 Agent 互相发消息、接力完成任务。

于是出现了两条互补的技术路线:一条向下接入能力(MCP),一条横向连接 Agent(A2A)。

MCP:模型与工具、数据的标准化连接

MCP 由 Anthropic 于 2024 年 11 月发布,核心目标是消除”每个 AI 应用都要为每个数据源写一遍自定义集成”的重复劳动。它把”模型需要的外部能力”抽象成三类原语:

原语含义典型例子
Tools(工具)可执行的函数,模型决定何时调用查数据库、发消息、调支付 API
Resources(资源)供模型读取的上下文数据文件内容、数据库记录、API 返回
Prompts(提示词模板)可复用的交互模板system prompt、few-shot 示例

每种原语都配套发现(*/list)与获取(*/get、*/call)的方法,协议统一约定 JSON-RPC 格式的消息。这意味着一个”文件系统 MCP Server”写一次,Claude、Cursor、任意支持 MCP 的应用都能复用,不需要为每家平台重写适配层。

MCP 的三层角色

MCP 架构里三方各司其职,可以类比为插排、插头、电器:

  • Host(主机):用户直接交互的 AI 应用,内含 LLM,如 Claude Desktop、Cursor。相当于插排本身——提供电源接口。
  • Client(客户端):Host 内部的翻译器,负责把 Host 的语言翻译成 MCP 协议消息。相当于插排上的每个插孔。
  • Server(服务端):承载并执行工具的程序,如文件系统、数据库 Server。相当于电器——它自己不知道插排是谁,只遵守统一的插头规格。

用一个生活化比喻帮助记忆:MCP 相当于”统一的电源插头标准”。过去每个家电(数据库、GitHub、日历)都要造自己形状的插孔,AI 应用接起来头疼;MCP 规定大家用同一个插头和插孔,于是任何”电器”(Server)都能插进任何”插排”(Host)。

比喻的边界:插头接上就通电,但 MCP Server 并不会”主动来找你”——它只是被动等待 Host 的 Client 来连接和调用,连接的建立仍需要配置。

flowchart LR
    subgraph Host["Host(AI 应用,含 LLM)"]
        C1["Client 1"]
        C2["Client 2"]
    end
    C1 -->|JSON-RPC| S1["MCP Server(工具/资源)"]
    C2 -->|JSON-RPC| S2["MCP Server(数据库)"]

图 1:MCP 架构中一个 Host 通过多个 Client 连接多个 Server,通信基于 JSON-RPC。

A2A:Agent 与 Agent 的对等协作

A2A 由 Google 于 2025 年 4 月提出,定位是企业级场景下多 Agent 协作的开放协议。它回答的问题不是”模型怎么调工具”,而是”一个 Agent 怎么发现另一个 Agent、把任务交过去、再拿回结果”。

A2A 的几个核心概念:

  • Agent Card(代理名片):每个 Agent 对外发布的一份 JSON 元数据,描述自己的身份、能力、技能、接口地址和认证要求,通常放在 /.well-known/agent-card.json。Client 通过读它来发现合适的 Agent 并决定如何通信。这是 A2A 的”发现”机制。
  • Task(任务):一个有状态的进程,Client 和远端 Agent 围绕一个目标协作,有明确的生命周期(如 submitted → working → completed)。长任务可以持续同步进度,而不是一问一答就结束。
  • Message(消息):Client 与 Agent 之间的一轮通信,承载指令、上下文或结果。
  • Artifact(产物):任务产生的文件、报告等输出物。

A2A 的重点在于任务管理(Task Management):任务可以有状态、可追踪、可跨长时间运行,Agent 之间能对”某件事做到哪一步”保持一致。

生活化比喻:A2A 像企业里的”跨部门工单系统”。部门 A 需要成果,但不关心部门 B 内部怎么干活——它只需要提交一张工单(Task)、说明需求(Message)、跟踪状态(Task 生命周期),最后接收交付物(Artifact)。部门 B 通过”部门简介”(Agent Card)被找到,并对外承诺”这类活我能接”。

比喻的边界:工单系统通常有中心调度,而 A2A 协议本身不强制中心节点——它是点对点的,只要双方都遵守协议即可通信。

sequenceDiagram
    participant C as Client Agent
    participant S as Remote Agent
    C->>S: 读取 Agent Card(发现能力)
    C->>S: 发起 Task(携带 Message 指令)
    S-->>C: 返回 Task 状态(working / 进度)
    S-->>C: Task 完成,返回 Artifact 产物

图 2:A2A 的一次典型协作流程——先通过 Agent Card 发现,再以有状态的 Task 接力并回收产物。

对比:MCP 与 A2A 的差异点

对比维度MCPA2A
提出方 / 时间Anthropic,2024 年 11 月Google,2025 年 4 月
解决的核心问题模型如何调用外部工具与数据一个 Agent 如何发现并协作另一个 Agent
通信双方应用/Host ↔ 工具 Server(不对等,有主从)Agent ↔ Agent(对等,双向协作)
关注对象Tools / Resources / Prompts 三类原语Task / Message / Artifact,以及 Agent Card 发现
有无状态以工具调用为主,偏”一问一答”式任务有状态、有生命周期,支持长时间运行
发现机制靠 Client 端配置接入 ServerAgent Card 公开元数据,供对端发现
传输 / 协议基于 JSON-RPC,典型走 HTTP/Streamable HTTP基于 JSON,走 HTTP(也有 v1.0 的演进)
生态现状工具接入侧渗透广,AI IDE、Agent 框架普遍支持多 Agent 协作场景,厂商与框架逐步接入

一句话概括差异:

MCP 管”能力接入”(纵向,模型↔工具),A2A 管”Agent 互联”(横向,Agent↔Agent)。

这决定了它们在技术栈中的位置完全不同。MCP 解决的是”一个 Agent 的工具从哪里来”,A2A 解决的是”多个 Agent 怎么把任务传下去”。

适用场景

适合用 MCP 的场景:

  • 给一个 LLM 应用接数据库、文件系统、GitHub、Slack、日历等具体数据源和工具;
  • 想做一个”工具丰富”的单一 Agent,并希望这些集成可复用、跨平台;
  • 接入方是 Host(应用)与服务方(工具 Server)的关系,模型直接驱动工具调用。

典型例子:一个客服 Agent 通过 MCP 连接 CRM、订单库和退换货接口,在一个 Host 内部完成查询与处理。

适合用 A2A 的场景:

  • 多个独立部署、由不同团队维护的 Agent 需要协作完成端到端流程;
  • 任务周期长、需要持续跟踪状态、中间可能有人工介入或跨系统接力;
  • 你需要”一个 Agent 根据 Agent Card 自动发现并调用另一个 Agent”。

典型例子:招聘 Agent 把”简历解析”交给 A2A 对端的专业 Agent,再把自己不擅长的”背调”接力给第三个 Agent,每个 Agent 独立演进、互不侵入内部实现。

个人理解(推测,非官方表述):粗看可把 MCP 类比为”协议栈的下层——能力面”,A2A 类比为”上层——协同面”。一个 Agent 先用 MCP 接好它的工具,再用 A2A 去和其他 Agent 协作。

组合使用:MCP + A2A

实践中两者往往同时出现,而不是互斥。一个常见的架构是:

  1. 每个 Agent 内部用 MCP 接入自己的工具与数据,保证”单兵作战”能力;
  2. 每个 Agent 对外发布 Agent Card,通过 A2A 与其他 Agent 协作,保证”团队作战”能力;
  3. 上层一个编排 Agent 用 A2A 发起 Task,把工作分发下去,再汇总各 Agent 的 Artifact。

也就是说:MCP 让 Agent 变得”有用”(有工具可调),A2A 让 Agent 变得”合群”(能被找到、能接力)。两者解决的是不同层面的问题,因此被越来越多框架视为互补的成对标准。

总结

  • MCP(Anthropic,2024)标准化了「模型 → 工具/数据」的连接,核心是 Tools / Resources / Prompts 三类原语,偏 Host↔Server 的接入关系。
  • A2A(Google,2025)标准化了「Agent → Agent」的协作,核心是 Agent Card 发现 + 有状态的 Task / Message / Artifact,偏对等的多 Agent 协作。
  • 选择建议:单 Agent 要接工具和数据,选 MCP;多 Agent 要互联协作、接力长任务,选 A2A;完整体系往往两者并用。

参考链接