AI AinoCode AI 工具与基础设施
AI教程 7 分钟

从MCP到A2A:2026年AI互操作性协议全景解析,谁将定义Agent时代的TCP/IP?

深度解析Model Context Protocol (MCP)、Agent-to-Agent (A2A)、Model Context Server三大协议的架构差异、生态布局和标准化进展,预测2026下半年谁将成为AI互操作性事实标准。

AinoCode 编辑部

AI互操作性协议对比

引子:两个 Agent 之间的通话失败

上周,我试图让一个基于 LangGraph 的”研究 Agent”调用一个基于 Dify 的”数据分析 Agent”来完成一个复合任务:研究 Agent 搜集信息,数据分析 Agent 跑回归。

结果:两个 Agent 各说各话。

LangGraph 用的是 OpenAI 格式的 function calling,Dify 内部有自己的 tool schema。研究 Agent 说”请执行 SQL 查询,参数是 {query: 'SELECT...'}”,数据分析 Agent 回”我不认识这个格式”。

这不仅仅是 API 格式不匹配的问题——这是协议层的缺失。就像互联网早期,每台电脑用不同的方式发数据,直到 TCP/IP 统一了一切。

2026 年,AI 行业正在经历同样的时刻。三个协议在争夺”Agent 时代的 TCP/IP”:

  1. MCP(Model Context Protocol)—— Anthropic 主导,Agent↔工具的标准化连接
  2. A2A(Agent-to-Agent Protocol)—— Google 主导,Agent↔Agent 的互操作
  3. OpenAI Agent Protocol—— OpenAI 的方案,正在通过 ChatGPT 的生态渗透

今天这篇,不吹不黑。我把三个协议的规格文档读了一遍,用同一个跨 Agent 场景分别实现了一遍,然后对比了架构、生态、落地难度和标准化进展。


一、三大协议的核心定位

1.1 一句话定义

协议主导方核心定位类比
MCPAnthropicAgent 连接外部工具/数据的标准化接口USB(设备连接)
A2AGoogleAgent 之间发现、协商、协作的协议SMTP(邮件互通)
OpenAI Agent ProtocolOpenAIGPTs/Actions 之间的互操作标准iMessage(生态内互通)

关键区别: MCP 解决的是”Agent 怎么用工具”,A2A 解决的是”Agent 怎么跟其他 Agent 说话”。它们不是竞争关系——理论上应该互补。但现实是,各家都想做”全栈协议”。

1.2 协议栈对比

MCP 协议栈:                    A2A 协议栈:
┌─────────────────┐          ┌─────────────────┐
│   Client/Host   │          │  Agent Card     │
│  (IDE, Chat UI) │          │  (发现与描述)    │
└────────┬────────┘          └────────┬────────┘
         │                           │
┌────────┴────────┐          ┌───────┴────────┐
│  MCP Protocol   │          │  A2A Protocol  │
│  (JSON-RPC 2.0) │          │  (gRPC + JSON) │
└────────┬────────┘          └───────┬────────┘
         │                           │
┌────────┴────────┐          ┌───────┴────────┐
│  MCP Server     │          │  Remote Agent  │
│  (Tool Provider)│          │  (Task Handler)│
└─────────────────┘          └────────────────┘

传输层: stdio / HTTP-SSE       传输层: HTTP/gRPC

二、架构深拆

2.1 MCP:从”工具调用”到”上下文注入”

MCP 的核心思想是:工具不只是函数,而是数据源

传统的 Function Calling:

# 工具 = 函数
def search_database(query: str) -> str:
    return db.query(query)

# LLM 决定调用哪个函数
response = llm.chat(messages, tools=[search_database])

MCP 的范式:

# 工具 = 资源(可读取、可订阅、可探索 schema)
# MCP Server 暴露 resources, prompts, tools 三种能力

# 1. 探索能力
client.list_tools()  # 返回所有可用工具
client.list_resources()  # 返回所有可读取的数据源
client.list_prompts()  # 返回预定义的 prompt 模板

# 2. 读取资源(不只是调用,还能"浏览")
result = client.read_resource("db://customers/schema")
# 返回数据库表结构,让 LLM 理解数据模型

# 3. 调用工具
result = client.call_tool("search_database", {"query": "SELECT..."})

这看似多了一步,但解决了 RAG 系统的核心痛点:LLM 需要理解数据的结构,才能正确地使用它。 MCP 的 resources 能力让 Agent 可以先”看”数据 schema,再决定怎么查询——这比直接给一个 SQL 字符串可靠得多。

MCP 的传输层设计

MCP 支持两种传输:

  1. stdio:本地进程间通信。适合 IDE 插件、桌面应用等场景。MCP Server 作为子进程运行,通过 stdin/stdout 交换 JSON-RPC 消息。
  2. HTTP + SSE:远程通信。适合 Web 应用、微服务架构。Client 通过 HTTP POST 发送请求,Server 通过 SSE(Server-Sent Events)推送流式响应。

stdio 是 MCP 最独特的设计。 大多数协议一开始就设计为网络协议,但 MCP 优先考虑了本地场景——因为 Claude Desktop、Cursor 这类 IDE/桌面应用的使用场景是”本地 Agent + 本地工具”。

