LLM - AI大模型应用集成协议三件套 MCP、A2A与AG-UI
文章目录
- 1. 引言:背景与三协议概览
- 2. MCP(Model Context Protocol)
- 起源与动因
- 架构与规范要点
- 开发实践
- 3. A2A(Agent-to-Agent Protocol)
- 起源与动因
- 架构与规范要点
- 开发实践
- 4. AG-UI(Agent-User Interaction Protocol)
- 起源与动因
- 架构与规范要点
- 开发实践
- 5. 对比与组合使用建议
- 6. 如何落地

1. 引言:背景与三协议概览
随着大模型(LLM)从单一问答工具逐步演进到具备自主决策能力的Agent,开发者面临三大痛点:
- 外部资源集成困难(M×N 适配挑战)
- 多 Agent 协作通信缺乏统一标准
- 前端 UI 与后端 Agent 交互混乱多样
为了解决上述问题,业界先后推出了三套开放协议:
- MCP:模型 ↔ 工具/资源 的统一“USB-C”接口
- A2A:Agent ↔ Agent 的“网络协议”
- AG-UI:Agent ↔ 用户界面 的“翻译官”
2. MCP(Model Context Protocol)
起源与动因
- M×N 集成难题:不同模型(M)要接入不同工具或数据源(N),往往需要自己实现 M×N 套适配。
- 解决方案:Anthropic 于 2024 年 11 月开源 MCP,将各种工具/数据源封装成符合协议的 Server,模型端只需一套 Client 即可接入所有资源。
架构与规范要点
-
客户端–服务器模式
- MCP Client:嵌入到 LLM 应用中,负责发起请求。
- MCP Server:将工具、数据库或 API 封装成轻量服务,暴露统一接口。
-
协议标准化内容
- 传输层:JSON-RPC / HTTP / SSE
- 消息格式:请求/响应、批量处理、工具注解等
- 安全与授权:API Key、OAuth2 等
开发实践
-
编写 MCP Server
- 使用官方 SDK(Python/JS/Go/Java)或直接按照规范实现 HTTP 接口。
- 定义工具元数据(名称、输入输出 schema、权限要求)。
-
在 LLM 应用中调用
- 引入 MCP Client,加载各 Server 的“描述文件”(类似 USB-C 的 PD 协商)。
- 发起工具调用请求,处理返回结果。
-
最佳实践
- 批量模式:合并多次调用减少网络延迟
- Streamable HTTP:实时返回流式输出
- 工具注解:丰富命令与参数说明,提高调用准确度
3. A2A(Agent-to-Agent Protocol)
起源与动因
- 多 Agent 协作:在复杂业务场景中,往往需要不同智能体互相分工、串联工作。
- 信息孤岛:缺乏统一协议时,不同厂商或框架的 Agent“各说各话”,难以互通。
- 发布:Google 在 2025 年 4 月 Cloud Next 大会上开放 A2A,目标打造 AI Agent 的“TCP/IP”。
架构与规范要点
-
Agent Card:每个 Agent 对外的“名片”,包含名称、版本、端点 URL、可用技能、认证方式。
-
双向客户端–服务端角色:
- 发起方 Agent 扮演 Client
- 接收方 Agent 扮演 Server
- 同一个 Agent 可动态切换角色
-
任务模型与流程:
submitted
→ 2.working
→ (可能input-required
)→ 3.completed
或failed
- 支持异步通知、回调、状态查询
-
交换内容:
- 消息:文本、文件、结构化数据
- 工件:最终结果对象
开发实践
-
实现 A2A Server
- 准备 Agent Card 文档(JSON 格式),托管在可访问的端点。
- 实现标准接口:接收任务、查询状态、推送回调。
-
调用其他 Agent
- 发现并下载目标 Agent’s Card
- 发起 HTTP 请求到其任务接口
- 处理异步通知或轮询结果
-
工具与框架
- 官方 SDK:Python/JS/Go/Java
- Demo 项目:配置式开启 A2A 支持
4. AG-UI(Agent-User Interaction Protocol)
起源与动因
- UI 适配纷繁:聊天面板、助手插件、Web 应用,各自接口和消息格式不一致,开发成本高,用户体验差。
- 发布:CopilotKit 团队 2025 年 5 月开源 AG-UI,将前后端交互抽象为事件流。
架构与规范要点
-
事件驱动:定义标准事件类型(文本消息、工具调用、状态更新、用户输入等),前后端通过流式通道(WebSocket/SSE)收发事件。
-
双向协作:
- Agent 发出事件,前端渲染 UI
- 用户动作产生事件,后端 Agent 响应
-
灵活传输:不绑定具体协议,保证事件格式一致即可。
开发实践
-
接入 SDK
- Python 或 TS/JS SDK,封装底层事件通道。
- CopilotKit:快速集成示例,内置常用组件。
-
前端构建
- 订阅事件流,按事件类型渲染消息、控件、进度等。
- 发送用户操作事件(点击、输入、选择)。
-
优化建议
- 事件分组:将相关事件打包发送,减少频繁交互
- 重试机制:连接断开时自动重连
- UI 组件库:统一样式与行为
5. 对比与组合使用建议
协议 | 解决场景 | 典型用法 | 推荐组合 |
---|---|---|---|
MCP | 模型接入工具/数据源 | URL+API Key 嵌入 LLM 应用 | 与 A2A 联动:自动调用工具后再交给其他 Agent |
A2A | 多 Agent 间协作 | Agent Card + 异步任务流程 | 与 AG-UI 联动:前端触发多 Agent 协作 |
AG-UI | Agent 与用户界面实时、结构化交互 | 事件流通道 + UI 组件 | 同时接入 MCP:用户触发工具调用 |
6. 如何落地
- 评估需求:先确定项目是单模型调用外部资源(MCP)、多 Agent 协作(A2A)还是复杂前端交互(AG-UI)。
- 分步实施:建议先引入 MCP,完成资源接入;再逐步拆分多 Agent 逻辑,用 A2A 构建微服务式智能体;最后以 AG-UI 打通人机交互环节。
- 选用框架/SDK:优先使用官方 SDK 或成熟开源项目,如 LangGraph、Google ADK、CopilotKit,减少底层实现成本。
- 测试与监控:设计完整的端到端测试用例,监控协议调用延迟、消息丢失、错误恢复等指标。