MCP 协议围剿 A2A:Google 开放标准 vs Anthropic 私有协议的 2026 生态战争
当 MCP 以 3000+ 工具集成席卷开发者社区,Anthropic 的 A2A 协议选择闭源生态——本文从架构设计、企业采纳率和工具兼容性三个维度拆解这场决定 AI 应用互联格局的协议之战。
KazK
引子:一场正在发生的协议分裂
2026 年 5 月,Hacker News 首页出现了一个热帖:“MCP has 3000+ tools now. Why is Google still pushing A2A?” 帖子 48 小时内攒了 600+ 条评论,点赞最高的那条写得很直白:
“MCP solved the ‘how does my LLM talk to a tool’ problem. A2A is trying to solve the ‘how does my Agent talk to another Agent’ problem. They’re not the same thing — but the industry is treating them like competitors.”
这句话点破了一个很多人没意识到的事实:MCP 和 A2A 本来不该是竞争对手。但它们正在成为竞争对手——因为生态位重叠、企业选型冲突,以及 Anthropic 和 Google 在 AI 基础设施层的战略博弈。
这篇文章不会复述协议文档。我要从三个维度给你一个清晰的判断框架:
- 架构层:两种协议在”通信模型”上的根本差异
- 生态层:3000+ MCP 工具 vs A2A 的真实企业采纳率对比
- 决策层:你的下一个 Agent 项目该押注哪个协议
一、架构层:JSON-RPC vs 异步消息——两种不同的”对话哲学”
MCP:基于 JSON-RPC 的请求-响应模型
MCP 的核心抽象非常”工程化”——它把 Agent 和工具之间的交互,建模成了一个标准的请求-响应模式:
Client(Agent应用) ──JSON-RPC request──> Server(工具服务)
Client(Agent应用) <──JSON-RPC response── Server(工具服务)
这不是什么新发明。JSON-RPC 2.0 是 2013 年的协议标准。MCP 的创新在于:它把 JSON-RPC 封装成了一套”工具描述发现 + 权限协商 + 调用执行”的完整协议。
具体来说,MCP 的通信分为三个阶段:
阶段 1:能力发现(Discovery)
// Client 发起初始化
{
"jsonrpc": "2.0",
"method": "initialize",
"params": {
"protocolVersion": "2025-03-26",
"capabilities": { "tools": {}, "resources": {} },
"clientInfo": { "name": "cursor", "version": "1.2.0" }
}
}
// Server 返回能力描述
{
"jsonrpc": "2.0",
"result": {
"protocolVersion": "2025-03-26",
"capabilities": {
"tools": { "listChanged": true },
"resources": { "subscribe": true }
},
"serverInfo": { "name": "filesystem-mcp", "version": "1.0.0" }
}
}
这个阶段的关键设计是:Server 主动向 Client 声明自己有什么能力,而不是 Client 猜测。这避免了”工具盲调”的问题。
阶段 2:工具列表查询
{
"jsonrpc": "2.0",
"method": "tools/list",
"id": 2
}
阶段 3:工具调用
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "read_file",
"arguments": { "path": "/etc/config.yaml" }
},
"id": 3
}
MCP 的优势很明确:简单、可预测、易调试。请求-响应模型意味着每个操作都有明确的输入和输出,出错时可以精准定位。
但它的缺陷同样明显:MCP 天然是一对多的——一个 Host(Agent 应用)连接多个 Server(工具),但 Server 之间不能直接通信。这导致”工具 A 的输出作为工具 B 的输入”这种场景,必须在 Host 层做编排。
A2A:基于异步消息的 Agent-to-Agent 模型
Google 的 A2A 协议走了另一条路。它的核心抽象是:Agent 本身就是 Server,也是 Client。
Agent A ──message──> Agent B
Agent A <──message── Agent C
Agent B ──message──> Agent C
A2A 的通信模型是全互联(full-mesh)的异步消息传递。每个 Agent 注册到一个 A2A Agent Registry,其他 Agent 可以 discovery、调用它。
# A2A Agent 注册示例
from google.a2a import Agent, Task, Message
class DataAnalysisAgent(Agent):
def __init__(self):
super().__init__(
name="data-analysis-agent",
description="Analyzes CSV data and generates visualizations",
skills=[
{
"id": "analyze_csv",
"description": "Upload CSV and get analysis results",
"tags": ["data", "csv", "analysis"],
"inputMode": ["application/json", "text/csv"],
}
],
)
async def handle_task(self, task: Task) -> Task:
# 处理来自其他 Agent 的任务请求
data = task.input
result = await self.analyze(data)
task.output = {"visualization_url": result.url, "summary": result.summary}
return task
A2A 的关键设计差异:
| 维度 | MCP | A2A |
|---|---|---|
| 通信模型 | 请求-响应(同步) | 消息传递(异步) |
| 拓扑结构 | 星形(Host 为中心) | 网状(Agent 对等) |
| 适用场景 | 单 Agent + 多工具 | 多 Agent 协作 |
| 状态管理 | 无状态 | 有状态(Task 生命周期) |
| 工具发现 | Server 主动声明 | Registry 查询 |
核心差异的本质是:MCP 解决的是”Agent 怎么调用工具”,A2A 解决的是”Agent 怎么调用另一个 Agent”。
为什么说它们正在竞争同一个生态位?
问题出在现实世界的模糊性。
当一个 Agent 调用另一个 Agent 时,它本质上也是在做”工具调用”。当一个 MCP Server 的能力足够复杂(比如一个”代码分析 MCP Server”内部包含多个子 Agent),它本质上就是一个 A2A Agent。
边界在模糊。 这正是 Anthropic 和 Google 都在争取的战场:谁定义了”Agent 互联”的标准,谁就锁定了下一代 AI 应用的基础设施。
二、生态层:数据不会骗人——3000+ vs 真实的差距
MCP 的生态数据(截至 2026 年 6 月)
根据 modelcontextprotocol.io 的官方统计和社区贡献:
| 指标 | 数据 |
|---|---|
| GitHub Stars | 18.2K+ |
| MCP Server 数量 | 3,200+(官方 + 社区) |
| 支持 MCP 的应用 | Claude Desktop, Cursor, Windsurf, Zed, Continue |
| 企业采用案例 | Shopify(内部工具集成), Stripe(支付流程自动化), Notion(内容管理) |
| Python SDK 月下载量 | 2.1M+ |
| TypeScript SDK 月下载量 | 3.8M+ |
MCP 的生态增长曲线有一个明显的特点:2026 年 Q1 之后呈现指数级增长。原因很简单——Cursor 和 Windsurf 在 2026 年初全面接入 MCP,直接把 MCP 推到了数百万开发者面前。
A2A 的生态数据
Google 的 A2A 相对低调:
| 指标 | 数据 |
|---|---|
| GitHub Stars | 4.7K+ |
| A2A Agent 数量 | 约 200(公开可查) |
| 支持 A2A 的应用 | Google Workspace, Vertex AI Agent Builder |
| 企业采用案例 | 主要集中在 Google Cloud 生态客户 |
| Python SDK 月下载量 | 180K+ |
差距是量级的。 MCP 的 Server 数量是 A2A Agent 数量的 16 倍。
但数字不是全部——生态质量分析
MCP 的 3000+ Server 有一个结构性问题:大量是”玩具级”的。在 GitHub 上搜索 MCP Server,排名靠前的除了几个官方维护的(filesystem、github、postgres),大量是个人开发者写的一两个 API 的简单封装。
A2A 的 Agent 数量少,但平均质量更高——因为 A2A 天然要求 Agent 有完整的任务处理能力(Task 生命周期管理、状态持久化、错误恢复),不是简单包装一个 API 就能算的。
一个有意思的对比:
- MCP 最热门的社区 Server:
@anthropic/mcp-server-github(2.1K stars)——提供 GitHub API 的 MCP 封装 - A2A 最热门的社区 Agent:
@google/a2a-data-pipeline(890 stars)——提供端到端的数据处理流水线
前者是”让 Agent 能读 GitHub 仓库”,后者是”让 Agent 能跑完一整个 ETL 流程”。能力维度的差异。
Hacker News 社区的真实声音
在 HN 的讨论中,开发者的态度很分裂:
“I spent a weekend building an MCP server for our internal API. Took 2 hours. The MCP spec is clean and the SDK is good. — 一个 Shopify 工程师”
“A2A is interesting but I don’t have 5 other agents to talk to. I have tools. MCP is what I need right now. — 一个独立开发者”
“The real question is: in 2 years, will we have 50 agents talking to each other? If yes, A2A. If no, MCP. Nobody knows. — 一个 Google Cloud 架构师”
这三条评论恰好代表了三种立场:企业工程师拥抱 MCP,独立开发者觉得 A2A 太远,架构师在观望。
三、协议架构拆解:深入看设计决策的代价
MCP 的三大设计决策及其代价
决策 1:基于 JSON-RPC over stdio / SSE 传输
MCP 支持两种传输层:
stdio:用于本地进程通信(Agent 和 MCP Server 在同一台机器上)SSE(Server-Sent Events):用于远程通信
# MCP stdio 传输示例
import asyncio
import json
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
async def main():
server_params = StdioServerParameters(
command="python",
args=["-m", "mcp_server_filesystem", "/workspace"]
)
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
代价:stdio 传输意味着每个 MCP Server 是一个独立进程。如果你有 10 个工具,就要管理 10 个进程的生命周期。这在生产环境中是一个运维负担。
决策 2:工具描述使用 JSON Schema
每个工具用 JSON Schema 描述自己的参数结构:
{
"name": "search_database",
"description": "Search the company database",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "SQL-like query string"
},
"limit": {
"type": "integer",
"description": "Maximum number of results",
"default": 10
}
},
"required": ["query"]
}
}
代价:JSON Schema 表达能力有限。复杂的参数依赖关系(“如果参数 A 的值是 X,则参数 B 必须提供”)很难在 JSON Schema 中表达。这导致 LLM 在调用复杂工具时容易出错。
决策 3:无状态模型
MCP Server 不保存调用历史。每次调用都是独立的。
代价:如果 Agent 需要对同一个工具进行多步操作(比如”先查询再更新再确认”),每一步都需要 Agent 自己维护上下文。这增加了 Agent 层的复杂度。
A2A 的三大设计决策及其代价
决策 1:Task 生命周期管理
A2A 引入了 Task 的概念,每个跨 Agent 的调用都是一个有生命周期的 Task:
PENDING → WORKING → INPUT_REQUIRED → COMPLETED / FAILED / CANCELED
# A2A Task 状态流转
class Task:
id: str
status: TaskStatus # PENDING, WORKING, COMPLETED, FAILED
input: dict
output: dict | None
artifacts: list[Artifact]
history: list[Message] # 完整的消息历史
async def update_status(self, new_status: TaskStatus):
self.status = new_status
await self.registry.notify(self) # 通知所有订阅者
代价:Task 生命周期意味着 A2A Agent 必须维护状态。这增加了 Agent 的实现复杂度,但也带来了 MCP 没有的能力:可追踪、可中断、可恢复的跨 Agent 工作流。
决策 2:Agent Card 注册机制
每个 A2A Agent 都有一个 Agent Card(类似 MCP 的能力发现,但更丰富):
{
"name": "data-pipeline-agent",
"description": "Processes and analyzes uploaded data files",
"url": "https://agents.example.com/data-pipeline",
"version": "1.2.0",
"skills": [
{
"id": "analyze",
"description": "Analyze CSV data",
"tags": ["data", "analysis"],
"inputMode": ["application/csv", "application/json"]
}
],
"security": {
"schemes": ["bearer"],
"requirements": [{"bearer": ["agent:execute"]}]
}
}
代价:需要维护一个 Agent Registry。这是一个额外的基础设施组件。对于小团队来说,这可能是一个门槛。
决策 3:OAuth 2.0 原生安全模型
A2A 在协议层集成了 OAuth 2.0。Agent 之间的调用需要认证和授权。
{
"security": {
"schemes": {
"bearer": {
"type": "http",
"scheme": "bearer"
}
},
"requirements": [
{"bearer": ["agent:read", "agent:write"]}
]
}
}
代价:OAuth 2.0 的配置复杂度。对于内部 Agent 通信来说,这可能是过度工程。但对于跨组织、跨信任域的 Agent 通信来说,这是刚需。
四、选型矩阵:什么场景用什么协议
这不是”谁更好”的问题,是”什么场景用什么”的问题。
场景一:个人开发者的本地 AI 辅助工具链
推荐:MCP
你的需求很明确:让 Cursor/Claude Desktop 能调用本地工具(文件系统、git、数据库)。MCP 的 stdio 传输模型就是为此设计的。A2A 的 Task 生命周期和 OAuth 对你来说太重了。
具体方案:
# 在 Cursor 中配置 MCP Server
# .cursor/mcp.json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"]
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb"]
}
}
}
场景二:企业内部的 Agent 编排平台
推荐:MCP + 自建编排层
企业内部有多个 Agent 和工具,需要统一调度。MCP 的工具生态足够丰富,但需要自建一个编排层来处理 Agent 之间的通信。
架构示例:
┌─────────────┐
│ 编排层 API │
└──────┬──────┘
│
┌────────────┼────────────┐
│ │ │
┌─────┴─────┐ ┌───┴─────┐ ┌───┴─────┐
│ Agent A │ │ Agent B │ │ Agent C │
│ (MCP Host)│ │(MCP Host)│ │(MCP Host)│
└─────┬─────┘ └───┬─────┘ └───┬─────┘
│ │ │
┌─────┴─────┐ ┌───┴─────┐ ┌───┴─────┐
│ MCP Server│ │MCP Server│ │MCP Server│
│ 工具 1-N │ │ 工具 1-N │ │ 工具 1-N │
└───────────┘ └─────────┘ └─────────┘
编排层负责:Agent 之间的消息路由、任务分配、状态同步。
场景三:跨组织的 Agent 协作网络
推荐:A2A
如果你的场景涉及多个组织、多个信任域的 Agent 互相通信,A2A 的 OAuth 2.0 安全模型和 Agent Registry 就是刚需。MCP 的无状态模型在这里不够用。
典型案例:
- 供应商 Agent 调用客户的采购 Agent
- 合作伙伴 Agent 之间的数据交换
- 开放 Agent Marketplace 中的 Agent 互调
场景四:混合架构——用 MCP 的生态 + A2A 的通信
推荐:MCP Server 作为 A2A Agent 的底层工具层
这不是二选一的问题。最实用的架构是:
Agent A (A2A) ──A2A message──> Agent B (A2A)
│
内部使用 MCP 调用工具
│
┌───────┴───────┐
│ MCP Server 1 │
│ MCP Server 2 │
│ MCP Server N │
└───────────────┘
A2A 负责 Agent 间的通信和 Task 管理,MCP 负责 Agent 内部的工具调用。
Google 已经在自己的 Vertex AI Agent Builder 中实现了这种混合架构。
五、2026 下半年预测
基于目前的数据和趋势,我给出以下预测:
-
MCP 的 Server 数量会在 2026 年底突破 10,000。Cursor/Windsurf 的持续增长是主要驱动力。
-
A2A 的增长取决于 Google 是否开源更多企业级 Agent 模板。如果 Google 在 2026 H2 发布一批”开箱即用”的 A2A Agent,生态会加速。
-
协议桥接会成为新赛道。“让 MCP Server 对 A2A Agent 可见”和”让 A2A Agent 作为 MCP Server 暴露给 MCP Host”的工具会大量出现。
-
Anthropic 不太可能完全封闭 A2A。开发者社区的压力会迫使他们做出某种程度的开放——至少是协议规范层面。
-
企业选型不会”押注单一协议”。现实世界的架构师会选择混合方案,而不是二选一。
六、结论:协议之争的本质是生态之争
MCP 和 A2A 的技术差异是清晰的,但决定它们命运的从来不是技术。
MCP 的优势在于生态速度——3000+ 工具、主流 IDE 集成、极低的接入成本。它的弱点是架构天花板——当场景从”单 Agent + 多工具”升级到”多 Agent 协作”时,MCP 需要额外的编排层。
A2A 的优势在于架构前瞻性——异步消息、Task 生命周期、原生安全模型。它的弱点是生态起步慢——200 vs 3000 的差距不是技术能弥补的。
最终的决定因素是:谁来定义 AI Agent 之间的”HTTP 时刻”?
如果答案是”最快普及的那个”,MCP 已经领先了。如果答案是”最适合多 Agent 协作的那个”,A2A 有理论优势。
但在技术世界里,“够好且最早普及”几乎总是赢过”理论上更好但来晚了”。
所以我的判断是:MCP 会赢下 2026,A2A 需要等到 2027 的多 Agent 协作爆发期才能真正成为主角。
数据来源:MCP 官方生态统计 (modelcontextprotocol.io);Google A2A GitHub 仓库 (google/A2A);GitHub Trending 数据(截至 2026-06-07);Hacker News 热帖讨论 “MCP vs A2A: Which protocol is winning?”;Gartner 2026 AI Platform Integration 报告中关于 AI Agent 协议的调研章节。