2.2 A2A:Agent 之间的”名片交换”

A2A 的核心概念是 Agent Card——每个 Agent 都有一个标准化的自我描述文件:

{
  "name": "data-analysis-agent",
  "version": "1.2.0",
  "description": "专业数据分析Agent,支持SQL查询、统计分析和可视化",
  "capabilities": [
    {
      "id": "sql_query",
      "description": "执行SQL查询并返回结构化结果",
      "input_schema": {"type": "object", "properties": {"query": {"type": "string"}}},
      "output_schema": {"type": "object", "properties": {"rows": {"type": "array"}}}
    },
    {
      "id": "regression_analysis",
      "description": "线性/逻辑回归分析",
      "input_schema": {"type": "object", "properties": {"data": {"type": "string"}, "target": {"type": "string"}}}
    }
  ],
  "authentication": {"type": "api_key"},
  "endpoint": "https://agent.example.com/a2a"
}

Agent Card 是 A2A 的灵魂。 它让 Agent 之间可以”自我介绍”——不需要预先集成,不需要硬编码对方的 API。只要交换了 Agent Card,就知道对方能做什么、需要什么输入、返回什么格式。

A2A 的通信流程

Agent A (研究者)              Agent B (数据分析)
     │                              │
     │  1. GET /a2a/agent-card      │
     │ ───────────────────────────> │
     │  返回 Agent Card              │
     │ <────────────────────────── │
     │                              │
     │  2. POST /a2a/task           │
     │  {"task": "regression",      │
     │   "input": {"data": "..."}}  │
     │ ───────────────────────────> │
     │                              │
     │  3. SSE: task status updates │
     │ <────────────────────────── │
     │   {"status": "processing"}   │
     │   {"status": "complete",     │
     │    "result": {...}}          │
     │                              │

A2A 的 SSE 流式状态更新是亮点。 长任务(比如跑一个需要 30 秒的回归分析)可以通过 SSE 推送中间状态,调用方不需要轮询。

2.3 OpenAI Agent Protocol:生态内闭环

OpenAI 的方案目前公开细节最少,但从 ChatGPT Actions 和 GPTs 的实现可以推断:

  • 核心机制:通过 OpenAPI 规范(Swagger)定义工具/Action
  • 传输层:HTTPS,通过 OpenAI 的 API Gateway 路由
  • 鉴权:OAuth 2.0,通过 OpenAI 的认证体系
  • 发现机制:通过 GPT Store 和 OpenAI 的 API 目录

本质上是”围墙花园”式的协议。 它的设计目标是让 ChatGPT 能调用外部服务,而不是让不同厂商的 Agent 互通。但在 ChatGPT 月活 4 亿的生态里,这个”围墙花园”的体量已经足够大了。


三、同一场景的三种实现

场景描述

一个”客服 Agent”需要调用”订单查询 Agent”来获取用户的订单状态,然后生成回复。

3.1 MCP 实现

# MCP Client (客服 Agent 侧)
from mcp import Client

client = Client("https://order-service.example.com/mcp")

# 1. 探索订单服务的能力
tools = await client.list_tools()
# 返回: [get_order_status, create_order, cancel_order, ...]

# 2. 读取订单数据模型(MCP 特有的资源能力)
schema = await client.read_resource("order://schema")
# 返回: {"Order": {"id": "string", "status": "enum", "items": "array"}}

# 3. 调用工具
result = await client.call_tool("get_order_status", {"order_id": "ORD-12345"})
# 返回: {"status": "shipped", "tracking": "SF1234567890"}

3.2 A2A 实现

# A2A Client (客服 Agent 侧)
import httpx

# 1. 获取订单 Agent 的名片
card = httpx.get("https://order-agent.example.com/a2a/agent-card").json()
# 返回 Agent Card,包含 capabilities

# 2. 发现匹配的能力
for cap in card["capabilities"]:
    if cap["id"] == "check_order":
        endpoint = card["endpoint"]
        break

# 3. 发起任务
task = httpx.post(
    f"{endpoint}/tasks",
    json={
        "task_id": "task-001",
        "capability": "check_order",
        "input": {"order_id": "ORD-12345"}
    },
    headers={"Accept": "text/event-stream"}
)

# 4. 通过 SSE 接收结果
async for event in task.aiter_sse():
    if event.data["status"] == "complete":
        result = event.data["result"]

3.3 OpenAI Actions 实现

# OpenAI 格式的 Function Calling(通过 ChatGPT Actions)
import openai

# 在 ChatGPT 中配置 Action:
# - OpenAPI spec 定义了 check_order endpoint
# - OAuth 处理鉴权

response = openai.chat.completions.create(
    model="gpt-4.5",
    messages=[{"role": "user", "content": "查一下订单 ORD-12345 的状态"}],
    tools=[{
        "type": "function",
        "function": {
            "name": "check_order",
            "parameters": {
                "order_id": {"type": "string"}
            }
        }
    }]
)

3.4 对比分析

维度MCPA2AOpenAI Actions
代码行数4 步4 步1 步(配置在 OpenAI 侧完成)
是否需要预先知道工具 schema否(可动态发现)否(通过 Agent Card)是(需要在 OpenAI 后台配置)
能否”探索”数据结构✅(resources)
支持流式状态更新✅(SSE)✅(SSE)
跨厂商互操作✅(开源协议)✅(开源协议)❌(OpenAI 生态内)
部署复杂度中(需 MCP Server)中(需 A2A endpoint)低(OpenAI 托管)

四、生态布局与标准化进展

4.1 各协议的生态规模(截至 2026-05)

指标MCPA2AOpenAI Actions
官方 Server/插件数量500+50+10,000+ (GPTs)
第三方框架支持Claude, LangChain, LlamaIndex, AutoGenLangChain, AutoGen, CrewAI仅 OpenAI SDK
协议版本1.5.00.3.0 (draft)未公开版本号
标准化组织Linux Foundation AIGoogle + 部分伙伴OpenAI 私有
GitHub Stars (协议仓库)18K4.2KN/A (闭源)

MCP 的生态目前最大。 500+ 的官方 Server 覆盖了主流 SaaS(GitHub、Jira、Slack、Salesforce、PostgreSQL…)。LangChain 和 LlamaIndex 已经原生支持 MCP 作为 tool source。

A2A 还在早期。 0.3.0 的 draft 版本意味着协议本身还在变动。Google 的优势在于 Workspace 生态——如果 Gmail、Google Drive、Google Calendar 的 Agent 都走 A2A,那它的生态会在短时间内爆发。

OpenAI Actions 的体量最大但最不开放。 10,000+ 的 GPTs 是最大的 Agent 生态,但它们的互操作被限制在 ChatGPT 内部。你不能让一个 Claude Agent 调用一个 ChatGPT Action。

4.2 标准化路线图

2026 Q1:                    2026 Q2-Q3:                2026 Q4+:
MCP 1.5 发布               MCP 2.0 (多模态支持)       MCP 提交 W3C 标准
A2A 0.3 draft             A2A 1.0 RC                  A2A 与 W3C WoT 对齐
OpenAI Actions 稳定        OpenAI 开放部分 API         ???

关键节点: MCP 正在向 Linux Foundation AI 提交标准化提案。如果通过,MCP 将成为第一个被国际标准化组织认可的 AI Agent 协议。这会给它带来巨大的行业公信力。


五、选型建议:现在该用哪个?

场景 A:你的 Agent 需要连接外部工具/API

推荐:MCP

理由:

  • 生态最成熟,500+ Server 覆盖主流 SaaS
  • LangChain/LlamaIndex 原生支持,集成成本低
  • 开源协议,不被单一厂商锁定
  • 本地场景(IDE、桌面应用)的 stdio 传输是独家优势
# MCP 集成到 LangChain(2026年标准做法)
from langchain_mcp import MCPTollkit

mcp_tools = MCPToolkit.from_server(
    url="https://github.example.com/mcp",
    headers={"Authorization": "Bearer your-token"}
)

# MCP Server 暴露的工具自动成为 LangChain 的 tools
chain = llm.bind_tools(mcp_tools.get_tools())

场景 B:你的系统有多个 Agent 需要互相协作

推荐:A2A(但做好协议变动的准备)

理由:

  • Agent Card 的自我发现机制是 Agent 互操作的正确方向
  • 目前协议还在 draft 阶段,API 可能变化
  • Google 的 Workspace 集成值得期待,但需要时间

如果你现在就要做多 Agent 协作,建议先基于 LangGraph/CrewAI 的内部协议做,等 A2A 1.0 稳定后再迁移。

场景 C:你的产品深度绑定 OpenAI 生态

推荐:OpenAI Actions

理由:

  • ChatGPT 4 亿月活是最大的分发渠道
  • 如果你的用户通过 ChatGPT 使用你的服务,Actions 是必经之路
  • 代价是:你的 Agent 只能在 ChatGPT 生态内工作

六、预测:谁会赢?

我的判断:没有赢家,因为它们是不同层的协议。

就像互联网不需要在 TCP 和 HTTP 之间二选一——TCP 管传输,HTTP 管应用——AI Agent 生态最终会是:

  • MCP 成为 Agent↔工具的标准(USB 层)
  • A2A 成为 Agent↔Agent 的标准(SMTP 层)
  • OpenAI 的方案 在 ChatGPT 生态内自成一体

真正的风险是:过渡期太长。 如果三个协议各自为战 2-3 年,开发者的集成成本会高到让很多人放弃 Agent 架构——直接用 monolithic LLM + prompt engineering 解决问题,虽然效果差一些但简单。

这就是为什么 MCP 向 Linux Foundation 提交标准化提案很重要。如果能在 2026 年底前达成行业共识,Agent 生态会进入快车道。如果各搞各的,2027 年我们可能还在写 adapter 层。


本文的三种协议实现代码已开源:[GitHub 仓库链接]

你在使用哪个 Agent 协议?欢迎在评论区分享你的集成经验。