AI Agent 通信协议深度解析:从 MCP 工具互联到 A2A 多智能体协作(easy-vibe 实战视角)
【免费下载链接】easy-vibe从 0 到 1 学会 vibe coding,项目制学习项目地址: https://gitcode.com/datawhalechina/easy-vibe
::: tip 核心问题 AI Agent 如何与外部世界"对话"?正如互联网需要 HTTP 协议,AI Agent 同样需要标准化的通信协议。本文系统讲解当前最主流的两大 Agent 协议——MCP(Model Context Protocol)与 A2A(Agent-to-Agent Protocol),分别解决"AI 连接工具"与"Agent 间协作"两类问题,并结合 easy-vibe 仓库中的真实配置(如 config/mcporter.json)与配套实战课程(MCP 完整指南、Agent Teams 指南)给出可直接落地的方案。 :::
读完本文,你将掌握:协议的本质与价值、Agent 通信的三层结构、MCP 与 A2A 的完整原理与配置方法、两者的选型策略,以及它们在真实项目中的使用方式。
1. 协议(Protocol)是什么
在计算机领域,协议是一套标准化的规则与约定,让不同的系统与程序能够互相"理解"并"沟通"。
1.1 为什么需要协议
想象这样一个场景:你给朋友寄包裹需要写地址。如果每个人都用不同格式写地址,快递员将无法投递任何东西。协议就是定义"地址怎么写"的标准——省、市、区、街道、门牌号,按这个格式写,任何人都能看懂。
计算机同理。两个程序要通信,必须约定:
- 数据格式是什么?(JSON?还是二进制?)
- 如何建立连接?(握手流程)
- 出错时怎么办?(错误处理机制)
1.2 计算领域常见协议
| 协议 | 用途 | 你每天都在用 |
|---|---|---|
| HTTP | 网页传输协议 | 浏览器打开网页 |
| HTTPS | 加密版 HTTP | 网银、支付页面 |
| TCP/IP | 互联网基础协议 | 所有网络通信 |
| DNS | 域名解析 | 把域名翻译成 IP 地址 |
| SMTP | 邮件发送协议 | 发送电子邮件 |
| WebSocket | 双向实时通信 | 聊天应用、在线游戏 |
| SSH | 安全远程登录 | 连接服务器 |
| FTP | 文件传输协议 | 上传/下载文件 |
这些协议构成了互联网的基石。没有它们,你无法浏览网页、发送邮件或观看视频。
1.3 协议的核心价值
协议的核心价值在于标准化与互操作性:
- 标准化:所有人都遵守同一套规则,降低沟通成本;
- 互操作性:不同厂商、不同技术栈的系统可以无缝集成。
例如 HTTP 协议让 Chrome 能访问 Nginx 服务器,也让 Python 爬虫能从 Java 网站抓取数据。Chrome 与 Nginx 不需要"认识"彼此——只要都遵循 HTTP 协议即可。
1.4 AI Agent 同样需要协议
要让 AI Agent 真正"干活",它需要:
- 调用外部工具(查天气、发邮件、查数据库);
- 与其他 Agent 协作(分工完成复杂任务)。
这便需要标准化协议来定义"AI 如何调用工具"与"Agent 之间如何通信"——这正是MCP和A2A诞生的背景。
2. Agent 协议的三个层次
在深入具体协议之前,先看 Agent 生态中的通信分层:
| 层次 | 协议 | 解决的问题 | 类比 |
|---|---|---|---|
| 第 1 层 | Function Call | AI 如何调用本地函数 | 大脑下发指令 |
| 第 2 层 | MCP | AI 如何连接外部工具与数据源 | USB-C 接口 |
| 第 3 层 | A2A | Agent 之间如何协作与通信 | 企业微信 |
逐行解读这张表:
第 1 层(Function Call / 工具调用):这是大模型最基础的能力——通过输出结构化数据(JSON)触发函数执行。它是一切"协议"的基础,但更偏向一种能力而非正式标准。其底层原理在配套文档 AI Agent 原理与工具调用 中有详细拆解:LLM 本身是纯文本处理器,它不直接执行操作,而是生成"调用指令"(如
{"tool": "weather_api", "params": {"city": "Beijing"}}),由外部系统代为执行后再把结果返回给 LLM 生成最终答复。第 2 层(MCP):Model Context Protocol,由 Anthropic 于 2024 年 11 月发布,标准化 AI 连接外部工具与数据源的方式,正如 USB-C 统一了各种设备的充电接口。
第 3 层(A2A):Agent-to-Agent Protocol,由 Google 于 2025 年 4 月发布,让不同的 Agent 能够互相发现、通信与协作,正如企业微信让同事之间可以派发任务、实时沟通。
本章重点讲解第 2、3 层的两个正式协议:MCP 与 A2A。
3. MCP(Model Context Protocol)详解
3.1 基本信息
| 项目 | 详情 |
|---|---|
| 全称 | Model Context Protocol |
| 提出方 | Anthropic |
| 发布日期 | 2024 年 11 月 25 日 |
| 许可证 | MIT License |
3.2 为什么叫"上下文协议"
Context(上下文)是大模型理解任务的关键。MCP 的核心思想是:让 AI 动态获取它所需的上下文信息,而不是把一切塞进 Prompt。
例如,当 AI 需要读取文件时,你不必复制粘贴文件内容——它可以通过 MCP 直接访问文件系统。
3.3 发布背景
2024 年,随着 Claude 3.5 Sonnet 的发布,Anthropic 发现一个问题:每个工具都需要单独集成。
想象一下:
- 想让 AI 读 GitHub 仓库 → 写 GitHub 集成代码;
- 想让 AI 查询数据库 → 写数据库集成代码;
- 想让 AI 操作文件系统 → 写文件系统集成代码。
每次集成都要重复编写相似的代码:认证、错误处理、数据转换……
Anthropic 在官方博客中写道:
"我们推出 Model Context Protocol(MCP),一个开放协议,用于标准化应用如何向 LLM 提供上下文。"
核心目标:让工具开发者只写一次代码,就能被所有兼容 MCP 的 AI 应用使用。
3.4 MCP 的三大核心能力
| 能力 | 说明 | 示例 |
|---|---|---|
| Tools(工具) | AI 可调用的函数 | 查天气、发邮件 |
| Resources(资源) | AI 可读取的数据 | 文件内容、数据库记录 |
| Prompts(提示模板) | 预定义的提示词模板 | 代码评审模板、写作模板 |
3.5 内部实现要点
MCP 采用客户端-服务器(Client-Server)架构:
- MCP Host:AI 应用(如 Claude、Cursor、Windsurf)作为客户端发起请求;
- MCP Server:暴露工具、资源与提示模板的服务端进程;
- 二者通过协议定义的 JSON-RPC 消息交换请求与响应,传输层支持本地进程(STDIO)与远程服务(HTTP/SSE)。
这一"写一次、处处用"的架构正是其生态迅速扩张的根本原因。
3.6 类比:USB-C 接口
MCP 就像USB-C 接口:
- 之前:每台设备都有自己的充电口(圆形、扁形、磁吸……);
- 现在:USB-C 统一了所有设备的充电与数据传输;
- MCP:统一了 AI 连接所有工具的方式。
工具开发者只需实现一次 MCP Server,所有兼容 MCP 的 AI 应用(Claude、Cursor、Windsurf 等)都能直接使用。
3.7 典型应用场景
| 场景 | 说明 | 示例 |
|---|---|---|
| 本地文件操作 | 让 AI 读写本地文件 | 阅读代码库、分析日志 |
| 数据库查询 | 让 AI 直接查询数据库 | SQL 查询、数据分析 |
| API 调用 | 让 AI 调用第三方服务 | GitHub API、Slack、邮件 |
| 开发工具集成 | 让 AI 使用开发工具 | Git 操作、终端命令 |
真实案例:
- Cursor / Windsurf:通过 MCP 连接文件系统、Git 与终端;
- Claude Desktop:通过 MCP 连接笔记应用与邮件客户端;
- 自动化脚本:让 AI 执行备份、部署、数据同步等自动化任务。
4. MCP 实战:从配置文件到工具调用
原文档侧重于协议原理,而 easy-vibe 仓库则提供了完整的实战路径,可以直接在你的开发环境中复现。
4.1 一个真实的 MCP 配置文件
仓库根目录下的 config/mcporter.json 就是一个可直接运行的 MCP Server 配置实例(通过 mcporter 工具加载):
{ "mcpServers": { "autoglm-browser-agent": { "command": "/Users/sanbu/.agents/skills/autoglm-browser-agent/dist/mcp_server --start_url https://www.bing.com --window_width 1456 --window_height 819 --resize_width 1456 --resize_height 819 --max_steps 100 --log_dir /Users/sanbu/.agents/skills/autoglm-browser-agent/mcp_output --if_subagent" } }, "imports": [] }逐项拆解这段配置的实战含义:
mcpServers:MCP 服务器注册表,键名为服务器标识(此处为autoglm-browser-agent);command:本地服务器启动命令。这里启动的是一个浏览器智能体 MCP Server,通过命令行参数控制其行为:--start_url https://www.bing.com:浏览器初始打开的目标页面;--window_width 1456 --window_height 819:浏览器窗口初始尺寸(像素);--resize_width 1456 --resize_height 819:页面渲染目标尺寸,保证截图/操作坐标与实际视图一致;--max_steps 100:单次任务允许的最大执行步数,防止智能体无限循环;--log_dir ...:日志输出目录,便于排查运行过程;--if_subagent:以子智能体模式运行,适配多 Agent 嵌套调用场景;
imports:可导入的其他配置片段列表,此处为空。
这个示例直观展示了"AI 通过 MCP 操作浏览器"的落地形态:把浏览器封装成一个 MCP Server,AI 便能在对话中完成网页访问、操作与信息采集。
4.2 配置文件放在哪里
Claude Code 的 MCP 配置文件位于:
| 级别 | 配置文件路径 | 作用范围 |
|---|---|---|
| 用户级 | ~/.claude.json | 所有项目 |
| 项目级 | .claude/mcp.json | 当前项目 |
优先使用项目级配置,这样不同项目可以使用不同的 MCP 服务。
项目级配置示例(复用 MCP 完整指南 中的完整方案):
{ "mcpServers": { "project-db": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-sqlite", "--db-path", "./data/app.db"] } } }项目级配置的优势:
- 团队可将配置提交到 Git 共享,成员克隆后直接使用同一套 MCP 服务;
- 不同项目使用不同 MCP 服务,互不污染;
- 前端项目放浏览器测试工具、后端项目放数据库连接,各取所需。
4.3 三种传输模式
Claude Code 支持三种 MCP 传输模式:
① STDIO(本地进程)
{ "mcpServers": { "local-tool": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path"] } } }通过标准输入输出与本地子进程通信,适合文件系统、Git 等本地工具。
② HTTP(远程服务)
{ "mcpServers": { "remote-api": { "url": "https://api.example.com/mcp", "transport": "http", "headers": { "Authorization": "Bearer your-token" } } } }直接以 URL 连接远程 MCP 服务,通过headers携带认证信息,适合云端托管的工具服务。
③ SSE(Server-Sent Events)
{ "mcpServers": { "streaming": { "url": "https://api.example.com/sse", "transport": "sse" } } }基于服务端推送事件流的远程传输,适合需要实时流式返回结果的场景。
4.4 用自然语言管理 MCP
在 Claude Code 中,无需手工编辑配置文件,可以直接用自然语言描述需求:
You: Help me add a GitHub MCP server. My token is ghp_xxx You: Add a SQLite database server. The database file is at ./data/app.db You: Add an HTTP-type MCP server with the address https://api.example.com/mcp配置完成后同样可以用自然语言管理与诊断:
You: List all configured MCP servers You: Check the connection status of the MCP servers You: Delete the MCP server named notion You: My MCP server cannot connect. Please check it for me也可以使用诊断命令/doctor,输出类似:
System Diagnostic Report: =============== Claude Code: v2.5.0 ✓ Node.js: v20.0.0 ✓ MCP server status: • github: ✓ Connected (12 tools) • sqlite: ✗ Connection failed - Database file not found • puppeteer: ✓ Connected (8 tools) Suggestions: 1. Check whether the sqlite database path is correct 2. Make sure the .claude/mcp.json format is correct4.5 常见 MCP 服务器速查
| 服务器 | 功能 | 关键配置 |
|---|---|---|
| GitHub | Issues、PR、仓库管理 | 需要GITHUB_PERSONAL_ACCESS_TOKEN环境变量 |
| SQLite | 查询管理 SQLite 数据库 | --db-path指定数据库文件 |
| Filesystem | 访问指定目录内文件 | 传入允许访问的目录路径 |
| Puppeteer | 浏览器控制、截图、自动化测试 | 无额外配置 |
| Brave Search | 网页搜索 | 需要BRAVE_API_KEY |
| PostgreSQL / Git / Fetch | 数据库 / Git 操作 / 网页抓取 | 按官方服务器说明配置 |
4.6 三条关键最佳实践
① 敏感信息放进环境变量,绝不硬编码
配置文件可能被误提交到 Git 导致密钥泄露:
{ "env": { "GITHUB_TOKEN": "$GITHUB_TOKEN" } }从环境变量读取是正确做法;直接写死"ghp_abc123"是错误做法。
② 固定版本号
npx -y默认总是使用最新版 MCP Server,新版本可能引入破坏性变更。在包名后追加@版本号可以保证使用已验证的版本:
{ "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github@1.2.3"] }③ 为项目编写 MCP 配置文档
在.claude/README.md中说明每个服务器的用途、所需配置与凭据获取方式,可以显著降低团队沟通成本。
4.7 常见问题排查
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 服务器未连接 | 配置文件格式错误 | 检查 JSON 语法 |
| 工具无法调用 | 权限不足 | 检查环境变量 |
| 连接超时 | 网络问题 | 检查 URL 或网络 |
| 进程崩溃 | 服务器代码有 bug | 查看服务器日志 |
5. A2A(Agent-to-Agent Protocol)详解
5.1 基本信息
| 项目 | 详情 |
|---|---|
| 全称 | Agent-to-Agent Protocol |
| 提出方 | |
| 发布日期 | 2025 年 4 月 9 日 |
| 许可证 | Apache 2.0 |
5.2 为什么由 Google 提出
Google 在 Cloud Next 2025 大会上发布 A2A,与其企业级 AI 战略密切相关。
Google 认为,企业 AI 的未来不是单一的"超级 Agent",而是多个专业化 Agent 协作——有的负责数据分析,有的负责代码生成,有的负责文档处理。这些 Agent 需要标准化的通信方式,A2A 应运而生。
5.3 发布背景
MCP 解决了"AI 如何连接工具"的问题,但另一个问题仍然存在:多个 Agent 如何协作?
想象这样的场景:
- Agent A 是"需求分析专家";
- Agent B 是"代码生成专家";
- Agent C 是"测试专家"。
用户说:"帮我开发一个登录功能"。Agent A 分析需求后需要把任务委派给 Agent B;Agent B 写完代码需要 Agent C 测试。它们之间如何通信?
Google 在官方博客中写道:
"A2A 是一个开放协议,使 AI Agent 之间能够相互通信,促进跨框架、跨厂商的协作。"
核心目标:让不同厂商、不同框架构建的 Agent 无缝协作。
5.4 三大核心概念
| 概念 | 说明 | 类比 |
|---|---|---|
| Agent Card | 描述 Agent 的能力 | 员工工牌 |
| Task | 待执行的工作单元 | 工单 |
| Message | Agent 之间的通信内容 | 聊天记录 |
5.5 类比:企业微信
A2A 就像企业微信:
- Agent Card:每个人的名片,显示姓名、部门与职责;
- 派发任务:@某人,委派一项任务;
- 聊天沟通:任务执行过程中随时沟通;
- 任务追踪:查看任务进度与状态。
不同的 Agent 就像不同的同事——A2A 让它们能够协作完成复杂项目。
5.6 典型应用场景
| 场景 | 说明 | 示例 |
|---|---|---|
| 软件开发 | 多 Agent 协作完成开发任务 | 需求 → 代码 → 测试 → 部署 |
| 企业工作流 | 不同部门 Agent 协作 | HR Agent + 财务 Agent + 法务 Agent |
| 智能客服 | 多个专业 Agent 分工 | 接待 → 解答 → 转接 → 记录 |
| 数据分析 | 多 Agent 协作分析 | 采集 → 清洗 → 分析 → 可视化 → 报告 |
真实案例:
- Google Agent Space:企业内部多 Agent 协作处理文档、邮件与日程;
- 软件研发团队:需求 Agent → 代码 Agent → 测试 Agent → 部署 Agent;
- 智能客服:接待 Agent → 专家 Agent → 人工转接 Agent。
5.7 A2A 的落地形态:Agent Teams
A2A 协议解决"跨厂商 Agent 互通",而在单一工具内,多 Agent 协作已有成熟实现。easy-vibe 仓库的 Agent Teams 完整指南 展示了 Claude Code 中的多 Agent 团队协作:
- Team Lead:负责需求分析与任务分解、团队创建、任务调度与结果整合;
- Teammates:每个成员是独立 AI 实例,拥有独立的上下文窗口与完整工具权限,可自主认领任务并直接相互通信;
- TaskList:任务看板,管理任务状态(
pending/in_progress/completed)与依赖关系,通过文件锁机制防止多人同时编辑同一文件; - Messaging System:基于本地文件系统的消息箱(
~/.claude/teams/{team-name}/inboxes/),支持点对点通信与广播,无需网络。
典型协作流程:
用户提交复杂需求 ↓ Team Lead 分析需求并拆解为任务 ↓ 创建团队成员并初始化 TaskList ↓ ├─→ Teammate A 认领任务 1 ─┐ ├─→ Teammate B 认领任务 2 ─┼→ 并行执行 ├─→ Teammate C 认领任务 3 ─┤ │ ↓ └──────────────────── 成员通过消息系统协调 ↓ 全部任务完成后,Team Lead 整合结果 ↓ 最终产出交付给用户Subagent 与 Agent Teams 的本质区别在于拓扑:Subagent 是星形拓扑(所有子任务向主 Agent 汇报);Agent Teams 是网状拓扑(成员之间可以直接沟通、讨论、协调)。选择原则是:快速、独立、无持续讨论需求的单点任务用 Subagent;跨模块复杂重构、需要多角度讨论与真并行的任务用 Agent Teams。
6. MCP vs A2A:对比与关系
6.1 核心差异
| 维度 | MCP | A2A |
|---|---|---|
| 提出方 | Anthropic(2024.11) | Google(2025.04) |
| 定位 | AI 连接工具 | Agent 间协作 |
| 通信范围 | 客户端-服务器 | 对等通信(Peer-to-Peer) |
| 数据格式 | JSON-RPC 2.0 | HTTP + JSON |
| 类比 | USB-C 接口 | 企业微信 |
6.2 两者关系:互补而非竞争
MCP 与 A2A不是竞争关系,而是互补关系:
- MCP 解决"AI 如何获取外部能力"(连接工具、数据源);
- A2A 解决"多个 AI 如何协作"(任务委派、多智能体协同);
- 一个 Agent 可以同时通过 MCP 使用工具、通过 A2A 与其他 Agent 协作——两者处于不同通信层,天然可叠加。
6.3 选型决策表
| 场景 | 选择 |
|---|---|
| 让 AI 调用本地函数或工具 | Function Call |
| 使用第三方工具(数据库、API、文件系统) | MCP |
| 构建多 Agent 协作系统 | A2A |
| 既需要工具集成又需要多 Agent 协作 | MCP + A2A |
7. 协议的未来趋势
7.1 生态发展
MCP 生态:
- 官方提供的服务器:File System、SQLite、Git、PostgreSQL 等;
- 社区贡献的服务器:Slack、Notion、Figma、Stripe 等;
- 支持 MCP 的应用:Claude Desktop、Cursor、Windsurf、Zed 等。
A2A 生态:
- Google 自家 Agent 产品率先支持;
- 开源社区正在开发各语言 SDK;
- 企业级应用正在探索落地。
7.2 标准化进程
Agent 协议目前正处于"战国时代":
- MCP 与 A2A 是最主流的两个;
- 还有 ANP、AGP 等其他新兴协议;
- 未来可能走向收敛或统一。
类比互联网的发展历程:早期各种局域网协议并存,后来 TCP/IP 成为标准。现在,Agent 协议也可能走向统一。
8. 总结
| 协议 | 一句话总结 | 发布日期 | 提出方 | 适用场景 |
|---|---|---|---|---|
| MCP | AI 连接工具的"USB-C" | 2024.11 | Anthropic | 工具集成、数据源连接 |
| A2A | Agent 协作的"企业微信" | 2025.04 | 多 Agent 协作、任务委派 |
关键认知:
- MCP 解决"AI 如何获取外部能力"的问题;
- A2A 解决"多个 AI 如何协作"的问题;
- 两者互补,未来可能组合使用;
- 按具体场景选型——没有银弹。
延伸阅读(仓库内配套资料)
- MCP 完整指南(Claude Code 实战):MCP 配置文件、三种传输模式、常见服务器与排障的最佳实践手册;
- Agent Teams 完整指南:多 Agent 团队协作的架构、文件系统布局与完整实战案例;
- AI Agent 原理与工具调用:从 Function Call 到规划与记忆的 Agent 底层原理;
- 配置示例 config/mcporter.json:仓库内真实可用的 MCP Server 配置实例;
- 附录总索引:easy-vibe 全部 AI 与全栈基础知识的导航页。
【免费下载链接】easy-vibe从 0 到 1 学会 vibe coding,项目制学习项目地址: https://gitcode.com/datawhalechina/easy-vibe
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考