Skip to content

MCP 协议和 A2A 协议如何协同工作?请设计一个同时使用两者的多 Agent 系统架构 ​

  • 标签:AI、大模型、Agent

🏛 业务架构师 ​

设计一个 MCP+A2A 协同的多 Agent 架构,我以"智能采购 Agent"为例讲清楚分工:

架构分层:

  1. 工具层(MCP):企业内部系统统一封装为 MCP Server——ERP Server(库存/订单)、合同 Server、审批流 Server、知识库 Server,注册到 MCP 网关(统一鉴权、审计、限流)。所有 Agent 不直连业务系统,一律走 MCP——内部集成标准化。
  2. Agent 层(内部多 Agent):采购 Agent 内部按职能拆分——需求分析 Agent、供应商比价 Agent、合同审查 Agent,通过编排框架(LangGraph 类)协作,共享企业内信任域(同一身份体系、同一审计链)。
  3. 协作层(A2A):对外——供应商的报价 Agent、物流公司的调度 Agent 通过 A2A 协议互联:本方 Agent 发布 Agent Card 声明采购需求受理能力,也拉取对方 Card 发现"谁能报价";询价以 Task 下发,长任务异步等结果,报价以 Artifact(结构化报价单)回收。跨企业边界,各自保留内部系统的完全私有。
  4. 治理层贯穿:对外交互走 A2A 网关(身份互信、审计、敏感数据出域管控);对内工具调用走 MCP 网关。

关键设计原则:内部用 MCP 求深度集成与管控,外部用 A2A 求松耦合互信——协议边界即信任边界。这个架构的业务价值:新增一家供应商只需对方发布 Agent Card,集成成本从"月级项目"降到"天级配置",这就是协议标准化带来的生态杠杆。

🏗 系统架构师 ​

设计 MCP + A2A 协同的多 Agent 系统,我给出一个客服中台的参考架构(四层):

第一层:统一接入与网关

  • 渠道网关:Web/App/IM 消息接入,鉴权、限流、幂等;
  • 协议网关双面:对外暴露 A2A 端点(供外部 Agent 委托任务),对内管理 MCP Server 注册(内部能力收口:鉴权、审计、限流)。

第二层:编排 Agent(A2A 的消费者与提供者)

  • 主编排 Agent 接收用户意图,拆解任务;
  • 判断"自己做"还是"委派":领域任务(退款审核、技术诊断)通过 A2A 委托给领域 Agent——读它的 Agent Card(/.well-known/agent.json)确认能力,创建 A2A Task(长任务状态机:working → completed,SSE 收 Artifact);
  • 对外:本平台的"工单处理 Agent"也发布 Agent Card,供生态伙伴委托。

第三层:领域 Agent 集群(各自独立)

  • 每个领域 Agent(财务/技术/物流)独立部署:自己的 LLM 选型、自己的 System Prompt 与记忆;
  • 内部用 MCP 连接能力:MCP Server 封装 ERP、工单库、知识库、短信网关——工具调用、资源读取走 MCP 原语(tools/call、resources/read);
  • 领域 Agent 之间也可 A2A 互调(技术诊断 Agent 发现需要财务数据 → A2A 委托财务 Agent)。

第四层:治理与观测(横切)

  • 全链路 trace:用户请求 → A2A task_id → MCP tool 调用 ID 贯穿;
  • 安全:A2A 走 OAuth2 服务间认证,MCP 工具分级权限 + 高危审批;
  • 长任务管理:A2A 异步任务的超时、补偿、幂等由编排层统一。

设计要点总结:A2A 管 Agent 间委托(粗粒度、异步、状态机),MCP 管 Agent 内工具(细粒度、同步、能力原语)——两条协议各守一层,绝不混用。

💻 全栈开发专家 ​

我设计过一个类似架构(客服中台),MCP 管垂直工具连接、A2A 管水平协作:

架构分层:

用户 → 统一入口 Gateway(路由/鉴权/幂等)
        │
        ▼
   编排 Agent(Planner,不直接干活)
    ├─A2A─→ 退款 Agent ──MCP──→ 订单库 / 支付系统 / 通知服务
    ├─A2A─→ 物流 Agent ──MCP──→ 物流API / 地图 / 短信
    └─A2A─→ 知识 Agent ──MCP──→ 向量库 / ES / CMS

运行流程(「帮我退款并告诉我什么时候到账」):

  1. Gateway 鉴权路由到编排 Agent;
  2. 编排 Agent 分解任务:退款执行(委托退款 Agent)+ 到账时效查询(可并行的委托);
  3. 通过 Agent Card 发现各领域 Agent 的能力(退款技能、refund:write scope),OAuth 2.1 拿 token;
  4. A2A message/stream 委托任务,退款 Agent 内部循环:MCP 查订单(只读工具直接执行)→ MCP 调支付退款(写工具,过自己的策略管道,人工确认阈值内自动执行)→ Task completed 返回 Artifact(退款单号、预计到账时间);
  5. 编排 Agent 汇总两个结果生成最终回复;全程 trace_id 贯穿。

关键设计决策:

  • 编排层无工具:Planner 只做分解和委派,避免上下文膨胀;
  • 权限按层收窄:编排 Agent 只有委托权;执行 Agent 的 MCP 工具权限各自最小化(退款 Agent 碰不到物流写入);
  • A2A 任务异步化:长任务(人工审核退款)走 input-required 状态挂起,webhook 回调续传;
  • 失败域隔离:单个 Agent 故障,编排层降级(换 Agent 或转人工),不雪崩。