Skip to content

MCP、A2A 与外部能力对接

当 AI 应用开始不只是在前端对话框里生成几段文本,而是真的要接文件系统、浏览器、知识库、内部服务,甚至开始让多个 Agent 协作时,后面很快就会碰到两个词:

  1. MCP
  2. A2A

它们看起来都和“协作”有关,所以很容易被放在一起说。 但工程上这两个词关注的其实不是同一件事。

1. 把两个词分开

可以用一句话把它们拉开:

  • MCP 更偏“宿主怎么标准化接外部能力”
  • A2A 更偏“不同 Agent 怎么协作完成任务”

也就是说:

  1. MCP 更关注能力接入
  2. A2A 更关注任务协作

2. MCP 到底在解决什么问题

MCPModel Context Protocol,模型上下文协议。

它更关注的是:

AI 宿主怎样以统一方式发现、读取和调用外部工具、资源和提示模板。

把这句话说得更工程一点,就是:

如果你的应用要接很多外部能力,例如:

  1. 文件系统
  2. 浏览器
  3. 搜索服务
  4. 数据库
  5. 知识库

那你总得有一种更统一的方式,把这些能力接进来,而不是每次都自己重新造一层接入逻辑。

2.1 MCP 主要带来了什么能力

它最核心的价值通常有这几件事:

  1. 让外部能力可以被标准化描述
  2. 让宿主应用可以统一发现可用能力
  3. 让工具、资源、Prompt 这些对象有更稳定的暴露方式

所以 MCP 的重点不是“替模型思考”,而是:

把外部能力接入这件事做得更标准。

2.2 什么场景更适合用 MCP

下面这些场景更接近 MCP

  1. 宿主要接外部文件系统
  2. 宿主要接浏览器自动化服务
  3. 宿主要接搜索服务
  4. 宿主要接数据库或知识库能力

这时你最关心的通常不是“任务怎么拆给别的 Agent”,而是:

我有一堆外部能力,怎么稳定、统一地接给宿主应用。

3. A2A 又在解决什么问题

A2A 通常可以理解成 Agent-to-Agent

它更关注的是:

不同 Agent 之间怎么分工、怎么交换任务、怎么回传结果。

落到系统协作上,通常就是把这几件事串起来:

  1. 一个主 Agent 怎么把子任务交出去
  2. 不同 Agent 怎么协作
  3. 子 Agent 的结果怎么回到主链路

3.1 A2A 主要适合什么场景

下面这些场景更接近 A2A

  1. 一个 Agent 负责总控和目标拆解
  2. 一个 Agent 负责检索资料
  3. 一个 Agent 负责总结和输出
  4. 最后回到主 Agent 汇总最终结果

这时问题的重点不再是“接哪个工具”,而是:

这件事应该交给哪个 Agent 去做,以及结果怎么协同回来。

3.2 为什么 A2A 不是普通工具调用

因为工具调用更像:

  1. 调一个明确动作
  2. 拿一个明确结果

A2A 更像:

  1. 交出去一个子任务
  2. 让另一个 Agent 自己继续用它的能力往下处理

也就是说,A2A 面对的对象通常不是一个静态工具,而是另一个具备目标执行能力的 Agent。

4. 一张图看清它们分别站在哪

mermaid
flowchart LR
    A[Host / App] --> B[MCP]
    B --> C[Tool / Resource / Prompt]
    A --> D[主 Agent]
    D --> E[A2A]
    E --> F[子 Agent 1]
    E --> G[子 Agent 2]

这张图里最重要的是:

  1. MCP 更像能力接入口
  2. A2A 更像任务协作通道

5. 两者最核心的区别

维度MCPA2A
主要对象宿主应用与外部能力Agent 与 Agent
核心问题怎么发现和调用外部能力怎么拆任务、协作和回收结果
更像什么能力接入协议多 Agent 协作方式
典型对象Tool、Resource、Prompt主 Agent、子 Agent
常见场景接文件、浏览器、搜索、知识库复杂任务拆分、子任务协作

6. 它们会不会一起出现

会,而且很常见。

例如一个调研型系统里,可能会这样配合:

  1. 主 Agent 先通过 MCP 接浏览器、搜索和知识库能力
  2. 再通过 A2A 把“网页搜集”“内容提炼”“最终汇总”交给不同 Agent

这时两者站的就不是同一层:

  1. MCP 负责接能力
  2. A2A 负责协作任务

所以它们不是互斥关系,而是完全可能一起出现。

7. 这两个词最容易踩的误区

7.1 把 MCP 理解成模型接口

这不太准。

模型接口更关注“应用怎么调模型”,而 MCP 更关注“宿主怎么接外部能力”。

7.2 把 A2A 理解成普通工具调用

这也不太准。

工具调用更像调一个动作,A2A 更像把一个子任务交给另一个具备执行能力的 Agent。

7.3 以为有了 A2A 就不需要 MCP

也不对。

就算系统里已经有多个 Agent,它们内部真正要访问文件、浏览器、知识库时,仍然可能需要一层标准化的外部能力接入方式。

8. 一段更稳的总结

如果把这两个词压成一句话,可以记成:

MCP 解决“宿主怎么把外部能力标准化接进来”,A2A 解决“不同 Agent 怎么协作完成一个更复杂的任务”。一个更偏能力接入,一个更偏任务协作,真实项目里它们经常会一起出现,但并不站在同一层。

基于 VitePress 构建的个人技术笔记。