03MCP与A2A

alex
5
2025-12-04

在大模型智能体(AI Agent)快速演进的今天,工具调用(Tool Use) 和 多智能体协作(Multi-Agent Collaboration) 已成为两大核心能力。然而,早期的实现方式高度碎片化——每个框架、每个平台、每个工具都采用私有接口,导致开发者重复造轮子、系统难以互操作、生态彼此割裂。

为解决这一问题,行业正在形成两大标准化协议:

  • MCP(Model Context Protocol) —— 让 Agent 与外部工具 的交互标准化

  • A2A(Agent-to-Agent Protocol) —— 让 Agent 与 Agent 的协作标准化

这两大协议并非竞争关系,而是互补共生,共同构成未来 AI Agent 生态的“基础设施层”。本文将从起源、架构、工作原理、应用场景、对比分析等多个维度,对 MCP 与 A2A 进行全面、深入、系统的解析,助你把握 AI 智能体发展的技术脉络。


一、MCP(Model Context Protocol):Agent 的“万能工具接口”

(一)什么是 MCP?

MCP(Model Context Protocol,模型上下文协议) 是由 Anthropic 于 2024 年提出的开放标准协议其目标是:为 AI 应用提供一种统一、安全、可扩展的方式,动态注入和管理外部工具、数据源与上下文信息

✅ 简单理解:MCP 就像 USB-C 接口——任何工具只要实现 MCP Server,就能被任意支持 MCP 的 Agent 调用,无需定制适配。

(二)核心设计思想

MCP 的设计围绕三个关键原则

  1. 上下文结构化:将工具、数据、提示词等资源以标准化 JSON 格式描述。

  2. 职责分离

    • Prompts:由用户控制(如系统提示词)

    • Resources:由应用控制(如知识库文件)

    • Tools:由模型控制(如 API 调用函数)

  3. 传输无关性:支持 stdio(本地进程通信)、HTTP/SSE(远程服务)等多种传输方式。

(三)架构组成

MCP 采用经典的 Client-Server 架构

组件

角色

功能

MCP Host

主机应用

如 TRAE IDE、Cursor、Windsurf 等,集成 MCP Client

MCP Client

客户端

内置于 Agent 中,负责发现、连接、调用 MCP Server

MCP Server

服务端

托管具体工具或数据源,响应 Agent 请求

MCP Registry(可选)

注册中心

提供 Server 发现服务(如 mcp.so 市场)

本地数据源

提供本地数据

提供本地数据

远程服务

第三方工具

提供三方工具,提供额外信息数据

ServerVCP

MCP Server 是整个架构的核心,负责向大模型提供结构化上下文和可调用的操作能力。它定义了三大类基础能:

1)Resources:类似静态或动态的数据文档,比如 AP! 返回的 JSON、配置文件、项目结构,供模型查询参考

2)Tools:模型可调用的函数接口,比如发请求、创建文档、执行命令,执行前通常需要用户授权来保证安全

3)Prompts:预定义的提示模板,用来引导模型完成特定任务,比如代码审查、生成 commit message、总结会议内容,能提高交互效率。通过这三类能力,MCP Server 让模型不仅能"看懂"信息,还能"动手"完成任务社区维护的 MCP Servers

Repository 和 Awesome MCP Servers 里有大量开源的 MCP Server 实现。TypeScript 写的MCP Server 通常用 npx 命令运行,Python 写的用 uvx 命令启动,部署起来很方便。

(四)通信方式

两种通信机制

MCP 支持两种底层传输方式,适用场景完全不同:

Stdio 模式:基于标准输入输出流,Client 和 Server 跑在同一台机器上,通过进程间管道通信。启动快、延迟低、调试方便,本地开发首选。Claude Desktop 默认就用这种方式启动本地 Server。

SSE 模式:基于 HTTP 长连接,Server 可以部署在远端。Client 通过 HTTP POST发请求,Server 通过 Server-SentEvents 推送响应。适合分布式部署、跨网络调用的生产场景。

与传统 Function Calling 的区别

很多人会问:MCP 和 OpenAI 的 Function Calling 有什么区别?

核心差异在于标准化和解耦。

传统 Function Calling 是模型厂商各搞各的,OpenAI 有一套格式,Claude 有另一套,换个模型就得改代码。工具定义也是硬编码在应用里,每接一个新工具就得改应用代码重新部署。MCP 把这套流程标准化了:工具以 Server 的形式独立部署,Client 通过协议发现和调用工具。换模型不用改 Server,加工具不用改 Client。就像 USB 接口一样,只要符合协议,插上就能用。

(五)工作流程

MCP 的核心工作流程是一个客户端-服务器协作的闭环,整体分为7个阶段:

1)初始化连接:主机应用启动后,MCP Client 与 MCP Server 建立连接。一个主机可以同时连多个 Server,每个 Server负责不同的工具和资源。

