前言

也算做了好长一段时间的LLM-based MAS,有几个协议一直在这段时间出现在我周围:

  1. MCP

  2. A2A

  3. ACP(新的)

然后于是,想来了解一下,这究竟具体是何方神圣。

正文

1. MCP(Model Context Protocol)

1.1 什么是MCP?

Model Context Protocol(简称 MCP)是由 Anthropic 发起并开源的一种标准化通信协议,用于让大语言模型(LLM)和代理系统以统一方式访问外部工具、数据源与服务。它被比喻为“AI 的 USB-C 接口”,正在成为连接智能体与软件生态的通用标准。

关键信息

  • 发布机构: Anthropic(2024 年开源)

  • 核心作用: 统一 LLM 与外部系统的数据与功能接口

  • 通信方式: 基于 JSON-RPC 2.0 的双向协议

  • 主要组件: Host、Client、Server

  • 常用语言 SDK: Python、TypeScript、C#、Java、Rust 等

架构与机制

MCP 采用主机-客户端-服务器(Host-Client-Server)架构。主机是运行 LLM 或 AI 代理的应用(如 Claude Desktop 或 IDE 环境),负责权限与上下文聚合;客户端在主机中创建,与单个服务器建立 1∶1 连接;服务器由外部工具或数据源实现,向客户端暴露三类能力:

  • Resources(资源): 各类结构化数据,如文件、数据库记录;

  • Tools(工具): 可执行动作的接口,如提交 API 请求或运行查询;

  • Prompts(提示模板): 可复用的交互模板与任务工作流。
    通信过程通过请求-响应与通知模式完成初始化、数据传输和能力协商。

技术特性

MCP 定义了安全边界与可扩展机制:

  • 能力协商(Capability Negotiation) 确保客户端与服务器仅启用双方支持的功能;

  • 多传输层 支持 stdio、HTTP (SSE) 与 WebSocket 通信;

  • 安全模型 采用零信任设计,主机需显式授权所有外部调用;

  • 可组合性 各服务器职责单一,可在同一主机中无缝组合使用。

重要意义与应用

在 MCP 出现之前,每个 AI 系统都需为不同应用编写自定义集成代码。MCP 将 N 个 AI 应用与 M 个外部工具的集成复杂度,从 N × M 降至 N + M。该协议已被 GitHub、Figma、Microsoft 等产品支持,用于实现 IDE 、桌面助手、企业 CRM 和多智能体系统的统一连接。
随着生态扩展,MCP 有望成为 AI 工具互操作的行业标准,使智能体能够在安全框架下跨平台访问上下文、执行操作并协调复杂任务。

1.2 MCP的实际应用

本质:JSON-RPC 风格的协议


1.2.1 工具注册(Tool Definition)

{
  "name": "search_papers",
  "description": "Search academic papers",
  "input_schema": {
    "type": "object",
    "properties": {
      "query": { "type": "string" },
      "top_k": { "type": "integer" }
    },
    "required": ["query"]
  }
}

这一步是在告诉模型:“我有一个工具,你可以这样调用我”


1.2.2 模型发起调用(Tool Call)

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "search_papers",
    "arguments": {
      "query": "SBOM vulnerabilities",
      "top_k": 5
    }
  },
  "id": 1
}

1.2.3 工具返回结果

{
  "jsonrpc": "2.0",
  "result": {
    "papers": [
      { "title": "SBOM Security Issues", "year": 2024 },
      { "title": "Software Supply Chain Risks", "year": 2023 }
    ]
  },
  "id": 1
}

1.2.4 MCP 的关键点

  • 基于 JSON-RPC(请求-响应)

  • 强 schema(input_schema)

  • 工具是“被动调用”的

核心抽象:function call

2. A2A(Agent-to-Agent)

2.1 什么是A2A?

Agent-to-Agent Protocol(简称 A2A)是一项由 Google 于 2025 年推出的开放通信标准,旨在让不同平台、框架或厂商构建的自主 AI 代理(agents)能够安全、标准化地互相发现、交流与协作。它是多代理系统(multi-agent systems)实现互操作性的核心机制。

关键信息

  • 发布方:Google,与逾 50 家技术合作伙伴联合发布(2025 年 4 月)

  • 核心定位:为 AI 代理提供通用通信协议

  • 主要技术:HTTP(S)、JSON-RPC 2.0、Server-Sent Events (SSE)

  • 安全机制:TLS 加密、OAuth 2.0、API Key、mTLS

  • 互补协议:Model Context Protocol (MCP)

核心设计与工作机制

A2A 通过“客户端代理(client agent)”与“远程代理(remote agent)”之间的交互完成任务协作。通信以 任务(Task) 为中心展开,支持异步和长任务流。每个代理通过一个标准化的 Agent Card(通常位于 /.well-known/agent.json)公开自身身份、技能、输入输出格式及认证要求,从而实现动态发现和自动匹配。

消息以 JSON-RPC 封装,可包含文本、结构化数据、文件甚至流媒体等多种内容类型。协议内置 任务生命周期管理(提交→进行中→完成/失败)及状态事件,使协作具备可追踪性和持久性。

与 MCP 的关系

A2A 与 Model Context Protocol 互为补充:

  • MCP 连接代理与外部工具或数据源(“agent-to-tool” 层)。

  • A2A 连接代理与代理(“agent-to-agent” 层)。
    二者结合构成完整的智能系统通信栈,使代理既能调用工具,又能与其他代理协同。

应用与优势

A2A 使企业能够组合不同模型或服务的专用代理,如客服、检索、分析、生成等,从而构建可扩展、模块化的智能体系。其优势包括:

  • 跨框架互操作:消除厂商锁定,实现多语言、多平台协作。

  • 任务级协作:支持委派、协同、咨询等多种代理协作模式。

  • 企业级安全:沿用现有身份认证体系,支持审计与追踪。

  • 可扩展架构:任务模型天然支持水平扩展和并行处理。

当前地位与发展

A2A 由 Google 开源并已贡献至 Linux Foundation 的 Agentic AI Foundation 进行治理。其生态系统正快速扩展,被视为构建“智能代理网络(Agentic Web)”的重要基石。随着 MCP、ANP 等相关协议协同发展,A2A 正成为未来多代理通信标准的核心组成部分。

2.2 A2A的实际应用

本质:带角色 + 意图的消息传递


2.2.1 Agent 发任务给另一个 Agent

{
  "from": "planner_agent",
  "to": "coder_agent",
  "type": "task",
  "content": {
    "goal": "Implement SBOM parser",
    "requirements": [
      "Support SPDX",
      "Output JSON"
    ]
  }
}

2.2.2 coder_agent 回复

{
  "from": "coder_agent",
  "to": "planner_agent",
  "type": "result",
  "content": {
    "status": "completed",
    "repo_url": "https://github.com/example/sbom-parser"
  }
}

2.2.3 A2A 的关键点

  • agent identity(from/to)

  • message type(task/result/feedback)

  • payload 更自由(不像 MCP 那么 rigid)

核心抽象:协作对话

3. ACP(Agent Communication Protocol)【在我看来也就比A2A底层一点,除此之外没有区别】

3.1 什么是Agent Communication Protocol?

Agent Communication Protocol(ACP)是一种开放标准,旨在让不同框架、语言和运行环境的人工智能代理(AI agents)能够相互通信与协作。它为多代理系统提供统一的消息格式与接口,支持跨平台的互操作性与任务协调。ACP最初由IBM的BeeAI项目提出,现已并入Linux基金会旗下的Agent2Agent(A2A)计划。

关键信息

  • 首次发布: 2024年(IBM BeeAI项目)

  • 当前维护方: Linux Foundation(并入A2A协议)

  • 通信方式: REST/HTTP,支持异步与同步模式

  • 主要实现: BeeAI Framework、Python与TypeScript SDK

  • 特性焦点: 开放治理、跨框架互通、多模态消息支持

核心设计与机制

ACP基于REST原则,通过HTTP端点发送和接收消息,无需专用SDK即可集成。其消息模型允许文本、图像、音频、结构化数据等多模态内容,并以异步通信为默认模式,以支持长时运行或复杂任务。协议还支持离线发现,即使代理暂未上线,也可通过嵌入的元数据被识别。其安全设计包括身份认证、元数据签名与加密通信。

生态与用途

ACP为多代理协作提供标准通信层。例如,不同企业的生产调度代理与物流代理可通过ACP交换实时库存与运输数据,而无需定制接口。它支持跨系统、跨组织的工作流,如企业内部客服、库存、与人力资源系统之间的协作。
ACP在BeeAI平台上作为通信底层,为发现、运行和共享符合协议的代理提供基础设施。其开放生态还允许开发者使用Python或TypeScript SDK快速封装和部署兼容代理。

与其他协议的关系

ACP常与Model Context Protocol和Agent2Agent Protocol相提并论:

  • MCP 聚焦于单模型与工具间的数据与上下文交换。

  • ACP 面向多代理间的点对点通信与协作。

  • A2A 由Google发起,现与ACP在Linux基金会下融合,形成统一的开放代理互操作标准。

当前发展

并入A2A后,ACP的规范与实现正持续演进,重点方向包括身份联合、访问委托、多注册表支持及跨组织的安全信任管理。其目标是为“代理互联网(Internet of Agents)”奠定通用通信基础,使未来AI系统能像网络服务一样自由互联与协作。

3.2 ACP:更底层通信协议(偏基础设施)

Agent Communication Protocol

本质:标准化消息 envelope(信封)


3.2.1 一个更通用的消息格式

{
  "header": {
    "message_id": "12345",
    "sender": "agent_A",
    "receiver": "agent_B",
    "timestamp": "2026-04-01T12:00:00Z",
    "protocol_version": "1.0"
  },
  "body": {
    "action": "request",
    "payload": {
      "task": "analyze dataset",
      "dataset_id": "xyz"
    }
  }
}

3.2.2 响应

{
  "header": {
    "message_id": "12345-resp",
    "correlation_id": "12345"
  },
  "body": {
    "status": "ok",
    "result": {
      "accuracy": 0.91
    }
  }
}

3.2.3 ACP 的关键点

  • 明确的 header / body 分层

  • 支持 tracing(correlation_id)

  • 更像企业级系统(微服务通信)

核心抽象:message bus / API

4. 三者“协议层级”对比

我们可以这样理解

        ┌───────────────┐
        │   A2A(协作) │  ← 高层语义(任务、角色)
        ├───────────────┤
        │   ACP(通信) │  ← 传输规范(message format)
        ├───────────────┤
        │   MCP(工具) │  ← 外部能力调用
        └───────────────┘

4.1 A2A 和 ACP

A2A 和 ACP 确实高度重叠,但不是同一个层级

A2A = “语义层(怎么协作)”
ACP = “通信层(怎么传消息)”


4.1.1 A2A:定义“协作语义”

Agent-to-Agent Protocol

A2A 更像是:“Agent 之间在干什么?”

比如:

{
  "type": "task",
  "goal": "write code"
}

或者:

{
  "type": "feedback",
  "score": 0.8
}

它关注的是:

  • task delegation

  • collaboration pattern

  • roles(planner / coder / critic)


4.1.2 ACP:定义“消息怎么走”

Agent Communication Protocol

ACP 更像:“这条消息怎么被可靠地送过去?”

比如:

{
  "header": {
    "message_id": "123",
    "sender": "agent_A",
    "receiver": "agent_B",
    "timestamp": "...",
    "retry": 2
  },
  "body": {
    "type": "task",
    "payload": {...}
  }
}

它关注的是:

  • message envelope

  • routing / addressing

  • reliability(retry / timeout)

  • tracing(correlation_id)

4.1.3 关键区别

维度

A2A

ACP

关注点

“做什么”

“怎么传”

抽象层

高(语义)

低(通信)

是否必须

❌(简单系统可省)

✅(分布式必须)

在 LangGraph 中

graph edges

state + runtime

总结

就是酱紫!

        ┌───────────────┐
        │   A2A(协作) │  ← 高层语义(任务、角色)
        ├───────────────┤
        │   ACP(通信) │  ← 传输规范(message format)
        ├───────────────┤
        │   MCP(工具) │  ← 外部能力调用
        └───────────────┘

一句话:MCP 管“用工具”,A2A 管“干什么”,ACP 管“怎么传”

  1. MCP = 让 AI 调用工具(AI → Tool)

  2. A2A = 让 AI 分工协作(Agent → Agent,语义层)

  3. ACP = 让 AI 可靠通信(Agent → Agent,通信层)

参考

[1] ChatGPT

立志做一个有趣的碳水化合物。