MCP / A2A / ACP 协议解析-Day31
一、为什么需要 Agent 开放协议1.1 问题Agent 生态的巴别塔困境在 2024~2025 年多 Agent 系统面临一个根本问题每个框架都有自己的内部通信协议。LangGraph Agent 只能与 LangGraph Agent 对话AutoGen Agent 只能与 AutoGen Agent 对话跨框架、跨供应商、跨云只能写胶水代码。这种碎片化导致每对 Agent 之间的集成都是定制合约维护负担随 Agent 数量非线性增长跨组织协作几乎不可能1.2 解决方案分层协议栈2026 年的行业共识已形成清晰的两层模型协议解决的问题类比MCPAgent 如何连接工具和数据源USB-C for AI ToolsA2AAgent 如何与其他 Agent 协作HTTP for AI AgentsCommerceAgent 如何完成商业交易支付网关 for AI二、MCPModel Context Protocol2.1 概述MCP 由 Anthropic 于 2024 年 11 月发布是当前最成熟的 Agent-to-Tool 连接标准。2026 年 7 月 28 日发布了最新规范版本已被 Anthropic、OpenAI、Google、Microsoft 等主流厂商原生支持。2.2 核心架构Host-Client-Server 模型MCP 采用三层架构┌─────────────────────────────────────────┐ │ MCP Host (AI Application) │ │ Claude Desktop / Cursor / ChatGPT │ ├─────────────────────────────────────────┤ │ MCP Client #1 │ MCP Client #2 │ │ (per server) │ (per server) │ │ manages conn │ manages conn │ ├─────────────────────────────────────────┤ │ MCP Server #1 │ MCP Server #2 │ │ - Tools │ - Tools │ │ - Resources │ - Resources │ │ - Prompts │ - Prompts │ └─────────────────────────────────────────┘关键设计原则1 Host : N Clients : N Servers一个 Host 可连接多个 Server每个 Client 只管理一个 Server 的连接JSON-RPC 2.0所有请求、响应、通知统一使用 JSON-RPC 2.0 格式传输无关支持 STDIO本地进程和 Streamable HTTP远程/共享部署2.3 核心原语原语说明示例ToolsAgent 可调用的函数query_db,send_email,search_webResourcesAgent 可读取的数据源file://,db://,api://Prompts预定义的提示模板系统提示、少样本示例Sampling允许 Server 请求 Host 进行 LLM 推理Server 可回呼 Host 的模型2.4 传输层传输方式适用场景特点STDIO本地进程如 Claude Desktop 插件简单、无网络开销、生命周期绑定Streamable HTTP远程/共享部署支持 SSE 流式、可跨网络、可负载均衡2.5 企业级扩展2026-07-28 规范2026 年 7 月的规范更新引入了多项企业级特性扩展说明Scoped Authorization企业级作用域授权替代 per-user OAuth redirectMCP Gateway单一入口点提供发现、路由和权限范围的工具可见性Async Tasksio.modelcontextprotocol/tasks扩展支持长时间运行的异步任务Server 四层架构Interface → Application → Domain → Infrastructure2.6 实战示例# 使用 MCP Python SDK 连接 ServerfrommcpimportClientSession,StdioServerParametersfrommcp.client.stdioimportstdio_client# 1. 定义 Server 参数本地进程server_paramsStdioServerParameters(commandpython,args[mcp_server.py],envNone)# 2. 建立连接asyncwithstdio_client(server_params)as(read,write):asyncwithClientSession(read,write)assession:# 3. 初始化awaitsession.initialize()# 4. 发现可用工具toolsawaitsession.list_tools()print(fAvailable tools:{[t.namefortintools.tools]})# 5. 调用工具resultawaitsession.call_tool(query_db,arguments{sql:SELECT * FROM users LIMIT 10})print(result.content)三、A2AAgent-to-Agent Protocol3.1 概述A2A 由 Google 于 2025 年 4 月发布2025 年 6 月捐赠给 Linux Foundation。2026 年 4 月 Google Cloud Next 大会上发布v1.0标志着协议进入生产就绪阶段。截至 2026 年已有150 组织支持包括 AWS、Microsoft、IBM、Salesforce、SAP、ServiceNow。3.2 核心设计哲学A2A 的设计假设是对面的 Agent 由别人构建使用不同技术栈可能位于不同公司你看不到它的内部。这意味着不共享内存Agent 之间不共享内部状态不共享工具每个 Agent 维护自己的 MCP 工具连接一切通过消息传递所有信息必须通过结构化消息交换3.3 三层规范架构A2A v1.0 规范分为三层┌─────────────────────────────────────────┐ │ Layer 3: Protocol Bindings │ │ JSON-RPC 2.0 over HTTPS (primary) │ │ gRPC with Protocol Buffers │ │ HTTP/JSON/REST │ ├─────────────────────────────────────────┤ │ Layer 2: Operations │ │ SendMessage, SendStreamingMessage │ │ GetTask, ListTasks, CancelTask │ │ SubscribeToTask, push-notification │ │ Agent Card retrieval │ ├─────────────────────────────────────────┤ │ Layer 1: Data Model │ │ AgentCard, AgentSkill, Task, Message │ │ Part, Artifact, Extension │ │ (Protocol Buffers JSON Schema) │ └─────────────────────────────────────────┘3.4 核心原语Agent Card能力名片每个 Agent 在/.well-known/agent.json发布自己的能力描述{name:billing-agent,description:Handles invoice and refund queries,url:https://billing.example.com/a2a,version:1.0.0,skills:[{id:invoice_check,name:Check Invoice Status,description:Query invoice payment status by ID,inputSchema:{type:object,properties:{invoiceId:{type:string}}}},{id:refund,name:Process Refund,description:Initiate refund for paid invoice,inputSchema:{type:object,properties:{invoiceId:{type:string},reason:{type:string}}}}],authentication:{type:oauth2,authorizationEndpoint:https://auth.example.com/oauth/authorize}}Task任务Task 是 A2A 的核心工作单元具有完整的状态生命周期状态说明submitted任务已提交等待处理workingAgent 正在处理中input-requiredAgent 需要额外输入才能继续completed任务成功完成canceled任务被取消failed任务执行失败Message Part消息与片段Task ├── Message (turn-based conversation) │ ├── Part (text) │ ├── Part (file) │ └── Part (data) └── Artifact (structured output) ├── Part (text) ├── Part (file) └── Part (data)3.5 v1.0 的关键安全增强A2A v1.0 最重要的安全特性是Signed Agent Cards使用JSON Web Signature (JWS)对 Agent Card 进行数字签名接收方可以验证卡片确实由域名所有者签发防止卡片伪造攻击attacker 架设假 Agent Card 重定向流量3.6 实战示例# A2A Python SDK 示例froma2aimportA2AClient,TaskSendParams# 1. 创建客户端自动发现 Agent CardclientA2AClient(https://billing.example.com)# 2. 查看 Agent 能力print(client.agent_card.skills)# [Skill(idinvoice_check, ...), Skill(idrefund, ...)]# 3. 发送任务taskclient.send_task(TaskSendParams(idtask-001,message{role:user,parts:[{type:text,text:Check invoice INV-12345}]}))# 4. 流式接收结果SSEforupdateinclient.send_task_streaming(task.id):print(fStatus:{update.status.state})ifupdate.status.message:print(fOutput:{update.status.message.parts[0].text})四、ACP (IBM)已合并入 A2A 的历史4.1 起源ACPAgent Communication Protocol由 IBM 的 BeeAI 团队于 2025 年初开发是一个轻量级的、REST-based 的 Agent 通信标准。它定义了 Agent-to-Agent、Agent-to-Application 和 Agent-to-Human 的通信模式。4.2 合并事件2025 年 8 月ACP 与 A2A 合并合并原因两者解决的是高度重叠的问题Agent 间通信合并避免生态碎片化BeeAI 平台现在运行在 A2A 之上4.3 ACP 的设计遗产虽然 ACP 不再独立演进但其设计影响了合并后的 A2AACP 特性对 A2A 的影响REST-first 设计A2A 增加了 HTTP/JSON/REST BindingBuild-time Manifest演化为 A2A 的 Agent CardMIME-typed Message Parts成为 A2A Part 模型的基础Agent-to-Human 通信纳入 A2A 的input-required状态结论对于新系统直接构建在 A2A 上即可无需考虑独立的 ACP。五、Commerce ProtocolsAgent 商业交易层除了工具连接和 Agent 协作2026 年还涌现了专门解决Agent 自主商业交易的协议层。5.1 三层商业协议栈协议发起方解决的问题类比UCPGoogle商品发现、比较、展示商品目录 APIACPOpenAI Stripe结账流程、支付执行购物车 结账AP2Google → FIDO支付授权、用户同意证明支付网关这三层是互补而非竞争UCP 发现商品 → ACP 完成结账 → AP2 证明授权。5.2 ACP (Agentic Commerce Protocol)由 OpenAI 和 Stripe 共同维护目前处于 Beta 阶段核心机制Agent 使用委托支付令牌delegated payment token代替原始卡号连接买家 Agent、商家和支付网络Stripe 的 Agentic Commerce Suite 已基于此协议运行5.3 AP2 (Agent Payments Protocol)Google 于 2025 年 9 月发布2026 年 4 月 28 日捐赠给FIDO Alliance核心机制Verifiable Credentials可验证的数字凭证Cryptographic Mandates密码学授权指令创建防篡改的同意证明确保 Agent 只能在用户明确授权的范围内消费5.4 卡网络层Visa 和 Mastercard 在协议之上提供接受层产品功能Visa Intelligent Commerce Connect协议无关的接入层同时接受多种 Agent 标准Mastercard Agent Pay机器对机器交易的支付凭证系统Visa Trusted Agent Protocol验证 Agent 身份与 Cloudflare 合作六、生态整合Linux Foundation Agentic AI Foundation6.1 治理统一2026 年初Linux Foundation 成立了Agentic AI Foundation统一管理 MCP、A2A含 ACP的治理这意味着协议不再是单一公司的私有接口采用类似 Kubernetes、gRPC 的多利益相关方治理模式采购和合规团队可以像对待其他基础设施工具一样对待这些协议6.2 当前协议状态总览协议治理机构状态新系统建议MCPLinux Foundation Agentic AI FoundationActive工具集成主导标准✅ 用于 Agent-Tool 连接A2ALinux Foundation Agentic AI FoundationActive已吸收 ACP✅ 用于 Agent-Agent 协作ACP (IBM)已合并Merged into A2A (Aug 2025)❌ 不再独立演进ACP (Commerce)OpenAI StripeBeta用于 Agent 购物结账AP2FIDO Alliancev0.2用于支付授权七、MCP vs A2A选型决策框架7.1 核心差异维度MCPA2A关系类型垂直一个 Agent 连接多个工具水平多个 Agent 相互协作信任边界通常在同一组织或单一供应商内设计用于跨越组织边界通信模型Client-ServerPeer-to-Peer身份原语OAuth client credentialsSigned Agent Cards (JWS)消息内容工具调用、资源读取、提示模板任务委托、消息交换、产物传递7.2 选型决策树你的场景是什么 ├── Agent 需要查询数据库 / 调用 API / 读取文件 │ └── 使用 MCP │ ├── 两个 Agent 需要协作完成一个任务 │ └── 使用 A2A │ ├── Agent 既需要工具又需要与其他 Agent 协作 │ └── 同时使用 MCP A2A │ └── A2A Agent 内部使用 MCP 调用自己的工具 │ └── Agent 需要帮用户完成购物 └── Commerce Protocols (ACP AP2 UCP)7.3 生产架构蓝图2026 年的最佳实践架构是双协议栈┌─────────────────────────────────────────┐ │ Orchestrator Agent │ │ (LangGraph / CrewAI / Custom) │ │ ┌─────────────┐ │ │ │ A2A Client │ ←──→ 其他 Agent │ │ └─────────────┘ │ ├─────────────────────────────────────────┤ │ ┌─────────────┐ ┌─────────────┐ │ │ │ MCP Client │ │ MCP Client │ │ │ │ → DB Server│ │ → Web Server│ │ │ └─────────────┘ └─────────────┘ │ │ ┌─────────────┐ ┌─────────────┐ │ │ │ MCP Client │ │ MCP Client │ │ │ │ → File Sys │ │ → API Server│ │ │ └─────────────┘ └─────────────┘ │ └─────────────────────────────────────────┘关键洞察跳过 MCP 直接上 A2A 的架构会得到连接良好但无数据感知的 Agent停在 MCP 不扩展 A2A 的架构会在需要跨供应商协作时遇到天花板。八、安全考量8.1 MCP 安全Context Poisoning2026 年 4 月研究显示被污染的 MCP 上下文可窃取.env密钥并触发文件删除建议对 MCP Server 进行代码审计限制 Resources 的访问范围使用 scoped authorization8.2 A2A 安全Agent Card 伪造v1.0 之前的版本存在卡片伪造风险解决方案v1.0 引入的 Signed Agent Cards 使用 JWS 签名验证域名所有权建议始终验证 Agent Card 的签名使用 TLS 1.3实施速率限制九、总结协议一句话定义2026 年状态MCPAgent 连接工具和数据的USB-C事实标准数千社区 ServerA2AAgent 之间协作的HTTP生产就绪150 组织支持ACP (IBM)已合并入 A2A 的 REST-based 前身不再独立演进ACP (Commerce)Agent 自主购物的结账协议BetaOpenAIStripe 维护AP2Agent 支付授权的密码学证明v0.2FIDO Alliance 治理最终建议先实施 MCP给你的 Agent 提供上下文和工具访问能力再添加 A2A当需要跨供应商或跨组织 Agent 协作时按需引入 Commerce当 Agent 需要自主完成商业交易时全部选择 Linux Foundation 治理的开放标准避免供应商锁定参考资源MCP 官方规范 (2026-07-28)A2A 官方规范 v1.0Linux Foundation Agentic AI FoundationAP2 FIDO AllianceStripe Agentic Commerce Suite