AI Agent 协议说明:MCP、A2A、ACP 与 AG-UI 到底解决什么问题
快速结论
MCP、A2A、ACP 和 AG-UI 不是彼此的直接替代品。它们解决的是 Agent 系统里不同边界的通信问题。
| 协议 | 主要问题 | 典型边界 |
|---|---|---|
| MCP | AI 应用如何连接工具、数据、prompt 和上下文 | Agent/宿主应用 到 工具/资源服务器 |
| A2A | 一个 Agent 如何把任务委派给另一个 Agent | Agent 到 Agent 的任务协作 |
| ACP | Agent 如何以互操作服务形式暴露能力 | Agent 服务互操作 |
| AG-UI | Agent 如何把状态和动作流式传给用户界面 | Agent 后端 到 前端 UI |
生产系统里,更好的问题不是“哪个协议会赢”,而是“我们要标准化哪一层边界”。
为什么 Agent 需要协议?
早期 Agent 系统通常把工具调用、UI 事件和多 Agent 委派都硬编码在一个应用里。原型阶段可以跑起来,但当工具、团队、供应商和前端越来越多时,这种方式会变得脆弱。
协议的价值是拆分职责:
- 工具和数据源可以独立暴露,不必重写 Agent。
- Agent 可以委派任务,而不暴露内部实现。
- 前端可以一致地渲染进度、工具调用和中间状态。
- 安全团队可以在清晰边界上做权限和审计。
关键是把协议放到正确边界上。
MCP:工具与上下文集成
MCP,即 Model Context Protocol,关注 AI 应用如何连接外部工具和上下文。它采用 client/server 模型,宿主应用可以发现和调用工具、读取资源、使用 prompt 模板。
适合使用 MCP 的场景:
- AI 应用需要查询数据库、文件系统、API、代码仓库或业务系统。
- 你希望工具服务器能被多个 Agent 客户端复用。
- 你需要标准化暴露资源和 prompt。
- 你希望工具 schema 和权限边界明确。
MCP 最强的边界是“Agent 调用工具”。它不是完整的多 Agent 编排协议,也不定义前端如何渲染 Agent 状态。
AI 应用 / Agent 宿主
-> MCP client
-> MCP server
-> 数据库、文件系统、API、内部工具
实现建议:
- 工具能力要窄而明确。
- 避免暴露过宽的写权限。
- 记录工具调用和参数。
- 把工具返回当成不可信输入处理。
- 修改行为时对工具 schema 做版本管理。
A2A:Agent 到 Agent 的任务协作
A2A,即 Agent-to-Agent,关注 Agent 之间如何协作。核心思路是一个 Agent 可以声明能力,并接收另一个 Agent 或编排器发来的任务。
适合使用 A2A 的场景:
- 多个专业 Agent 需要协作。
- 规划 Agent 需要把任务委派给专家 Agent。
- Agent 由不同团队或服务拥有。
- 长任务需要状态、产物和进度更新。
A2A 最强的边界是“Agent 把任务委派给另一个 Agent”。它不替代 MCP;一个 A2A Agent 内部仍然可以使用 MCP 调用工具。
编排 Agent
-> A2A 任务请求
-> 专家 Agent
-> 状态更新和产物
实现建议:
- 明确定义每个 Agent 可以做什么。
- Agent 返回内容必须校验后再使用。
- 设置超时和任务预算。
- 记录任务归属和交接历史。
- 避免循环委派。
ACP:可互操作的 Agent 服务
ACP 通常被理解为 Agent Communication Protocol 一类方案,目标是让 Agent 以服务形式被发现和调用。不同生态和实现可能不同,但设计目标类似:暴露 Agent 能力,让其他系统以可预测方式调用。
适合 ACP 风格方案的场景:
- 希望 Agent 像网络服务一样被调用。
- 能力发现很重要。
- 不同运行时或供应商需要互操作。
- 你需要服务边界,而不是进程内库调用。
ACP 和 A2A 在概念上可能有重叠。实际选型时,要评估具体实现:消息格式、认证、任务生命周期、流式能力、SDK 成熟度和治理方式。
AG-UI:Agent 到用户界面的事件流
AG-UI 关注前端边界。它标准化 Agent 后端如何把消息、工具调用、状态变化、进度和 UI 相关事件流式传给客户端。
适合使用 AG-UI 的场景:
- 你正在构建 copilot 或 assistant UI。
- 前端需要展示工具调用、中间步骤或实时进度。
- 用户需要在界面中审批动作。
- Agent 状态需要与 React、Vue 或其他 UI 框架同步。
AG-UI 最强的边界是“Agent 后端与 UI 通信”。它不定义 Agent 内部工作流,也不定义工具如何托管。
Agent 后端
-> 事件流
-> 前端 UI
-> 用户审批 / 输入
-> 后端恢复流程
实现建议:
- 保持事件类型稳定。
- 区分用户可见状态和内部机密。
- 处理重连和部分流。
- 用户审批要显式且可审计。
- 前端事件不能绕过后端权限检查。
它们如何组合?
这些协议通常是互补关系:
用户界面
<-> AG-UI 事件
Agent 应用 / 编排器
<-> A2A 或 ACP 做 Agent 协作
专家 Agent
<-> MCP 调用工具、资源和 prompt
业务系统
一个客服自动化系统可能使用:
- AG-UI 展示进度并请求用户确认。
- A2A 把退款审核委派给财务 Agent。
- MCP 调用订单、支付和工单工具。
一个开发助手可能使用:
- AG-UI 处理编辑器 UI 事件。
- MCP 连接代码仓库、终端、Issue 系统和文档。
- 只有需要委派外部专家 Agent 时才使用 A2A 或 ACP。
对比矩阵
| 维度 | MCP | A2A | ACP | AG-UI |
|---|---|---|---|---|
| 主要边界 | Agent 到工具/上下文 | Agent 到 Agent | Agent 服务互操作 | Agent 到 UI |
| 主要对象 | Tool、Resource、Prompt | Task、Message、Artifact | Capability、Agent、Message | Event、State、Tool action |
| 最适合 | 工具集成 | 委派和协作 | 跨 Agent 服务契约 | 交互式前端 |
| 替代应用逻辑? | 否 | 否 | 否 | 否 |
| 能否组合使用 | 可以 | 可以 | 可以 | 可以 |
| 主要风险 | 工具权限过大 | 委派无边界 | 实现分化或不成熟 | UI 状态/安全泄露 |
选型建议
选择 MCP,如果你的主要问题是让 AI 应用连接工具或数据,并希望工具服务器可复用、schema 明确。
选择 A2A,如果一个 Agent 需要把任务委派给另一个 Agent,且任务状态、进度和产物很重要。
选择 ACP 风格方案,如果 Agent 需要作为服务端点暴露,能力发现和跨运行时互操作是核心需求,并且你选择的具体实现足够成熟。
选择 AG-UI,如果你正在构建交互式 Agent 前端,用户需要看到进度、审批动作或查看中间步骤。
常见误区
把协议当框架
协议定义通信边界,不替代编排、评测、安全、部署和产品设计。
简单工具调用却引入多 Agent 协议
如果 Agent 只需要查数据库或调用 API,MCP 风格工具集成可能已经足够。不要为了复杂而引入委派。
暴露过大的工具能力
工具服务器应提供窄操作。除非环境高度受控,不要暴露“执行任意 SQL”或“执行任意 shell 命令”。
不校验 Agent 输出
Agent 间通信仍然需要校验。返回产物应当作待检查数据,而不是直接可信结果。
让前端事件变成权限
前端审批事件只是交互信号,不是安全控制本身。权限必须由后端执行。
生产检查表
| 领域 | 需要回答的问题 |
|---|---|
| 认证 | 谁可以调用协议端点? |
| 授权 | 哪些工具、Agent、任务或 UI 动作被允许? |
| 审计 | 能否还原谁请求了什么、发生了什么? |
| 超时 | Agent 或工具卡住时怎么办? |
| 预算 | 模型调用、工具调用和任务深度是否有限制? |
| 校验 | 输入输出是否有 schema 检查? |
| 可观测性 | UI、Agent、工具和任务边界的 trace 能否串起来? |
| 版本管理 | schema 变化时能否不破坏客户端? |
总结
MCP、A2A、ACP 和 AG-UI 更适合理解为边界协议。MCP 标准化工具和上下文,A2A 标准化 Agent 任务协作,ACP 风格方案关注 Agent 服务互操作,AG-UI 标准化交互式前端事件。成熟的 Agent 系统可能同时使用多个协议,但每个协议都应该只在它能让边界更清晰、更安全时引入。
本站提供浏览器本地工具,免注册即可试用 →