コンテンツへスキップ
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 を呼び出す必要があります。 また、調査タスクを別のサーバー上の別のエージェントに引き渡す必要もあります。 これらは 2 つの異なる問題であり、業界はそれらを解決するために 2 つの異なるプロトコルを構築しました。 MCP (モデル コンテキスト プロトコル) Anthropic および A2A Google からの(エージェント間)。

開発者はどれを選ぶべきかを尋ね続けます。 答えは、さまざまな問題を解決することです。 MCP はモデルをツールに接続します。 A2A はエージェントとエージェントを接続します。 このガイドでは、システムに適切な呼び出しを行えるように、アーキテクチャ、メッセージ形式、認証モデル、各プロトコルの採用について詳しく説明します。

60秒でMCP

MCP は、AI モデルに外部ツールやデータへのアクセスを提供するオープン プロトコルです。 これは AI 用の USB-C ポート、つまり 1 つの標準インターフェイスと多数のツールと考えてください。 モデルは、どのツールをどのパラメータで呼び出すかを記述した 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 に 1 行で接続します。

# 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 月) Google (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

オーケストレーター エージェントは、「example.com のセキュリティ体制を監査する」などのリクエストを受け取ります。 これをサブタスクに分割し、A2A 経由で委任します。1 つのエージェントが DNS と SSL を調査し、別のエージェントが PII の公開をチェックし、3 番目のエージェントがレポートを編集します。 各エージェントは 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 サーバーの場合、匿名アクセスでは 1 分あたり 5 リクエスト、1 日あたり 100 リクエストが可能です。 API キーを Authorization 上限のヘッダー:

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

2026年に採択

MCP は有利なスタートを切りました。 Anthropic は 2024 年 11 月に MCP を出荷し、2026 年初めまでにすべての主要な AI コーディング アシスタントが MCP をサポートします。 Claude Desktop、Claude Code、Cursor、VS Code (GitHub Copilot)、Windsurf、ChatGPT はすべて MCP クライアントとして機能します。 このエコシステムには、データベース、API、ファイル システム、ブラウザ、開発者ツールをカバーする何千もの MCP サーバーがあります。

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、email_validate、tech_detect
テキストとデータ 10 json_format、base64_encode、csv_to_json、markdown_to_html
開発者 12 jwt_sign、uuid_generate、ハッシュ、cron_describe、regex_test
安全 5 aes_encrypt、pii_detect、totp_generate、credit_card_validate
変身 5 minify_js、sql_format、code_format、json_to_typescript

サーバーはストリーミング可能な HTTP トランスポートを使用し、エッジの Cloudflare Workers 上で実行され、1 行のセットアップ以外の構成は必要ありません。 各ツールには型指定された入力スキーマがあり、構造化された JSON を返します。 完全なツール マニフェストは次の場所にあります。 api.botoi.com/v1/mcp/tools.json

これは中核となる MCP です。つまり、1 つのサーバー、多数のツール、構造化 I/O、および互換性のあるクライアントが接続できる標準プロトコルです。

意思決定の枠組み

次の 3 つの質問をしてください。

  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 (Model Context Protocol) は、AI モデルを外部ツールやデータ ソースに接続します。 A2A (エージェント間) は、独立した AI エージェントを相互に接続し、タスクを委任し、結果を交換し、共同作業することができます。 MCP はツールへのアクセスを解決します。 A2A はエージェントの調整を解決します。 これらは AI システムのさまざまな層をターゲットにしており、一緒に実行できます。
MCP と A2A は同じシステム内で連携できますか?
はい。 一般的なパターンでは、オーケストレーション層でのエージェント間の通信に A2A を使用しますが、各エージェントは MCP を使用して独自のツールやデータ ソースにアクセスします。 オーケストレーター エージェントは、A2A 経由でタスクを委任します。 専門エージェントは、MCP ツールを呼び出してこれらのタスクを実行します。 2 つのプロトコルは異なる層で動作し、競合しません。
AI アプリケーションにはどのプロトコルを選択すればよいですか?
AI モデルが外部 API の呼び出し、データベースのクエリ、またはファイルの読み取りを行う必要がある場合は、MCP を使用します。 チームまたは組織の境界を越えて相互に作業を委任する必要がある複数の AI エージェントがある場合は、A2A を使用します。 単一のエージェントを超えて成長するほとんどの実稼働システムは、最終的に両方を使用することになります。
MCP は Anthropic モデルのみ、A2A は Google モデルのみですか?
いいえ。どちらもオープン プロトコルです。 MCP は、Claude、GPT、Gemini、Llama、およびツール呼び出しをサポートするあらゆるモデルで動作します。 A2A は、基礎となるモデルに関係なく、あらゆるエージェント ランタイムで動作します。 Anthropic は MCP を作成し、Google は A2A を作成しましたが、どちらのプロトコルも作成者に固定されていません。
各プロトコルはどのようなトランスポートを使用しますか?
MCP は、ローカル ツール サーバーの stdio とリモート サーバーのストリーミング可能な HTTP (JSON-RPC 2.0) をサポートします。 A2A は、すべての通信に HTTPS と JSON-RPC 2.0 を使用します。 どちらのプロトコルもメッセージのフォーマットに JSON を使用します。 MCP は、ツールの結果をストリーミングするための Server-Sent Events もサポートしています。

botoiで開発を始めよう

150以上のAPIエンドポイント。検索、テキスト処理、画像生成、開発者ユーティリティに対応。無料プラン、クレジットカード不要。