多智能体协作的“通用语“:MCP + A2A 协议栈实战解析
多智能体协作的通用语MCP A2A 协议栈实战解析![多智能体协作](https://picsum.photos/seed/17860690546182/800/400)2026 年大模型竞争的主战场正在从单模型能力转向多智能体协作。当中国日均词元调用量突破 140 万亿、AI Agent 从演示走向生产环境时一个关键问题浮出水面**来自不同厂商、运行在不同框架上的智能体如何像人类团队一样分工协作** 答案就是 MCP 与 A2A 组成的分层协议栈——MCP 给智能体动手能力A2A 给智能体社交网络。一、为什么需要协议栈回顾 2025 到 2026 年的演进脉络MCPModel Context Protocol模型上下文协议由 Anthropic 于 2024 年底开源迅速成为智能体连接工具与数据的事实标准2025 年 4 月Google 联合 50 企业发布 A2AAgent2Agent协议专攻智能体之间的互联互通。到了 2026 年两者已经形成稳定互补• **MCP**解决智能体 → 工具/数据的单向能力扩展问题• **A2A**解决智能体 ↔ 智能体的双向协作问题• **OpenAPI 认证**解决身份与授权问题凭证通过标准 HTTP Header 传递协议本身与认证机制解耦。打个比方MCP 是给每个智能体装上手A2A 是让这些智能体彼此开口说话。没有 MCP 的智能体是残疾人没有 A2A 的智能体是孤岛。二、MCP给智能体动手能力MCP 采用经典的Host / Client / Server三层架构。Host如 Claude Desktop、Cursor、自研应用中嵌入 MCP Client通过 JSON-RPC 2.0 与 MCP Server 通信。Server 暴露三类核心原语Tools可执行动作、Resources可读取数据、Prompts可复用提示词。下面是一个极简的 MCP Server 示例Python使用官方 SDKfrom mcp.server.fastmcp import FastMCP mcp FastMCP(order-service) mcp.tool() def query_order(order_id: str) - str: 查询订单状态模拟工具 status_map {A1001: 已发货, A1002: 待支付} return status_map.get(order_id, 订单不存在) mcp.tool() def calc_shipping(weight_kg: float, express: str standard) - float: 计算运费standard 8元/首重express 15元/首重 base 8.0 if express standard else 15.0 extra max(0.0, weight_kg - 1.0) * 2.0 return round(base extra, 2) if __name__ __main__: mcp.run(transportstdio) # 支持 stdio / sse / streamable-http客户端侧一个 Agent 可以同时挂载多个 MCP Server像拼积木一样获得查订单 算运费 查物流等能力from mcp import ClientSession, StdioServerParameters from mcp.client.stdio import stdio_client async def call_tool(server_cmd, tool_name, args): params StdioServerParameters(commandserver_cmd[0], argsserver_cmd[1:]) async with stdio_client(params) as (read, write): async with ClientSession(read, write) as session: await session.initialize() result await session.call_tool(tool_name, argumentsargs) return result.content[0].text # 同一个 Agent 同时使用多个工具 print(await call_tool([python, order_server.py], query_order, {order_id: A1001})) print(await call_tool([python, order_server.py], calc_shipping, {weight_kg: 3.2}))MCP 生态在 2026 年已经极其繁荣从 GitHub、Slack 到 Elasticsearch主流 SaaS 纷纷提供官方 MCP Server远程 MCPstreamable-http支持也让客户端连远程工具成为常态。这正是词元经济落地的基础设施——模型负责想MCP 负责做。三、A2A给智能体社交网络如果说 MCP 是人与工具的契约A2A 就是智能体之间的社交协议。它基于 HTTP/1.1 或 HTTP/2 JSON-RPC 2.0 SSEServer-Sent Events核心概念只有四个1.Agent Card智能体的名片JSON 格式声明自己是谁、能干什么、认证方式2.Task任务对象携带状态机submitted → working → input-required → completed / failed3.Message / Part / Artifact消息与产物支持文本、图片、表单等多模态4.Streaming / Push Notification面向长任务的实时进度推送。先看一张名片——Agent Card 长什么样{ name: reservation-agent, description: 处理餐厅订座、改签与取消, url: https://agents.example.com/reservation, version: 1.0.0, capabilities: { streaming: true, pushNotifications: true, stateTransitionHistory: true }, security: { schemes: [bearer] }, skills: [ { id: book_table, name: 在线订座, description: 按人数、时间与偏好预订餐厅桌位 } ], defaultInputModes: [text/plain], defaultOutputModes: [text/plain, application/json] }再写一个极简的 A2A ServerFastAPI 实现 tasks/send 端点from fastapi import FastAPI, Request from pydantic import BaseModel app FastAPI() BOOKINGS: dict[str, str] {} class TaskSendRequest(BaseModel): id: str message: dict metadata: dict {} app.get(/.well-known/agent.json) def agent_card(): return { name: reservation-agent, description: 处理订座请求, url: https://agents.example.com/reservation, version: 1.0.0, capabilities: {streaming: False}, } app.post(/tasks/send) async def tasks_send(req: TaskSendRequest): parts req.message.get(parts, []) text .join(p.get(text, ) for p in parts) # 解析意图book/cancel if 订 in text and 座 in text: task_id ftask-{req.id} BOOKINGS[task_id] 已预订 4 人桌今晚 19:00 return { id: task_id, status: {state: completed}, artifacts: [{parts: [{text: BOOKINGS[task_id]}]}], } return {id: req.id, status: {state: failed}, statusMessage: 无法识别的意图}客户端智能体只需把请求 POST 过去就能把订座这件事委托出去——不需要知道对方是用 LangChain、ADK 还是自研框架写的。四、实战MCP A2A 分层协同在真实系统里两者是分层配合而非二选一。以一个智能客服工单系统为例用户提问 │ ▼ ┌─────────────┐ A2A(JSON-RPCSSE) ┌─────────────────┐ │ 主控 Agent │ ──────────────────► │ 订单 Agent │ │ (orchestrator)│ ◄────────────────── │ (MCP: 查订单/退款) │ └──────┬──────┘ └─────────────────┘ │ MCP (工具调用) ▼ ┌─────────────────┐ │ CRM / 物流 / 知识库 │ └─────────────────┘主控 Agent 的伪代码清晰展示了这种脑手分离async def handle(user_msg: str): # 1) 本地判断是否需要求助其他智能体 if 订单 in user_msg: # 2) A2A委托给订单 Agent远程协作 resp await a2a_send(https://agents.example.com/order, user_msg) return resp.artifacts[0].parts[0].text # 3) MCP本地调用工具查询知识库 docs await mcp_call_tool(kb-server, search, {q: user_msg}) return f根据知识库{docs} # A2A 客户端最小实现 async def a2a_send(agent_url: str, text: str): payload { id: uuid4().hex, message: {role: user, parts: [{text: text}]}, metadata: {}, } async with httpx.AsyncClient() as client: r await client.post(f{agent_url}/tasks/send, jsonpayload) return TaskResponse.model_validate(r.json())Google ADKAgent Development Kit已经原生支持在 A2A Agent 里挂载 MCP 工具Elasticsearch 官方也给出了LLM Agent 新闻室的完整参考实现——一个记者 Agent 通过 A2A 把稿件交给编辑 Agent编辑再通过 MCP 调用 Anthropic 分析内容。协议栈的价值在于每个团队只维护自己的智能体全局却像一个团队在运转。五、挑战与展望协议有了工程化才刚刚开始2026 年最受关注的是三个问题1.安全与信任英国 AI 安全研究所 8 月发布的报告显示测试中 AI 智能体出现了 19 项超出设定范围的自主行为。多智能体放大了攻击面——A2A 必须与 OAuth2/JWT 结合且对每个请求做鉴权与审计2.可观测性跨智能体的链路追踪trace、任务状态机与成本归因需要一套类似 OpenTelemetry 的标准3.协议生态之争MCP、A2A、AGNTCY思科主导仍在争夺生态位短期内分层兼容是最务实的策略——MCP 管工具、A2A 管协作二者都基于 JSON-RPC/HTTP迁移成本极低。可以预见未来 12 个月我们会看到更多智能体团队进入生产科研场景里检索智能体数秒出结果、模拟智能体跑数天任务并实时推送进度企业场景里主控 专家的架构成为标配。就像 TCP/IP 定义了互联网设备如何互联MCP A2A 正在定义 AI 智能体如何协作——这是词元经济时代最重要的基础设施。总结| 维度 | MCP | A2A || --- | --- | --- || 定位 | 智能体 ↔ 工具/数据 | 智能体 ↔ 智能体 || 提出方 | Anthropic | Google 及 50 伙伴 || 通信 | JSON-RPC 2.0 | JSON-RPC 2.0 SSE || 核心概念 | Tools / Resources / Prompts | Agent Card / Task / Message || 典型场景 | 数据库、API、知识库接入 | 任务委托、跨厂商协作 |动手建议先用 FastMCP 十分钟写一个工具 Server再用 FastAPI 搭一个 A2A Agent Card最后让两个 Agent 互相委托任务——你会在一个下午感受到智能体从单兵到军团的质变。欢迎在评论区分享你的多智能体踩坑经历本文基于 2026 年 8 月公开技术资料撰写示例代码可在本地 Python 3.10 环境运行。

相关新闻

fastBPE在Mac OSX上的安装与配置:解决编译难题的实用技巧

fastBPE在Mac OSX上的安装与配置:解决编译难题的实用技巧

fastBPE在Mac OSX上的安装与配置:解决编译难题的实用技巧 【免费下载链接】fastBPE Fast BPE 项目地址: https://gitcode.com/gh_mirrors/fa/fastBPE fastBPE是一款高效的C实现的子词单元处理工具,广泛应用于神经机器翻译中稀有词处理场景。本文将…

2026/8/7 14:08:41 阅读更多 →
AM与FM调制解调原理详解:从载波到信号的工程实践

AM与FM调制解调原理详解:从载波到信号的工程实践

1. 从“载波”到“信息”:模拟调制的核心逻辑 如果你拆开一台老式收音机,或者观察过早期的对讲机电路板,会发现一个有趣的现象:它们处理声音信号的方式,和我们今天熟悉的数字设备截然不同。我们今天要聊的AM&#xff0…

2026/8/7 14:08:41 阅读更多 →
SpringBoot+Vue社团管理系统实战与优化

SpringBoot+Vue社团管理系统实战与优化

1. 项目概述:当社团管理遇上前后端分离 去年接手学校社团联合会信息化改造项目时,我面对的是20多个社团还在用Excel登记成员信息、微信群发活动通知的原始状态。这套基于SpringBootVue的社团管理系统,最终将招新效率提升300%,活动…

2026/8/7 14:08:41 阅读更多 →

最新新闻

深度解析Shizuku:解锁Android非root设备系统级权限的终极指南

深度解析Shizuku:解锁Android非root设备系统级权限的终极指南

深度解析Shizuku:解锁Android非root设备系统级权限的终极指南 【免费下载链接】awesome-shizuku Curated list of awesome Android apps making use of Shizuku 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-shizuku 你是否曾因Android系统的权限限…

2026/8/7 15:00:14 阅读更多 →
JPlag:学术诚信守护者,智能代码抄袭检测的终极解决方案

JPlag:学术诚信守护者,智能代码抄袭检测的终极解决方案

JPlag:学术诚信守护者,智能代码抄袭检测的终极解决方案 【免费下载链接】JPlag State-of-the-Art Source Code Plagiarism & Collusion Detection. Check for plagiarism in a set of programs. 项目地址: https://gitcode.com/gh_mirrors/jp/JPla…

2026/8/7 15:00:14 阅读更多 →
aardio与Python进程通信实现桌面端图像处理:管道通信与Base64数据交换详解

aardio与Python进程通信实现桌面端图像处理:管道通信与Base64数据交换详解

1. 项目概述:为什么要在 aardio 里调用 Python 处理图片? 如果你是一个桌面应用开发者,尤其是用 aardio 这种专注于 Windows 桌面快速开发的工具,你可能会遇到一个经典难题:aardio 自带的图形处理功能,对于…

2026/8/7 15:00:14 阅读更多 →
Avalonia跨平台开发环境配置全攻略:从.NET SDK到IDE实战

Avalonia跨平台开发环境配置全攻略:从.NET SDK到IDE实战

1. 项目概述:为什么是Avalonia? 如果你是从WPF、WinForms或者UWP过来的开发者,第一次听说Avalonia,可能会有点懵。简单来说,Avalonia是一个开源的、跨平台的.NET UI框架。它的目标很明确:让你能用熟悉的XA…

2026/8/7 15:00:14 阅读更多 →
VOS 8.05软交换平台源码编译与部署实战指南

VOS 8.05软交换平台源码编译与部署实战指南

1. 项目概述:从零构建一个企业级语音通信系统 最近在帮一个朋友的公司折腾他们的电话系统,他们之前用的老式PBX设备维护成本高、功能扩展困难,想换一套基于IP的现代化方案。聊了一圈,发现很多中小企业在语音通信这块都面临类似的痛…

2026/8/7 15:00:13 阅读更多 →
Element UI弹窗全屏化实战:从原理到避坑的完整解决方案

Element UI弹窗全屏化实战:从原理到避坑的完整解决方案

1. 项目缘起:一个看似简单却暗藏玄机的需求 最近在重构一个后台管理系统时,遇到了一个产品经理提出的“小需求”:希望某个数据量巨大的报表预览弹窗能支持全屏查看,方便用户更专注地分析数据。这个需求听起来合情合理,…

2026/8/7 14:59:13 阅读更多 →

日新闻

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy 想要将Android手机屏幕完美投射到电脑上,享受大屏操作的自…

2026/8/7 0:00:19 阅读更多 →
如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南 【免费下载链接】tom-select Tom Select is a lightweight (~16kb gzipped) hybrid of a textbox and select box. Forked from selectize.js to provide a framework agnostic autocomplete widget wi…

2026/8/7 0:00:19 阅读更多 →
5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件 【免费下载链接】nsz NSZ - Homebrew compatible NSP/XCI compressor/decompressor 项目地址: https://gitcode.com/gh_mirrors/ns/nsz 你是否在为Nintendo Switch游戏文件占用大量存储…

2026/8/7 0:00:19 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/6 22:02:27 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/6 22:02:28 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →