跳转到内容
Guide

MCP 与 A2A:选择正确的 AI 代理协议

| 9 min read

MCP 将 AI 模型连接到工具。 A2A 将 AI 代理相互连接起来。 比较架构、身份验证、消息格式和采用情况以选择正确的协议。

Robot representing AI agent communication
Photo by Alex Knight on Unsplash

您的 AI 代理需要调用 DNS 查找 API。 它还需要将研究任务移交给另一台服务器上的单独代理。 这是两个不同的问题,业界构建了两种不同的协议来解决它们: MCP (模型上下文协议)来自 Anthropic 和 A2A (代理对代理)来自 Google。

开发人员不断询问选择哪一个。 答案:他们解决不同的问题。 MCP 将模型连接到工具。 A2A 将代理与代理连接起来。 本指南详细介绍了每个协议的架构、消息格式、身份验证模型和采用情况,以便您可以为您的系统做出正确的调用。

60 秒内MCP

MCP 是一种开放协议,允许 AI 模型访问外部工具和数据。 将其视为 AI 的 USB-C 端口:一个标准接口,多种工具。 该模型发送一个 JSON-RPC 请求,描述要调用哪个工具以及使用哪些参数。 MCP 服务器执行该工具并返回结构化数据。

以下是 MCP 工具在线调用的样子:

// MCP tool call: model asks the server to execute a tool
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "lookup_dns",
    "arguments": {
      "domain": "stripe.com",
      "type": "MX"
    }
  },
  "id": 1
}

// MCP tool result: server returns structured data
{
  "jsonrpc": "2.0",
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\"domain\":\"stripe.com\",\"type\":\"MX\",\"records\":[{\"priority\":1,\"value\":\"aspmx.l.google.com\",\"ttl\":300}]}"
      }
    ]
  },
  "id": 1
}

该模型从不直接接触网络。 它描述意图(“查找 stripe.com 的 MX 记录”),并且 MCP 服务器处理执行。 这可以使模型保持沙箱状态,同时允许其访问真实世界的数据。

Botoi 在以下位置运行 MCP 服务器: api.botoi.com/mcp 拥有 49 个开发者工具。 在一行中将其连接到 Claude、Cursor 或 VS Code:

# Connect botoi's 49 tools via MCP in one command
claude mcp add botoi --transport streamable-http https://api.botoi.com/mcp

# Now your agent can call tools like:
# lookup_dns, lookup_whois, ssl_check, jwt_sign,
# pii_detect, email_validate, hash, uuid_generate,
# json_format, base64_encode, and 39 more

60 秒内 A2A

A2A 是一种用于代理间通信的开放协议。 MCP 将模型连接到工具,而 A2A 将代理连接到其他代理。 每个代理都会在众所周知的 URL 上发布一张“代理卡”,描述其技能、能力和身份验证要求。 其他特工发现这张卡并发送任务。

这是一张代理卡:

// A2A Agent Card: published at /.well-known/agent.json
{
  "name": "invoice-processor",
  "description": "Extracts line items from PDF invoices and returns structured data",
  "url": "https://agents.example.com/invoice",
  "version": "1.0.0",
  "capabilities": {
    "streaming": true,
    "pushNotifications": false
  },
  "skills": [
    {
      "id": "extract-invoice",
      "name": "Extract Invoice Data",
      "description": "Parses a PDF invoice and returns line items as JSON"
    }
  ],
  "authentication": {
    "schemes": ["bearer"]
  }
}

以下是一个代理将任务发送给另一个代理的方式:

// A2A task/send: one agent asks another to do work
{
  "jsonrpc": "2.0",
  "method": "tasks/send",
  "params": {
    "id": "task-abc-123",
    "message": {
      "role": "user",
      "parts": [
        {
          "type": "text",
          "text": "Extract line items from this invoice PDF"
        },
        {
          "type": "file",
          "mimeType": "application/pdf",
          "uri": "https://storage.example.com/invoices/2026-march.pdf"
        }
      ]
    }
  },
  "id": 2
}

与 MCP 的主要区别:A2A 任务是不透明的。 呼叫代理不知道或控制接收代理如何完成工作。 它可以使用 MCP 工具,通过 A2A 调用其他代理,或运行专有逻辑。 A2A 定义了代理之间的契约,而不是模型和工具之间的契约。

对照表

方面 MCP(模型上下文协议) A2A(代理对代理)
创建者: 人择(2024 年 11 月) 谷歌(2025 年 4 月)
核心目的 将 AI 模型连接到工具和数据 将 AI 代理相互连接
沟通模式 模型调用工具,得到结果 代理将任务委托给代理
接线格式 JSON-RPC 2.0 JSON-RPC 2.0
运输 stdio(本地)、可流式 HTTP(远程) HTTPS
发现 服务器通过以下方式公开工具列表 tools/list 代理发布代理卡于 /.well-known/agent.json
认证模型 服务器定义(API 密钥、OAuth、无) 代理卡声明方案(承载、OAuth 2.0、API 密钥)
流媒体 服务器发送的工具结果事件 服务器发送的任务更新事件
状态性 无状态或基于会话 任务生命周期(已提交、正在运行、已完成、失败)
多式联运 基于文本的工具结果 消息部分中的文本、文件、图像、结构化数据
执行范围 具有定义的输入/输出的单个工具调用 开放式任务; 代理决定如何完成它

架构:它们如何组合在一起

MCP运行在工具层。 A2A 在编排层运行。 在多代理系统中,协调器使用 A2A 将任务委托给专家代理。 每个专家都使用 MCP 来访问其工具。

Orchestrator Agent (A2A client)
  |
  |-- A2A task/send --> Research Agent
  |                        |-- MCP tools/call --> lookup_dns
  |                        |-- MCP tools/call --> lookup_whois
  |                        |-- MCP tools/call --> ssl_check
  |
  |-- A2A task/send --> Compliance Agent
  |                        |-- MCP tools/call --> pii_detect
  |                        |-- MCP tools/call --> email_validate
  |
  |-- A2A task/send --> Report Agent
                           |-- MCP tools/call --> markdown_to_html
                           |-- MCP tools/call --> pdf_from_html

Orchestrator 代理收到诸如“审核 example.com 的安全状况”之类的请求。 它将其分解为子任务并通过 A2A 委派它们:一个代理研究 DNS 和 SSL,另一个代理检查 PII 暴露,第三个代理编译报告。 每个代理都使用 MCP 来调用其所需的特定工具。

MCP 和 A2A 不竞争。 MCP 回答“我的代理如何使用工具?” A2A 回答“我的代理如何相互交谈?” 大多数生产多代理系统都需要两者。

何时使用 MCP

  • 您的 AI 模型需要调用 API、查询数据库或读取文件
  • 您需要一个能够访问许多工具的代理(例如 Botoi MCP 服务器上的 49 个工具)
  • 您需要具有定义的输入/输出模式的确定性工具调用
  • 您正在单一信任边界内进行构建; 模型和工具属于同一系统
  • 您需要广泛的客户端支持:Claude Desktop、Claude Code、Cursor、VS Code、Windsurf 和 ChatGPT 都支持 MCP

何时使用 A2A

  • 您有多个代理需要相互委派工作
  • 代理跨越组织边界(您的代理与供应商的代理交谈)
  • 任务是开放式的; 呼叫代理没有规定工作如何完成
  • 您需要一个具有状态跟踪功能的任务生命周期(已提交、正在工作、已完成、失败)
  • 代理交换丰富的内容:文件、图像和结构化数据,而不是工具参数

身份验证和信任模型

MCP 有一个简单的身份验证故事。 MCP 服务器决定自己的身份验证。 某些服务器不需要身份验证(本地文件系统访问)。 其他则需要 API 密钥或 OAuth 令牌。 客户端在标头中传递凭据。 没有协议级别的身份验证协商。

A2A 将身份验证构建到发现层中。 每个代理卡都声明其支持的身份验证方案。 呼叫代理读取卡、选择方案并在发送任务之前进行身份验证。 这非常适合代理需要在运行时协商信任的跨组织场景。

对于 Botoi MCP 服务器,匿名访问为您提供每分钟 5 个请求和每天 100 个请求。 在中添加 API 密钥 Authorization 更高限制的标题:

{
  "mcpServers": {
    "botoi": {
      "type": "streamable-http",
      "url": "https://api.botoi.com/mcp"
    }
  }
}

2026 年收养

MCP 拥有领先优势。 Anthropic 于 2024 年 11 月发布了 MCP,到 2026 年初,每个主要的 AI 编码助手都支持它。 Claude Desktop、Claude Code、Cursor、VS Code (GitHub Copilot)、Windsurf 和 ChatGPT 均充当 MCP 客户端。 该生态系统拥有数千台 MCP 服务器,涵盖数据库、API、文件系统、浏览器和开发人员工具。

A2A 较新。 Google 于 2025 年 4 月发布了该规范。在多代理编排至关重要的企业环境中,其采用率正在不断增长:供应链自动化、文档处理管道以及具有专业代理的客户服务系统。 代理卡发现机制使构建代理市场和​​目录变得更加容易。

如果您现在正在构建单代理工具调用系统,MCP 拥有生态系统。 如果您正在构建多代理编排,A2A 可以提供您所需的协调层。

具体的 MCP 示例:botoi 的 49 个工具

Botoi 的 MCP 服务器位于 api.botoi.com/mcp 显示 MCP 在生产中的样子。 它公开了 5 个类别的 49 个精选开发人员工具:

类别 数数 示例工具
抬头 12 dns_lookup、whois_lookup、ssl_check、电子邮件_验证、技术_检测
文本和数据 10 json_format、base64_encode、csv_to_json、markdown_to_html
开发商 12 jwt_sign、uuid_generate、哈希、cron_describe、regex_test
安全 5 aes_crypt、pii_detect、totp_generate、credit_card_validate
转换 5 minify_js、sql_format、code_format、json_to_typescript

该服务器使用 Streamable HTTP 传输,在边缘的 Cloudflare Workers 上运行,除了单行设置之外,还需要零配置。 每个工具都有一个类型化的输入模式并返回结构化的 JSON。 完整的工具清单位于 api.botoi.com/v1/mcp/tools.json

这就是 MCP 的核心:一台服务器、许多工具、结构化 I/O 以及任何兼容客户端都可以连接的标准协议。

决策框架

问这三个问题:

  1. 你的AI模型需要调用外部工具吗? 使用MCP。 连接到 MCP 服务器(或构建您自己的服务器),您的模型将获得结构化工具访问权限。
  2. 您是否有多个代理需要协作? 使用A2A。 发布代理卡、发送任务并跟踪其生命周期。
  3. 你两者都有吗? 两者都用。 A2A在编排层,MCP在工具层。 它们在不同的层面上运作,并不冲突。

选择不是 MCP 或 A2A。 它是 MCP、A2A 或 MCP + A2A,具体取决于系统的复杂性。 如果您需要工具访问权限,请从 MCP 开始。 当您需要代理协调时添加 A2A。

开始使用 MCP

通过 Botoi MCP 服务器将您的 AI 助手连接到 49 个开发者工具。 检查 MCP 设置文档 用于 Claude Desktop、Claude Code、Cursor、VS Code 和 Windsurf 的配置。 浏览 API文档 查看 MCP 服务器背后 150 多个端点的完整列表。

FAQ

MCP 和 A2A 有什么区别?
MCP(模型上下文协议)将 AI 模型连接到外部工具和数据源。 A2A(Agent-to-Agent)将独立的 AI 代理相互连接起来,以便它们可以委派任务、交换结果和协作。 MCP解决工具访问问题。 A2A解决代理协调。 它们针对人工智能系统的不同层,并且可以一起运行。
MCP和A2A可以在同一个系统中协同工作吗?
是的。 常见模式使用 A2A 在编排层进行代理间通信,而每个代理使用 MCP 访问自己的工具和数据源。 协调器代理通过 A2A 委派任务。 专业代理通过调用 MCP 工具来执行这些任务。 这两个协议在不同的层运行并且不冲突。
我应该为我的人工智能应用程序选择哪种协议?
如果您的AI模型需要调用外部API、查询数据库或读取文件,请使用MCP。 如果您有多个 AI 代理,需要跨团队或组织边界相互委派工作,请使用 A2A。 大多数超越单一代理的生产系统最终都会同时使用这两种代理。
MCP 仅适用于 Anthropic 模型,A2A 仅适用于 Google 模型吗?
不。两者都是开放协议。 MCP 可与 Claude、GPT、Gemini、Llama 以及任何支持工具调用的模型配合使用。 A2A 适用于任何代理运行时,无论底层模型如何。 Anthropic 创建了 MCP,Google 创建了 A2A,但这两个协议都没有被其创建者锁定。
每个协议使用什么传输?
MCP 支持本地工具服务器的 stdio 和远程服务器的 Streamable HTTP (JSON-RPC 2.0)。 A2A 使用 HTTPS 和 JSON-RPC 2.0 进行所有通信。 两种协议都依赖 JSON 进行消息格式化。 MCP 还支持服务器发送事件以流式传输工具结果。

开始使用 botoi 构建

150+ 个 API 端点,涵盖查询、文本处理、图片生成和开发者工具。免费套餐,无需信用卡。