2)获取工具列表:Client 从 Server 拉取可用的工具清单,包括每个工具的名称、参数、用途描述。这一步相当于"能力注册",让模型知道手里有哪些牌可以打。

3)构造 Function Caling 请求:用户输入问题后,Client 把工具描述和用户问题一起打包发给 LLM。传输格式是结构化的Function Calling,告诉模型"你现在能调用这些函数"。

4)模型智能决策:LLM 根据上下文和工具信息,判断是否需要调用外部工具、调用哪个、传什么参数。比如用户问天气

模型就会选择 getWeather 工具并填入城市参数。

5)工具调用执行:如果模型决定调用工具,Client 把调用请求转发给 Server;Server 负责实际执行--跑脚本、查数据库、调 API,然后把结果返回。

6)结果整合:工具执行结果传回 LLM,模型把这个结果和原始问题、对话上下文糅在一起,生成最终的自然语言回答,

7)用户响应输出:Client 把模型生成的回答展示给用户,完成一次完整的人机协作。

(四)全流程示例图(续)

(六)面试官追问

提问:MCP Client 和 Server 之间的连接断了怎么办?有没有重连机制?

回答:MCP 协议本身定义了连接生命周期管理。Stdio 模式下,Server 进程挂了 Client 会收到 EOF 信号,可以选择重启Server 进程。SSE 模式下,HTTP 长连接断开后 Client 可以重新发起连接。具体的重连策略、重试次数、退避算法这些是Client 实现层面的事,协议没有强制规定,得看各家 SDK 怎么实现。

提问:如果模型一次需要调用多个工具,MCP 怎么处理?

回答:MCP 支持串行和并行两种模式。串行就是一个工具执行完拿到结果,再决定下一步调哪个。并行就是模型一次返回多个工具调用请求,Client 同时发给 Server 执行。具体用哪种取决于模型的推理结果和工具之间的依赖关系。比如先查用户ID再查订单,这种有依赖的只能串行;查天气和查股票这种独立的就可以并行。

提问:MCP 和 LangChain 的 Agent 有什么关系?能一起用吗?

回答:两者解决的问题不在一个层面。LangChain Agent 是个编排框架,负责把多个步骤串起来、管理对话状态、处理工具调用结果。MCP 是个通信协议,定义 Client 和 Server 怎么交互。完全可以在 LangChain Agent 里接入 MCP Client,让Agent 通过 MCP 调用外部工具。LangChain 社区已经有 MCP 的集成方案了。

提问:MCP Client 和 MCP Server 之间是怎么通信的?用的什么协议?

回答:MCP 底层用的是 JSON-RPC 2.0 协议,传输层支持两种方式:一种是 stdio,适合本地进程间通信;另一种是 HTTF+SSE,适合远程服务调用。stdio 方式下 Client 直接 fork 一个 Server 进程,通过标准输入输出交换 JSON 消息,延迟低、实现简单。HTTP+SSE 方式下 Client 用 HTTP POST发请求,Server 用 Server-Sent Events 推送响应,适合跨网络场景。

提问:一个 MCP Client 能同时连多个 MCP Server 吗?这种多连接场景下怎么管理?

回答:可以,MCP 设计上就支持一个 Client 同时连多个 Server。每个 Server 提供不同能力,Client 会维护一个 Server 列表,每次请求前先聚合所有 Server 的工具列表给模型。模型选择调用哪个工具时,Cient 根据工具归属把请求路由到对应的Server。Cursor 里配置多个 MCP Server 就是这个原理。

提问:MCP Server 的 Tools 和 Resources 有什么本质区别?

回答:Resources 是只读的数据,模型拿来参考用,不会产生副作用;Tools 是可执行的动作,会真正改变外部状态。

提问链接:https://www.mianshiya.com/question/1914241826789912577

(五)典型应用场景

开发工具集成:Git、Docker、Playwright 等通过 MCP Server 暴露为 Agent 可调用工具

  • 企业系统对接:将内部 CRM、ERP、数据库封装为 MCP 服务,供智能客服调用。

  • 多模态能力扩展:图像生成(Stable Diffusion)、语音识别(Whisper)等作为 MCP 工具接入。

🌐 生态现状:截至 2025 年 12 月,MCP 市场 已收录超 2000 个社区贡献的 MCP Server,涵盖开发、设计、办公、云服务等领域


二、A2A(Agent-to-Agent Protocol):Agent 的“通用协作语言”

(一)什么是 A2A?

A2A(Agent-to-Agent Protocol,智能体到智能体协议) 是由 Google 于 2025 年 4 月联合 Linux 基金会推出的开放标准其目标是:实现不同厂商、不同框架、不同平台的 AI 智能体之间的安全、高效、互操作协作

✅ 简单理解:A2A 就像 TCP/IP 协议——让来自 CrewAI、AutoGen、LangGraph 的 Agent 能像人类团队一样自然协作。

(二)核心设计哲学

A2A 基于四大原则

  1. 不透明性(Opacity):Agent 无需暴露内部逻辑,仅通过接口交互,保护知识产权与隐私。

  2. 基于现有标准:构建于 HTTP、JSON-RPC 2.0、SSE(Server-Sent Events)之上,易于集成。

  3. 任务驱动:以“任务”(Task)为核心单元,支持长周期、多轮、异步协作。

  4. 默认安全:支持 OAuth 2.0、API Key、OpenID Connect 等企业级认证机制。

(三)核心组件

组件

描述

A2A Client(客户端智能体)

发起任务请求的 Agent(如“行程规划 Agent”)

A2A Server(远程智能体)

接收并执行任务的 Agent(如“航班查询 Agent”)

Agent Card

公开的 JSON 元数据文件(通常位于 /.well-known/agent.json),描述能力、端点、认证方式

Task

工作单元,有唯一 ID 和状态生命周期(submitted → working → completed/failed)

Message & Artifact

通信基本单元(文本/文件/结构化数据)和任务产出物(如 PDF 报告、图像)

(四)工作流程(三阶段)

(五)高级特性

  • 流式传输:通过 SSE 实时推送任务进度、中间结果(如代码生成过程)。

  • 异步通知:对长时间任务(数小时/天),支持 Webhook 推送最终状态。

  • 多模态支持:消息和工件可包含文本、图像、音频、结构化 JSON 等。

  • 状态管理:任务状态持久化,支持断点续做。

(六)典型应用场景

  • 跨企业协作:零售库存 Agent 检测缺货 → 通过 A2A 调用供应商订单 Agent。

  • 专业分工:招聘经理 Agent → 委托简历筛选 Agent → 再委托背景调查 Agent。

  • 复杂任务编排:旅行规划 Agent 协调航班、酒店、景点、支付等多个专业 Agent。

🌍 生态进展:Google Cloud、IBM、阿里云等已宣布支持 A2A;CrewAI、LangGraph 等框架正逐步集成 A2A 客户端


三、MCP 与 A2A 的关系:互补而非替代

维度

MCP

A2A

作用对象

Agent ↔ 外部工具/API/数据源

Agent ↔ Agent

抽象层级

工具层(“手和脚”)

协作层(“社交网络”)

通信模式

请求-响应(Request-Response)

任务委派-状态同步(Task Delegation)

典型传输

stdio, HTTP

HTTP + SSE

核心价值

赋能单个 Agent

连接多个 Agent

协同工作示例:汽车维修店智能系统

  1. 客户通过 A2A 与“店长 Agent”沟通问题。

  2. 店长通过 A2A 委派任务给“机械师 Agent”。

  3. 机械师通过 MCP 调用诊断工具和维修手册。

  4. 若需零件,机械师通过 A2A 联系“供应商 Agent”。

  5. 供应商通过 MCP 查询自身库存数据库。

🔑 关键结论MCP 负责“做事”,A2A 负责“找人”。两者结合,才能构建真正强大的多智能体系统。


四、如何选择?实践建议

场景

推荐策略

为 Agent 添加新工具(如 Git、数据库)

实现 MCP Server,发布到 MCP 市场

构建单 Agent 应用(如智能客服)

优先使用 MCP 集成所需工具

需要多 Agent 协作(如供应链、招聘)

设计 A2A 兼容的 Agent,并提供 Agent Card

已有 CrewAI/AutoGen 系统

逐步将内部工具迁移到 MCP,对外暴露 A2A 接口

企业级部署

MCP 用于内部系统集成,A2A 用于跨部门/跨企业协作


五、未来展望

MCP + A2A + ANP:随着 ANP(Agent Network Protocol) 的发展,未来将形成“工具接入(MCP)→ 智能体协作(A2A)→ 网络发现(ANP)”的完整协议栈

  • 标准化加速:Linux 基金会、W3C 等组织正推动 A2A 成为正式 Web 标准。

  • 生态爆发:开发者可像开发 npm 包一样,发布 MCP 工具或 A2A 智能体,形成繁荣的“Agent App Store”。


结语

MCP 与 A2A 的出现,标志着 AI Agent 技术从“各自为战”走向“互联互通”的新时代。MCP 解决了“能力接入”的标准化问题,A2A 解决了“智能协作”的标准化问题。二者如同“USB 接口”与“互联网协议”,共同为下一代 AI 应用奠定基础设施。

对于开发者而言,拥抱 MCP 与 A2A,不仅是技术升级,更是参与构建开放、互操作、可持续的 AI 生态的关键一步。

📚 延伸阅读

动物装饰