A2AとMCP:AIエージェントは本当に両方のプロトコルを必要とするのか?

MCPはエージェントにツールを提供し、A2Aはエージェントにピア(対等なパートナー)を提供します。

目次

AIエージェントアーキテクチャは、2つのレイヤーに分割されつつあります。

1つのレイヤーは、AIアシスタントにツール、データ、API、ファイル、データベース、検索システム、カレンダー、チケットシステム、その他の外部機能へのアクセス権を与えることに関わるものであり、ここでMCP(Model Context Protocol)が役割を果たします。

もう1つのレイヤーは、1つのAIエージェントが別のAIエージェント(別のチーム、フレームワーク、ベンダー、または組織によって構築された可能性があります)を発見し、通信し、委任し、協働することに関わるものであり、ここでA2A(Agent2Agent)が役割を果たします。

厄介なことに、これら2つのプロトコルはしばしば同じ問題を解決するかのように議論されますが、実際にはそうではありません。境界線にはオーバーラップ(重複)があり、その重複部分が混乱の大部分を生み出しています。しかし、明確なメンタルモデル(思考の枠組み)はシンプルです。

MCPは主にエージェントからツールへ、A2Aは主にエージェントからエージェントへの接続です。

A2AとMCPプロトコルアーキテクチャ — A2Aを介して接続されたAIエージェントが、それぞれMCPを介してツールにアクセスしている

すべてのAIシステムが両方を必要とする并不意味着(意味するものではありません)。実際、ほとんどの小規模なエージェントプロジェクトは、MCPから始め、実質的なマルチエージェントの境界が生まれるまでA2Aを無視するのが適切でしょう。ただし、より大規模なエージェントシステム、特に個別にデプロイされたエージェント、専門エージェント、ベンダー製エージェント、または長時間実行される委任タスクを含むシステムを構築している場合、A2Aは理にかなった選択肢となります。

本記事では、その違い、オーバーラップ、アーキテクチャのトレードオフ、および実際に両方を必要とするタイミングについて解説します。

MCPとは何か

MCPはModel Context Protocol(モデルコンテキストプロトコル)の略です。

これは、AIアプリケーションやエージェントを外部ツール、リソース、プロンプトに接続するためのオープンプロトコルです。実用的な観点から言えば、MCPはデスクトップアシスタント、IDE、コーディングエージェント、チャットアプリケーションなどのAIホストが、1つ以上のMCPサーバーに接続することを可能にします。

MCPサーバーは以下のような機能を公開できます。

  • ツール:モデルが呼び出すことのできる関数
  • リソース:ファイル、APIデータ、ドキュメント、データベースレコードなどの読み取り可能なコンテキスト
  • プロンプト:再利用可能なプロンプトテンプレートまたはワークフロー

公式のMCPアーキテクチャは、ホスト、クライアント、サーバーのモデルに基づいています。

MCPホストは、ユーザーが対話するアプリケーションです。MCPクライアントは、特定のMCPサーバーとの接続を維持するプロトコルコンポーネントです。MCPサーバーは、クライアントに対して機能を公開します。

例えば、コーディングアシスタントは以下に接続できます。

  • ファイルシステムMCPサーバー
  • GitHub MCPサーバー
  • データベースMCPサーバー
  • Sentry MCPサーバー
  • Slack MCPサーバー

ユーザーの視点からすると、アシスタントはより有用になります。システムアーキテクチャの観点からすると、アシスタントは外部コンテキストとアクションに対する制御されたアクセス権を取得したことになります。

MCPの主な価値はここにあります。それは、AIアプリケーションがツールとコンテキストに到達する方法を標準化するのです。

MCPはツール統合として理解するのが最も適切です

MCPはツールだけに関するものではありませんが、ツールはそれを理解する上で最も簡単な方法です。

MCPがない場合、各AIアプリケーションは外部システムごとにカスタム統合コードを必要とします。1つのエージェントフレームワークには独自のプラグイン形式があり、別のフレームワークには独自のツールスキーマがあり、さらに別のフレームワークには異なるAPIラッパーパターンがあります。すべての統合が再び一から再構築されます。

MCPはこの無駄を削減しようとしています。

ツールプロバイダーがMCPサーバーを公開する場合、多くのMCP互換クライアントがそれを利用できます。開発者が内部システムのMCPサーバーを構築する場合、複数のAIアプリケーションがそれに接続できます。GoでのMCPサーバーおよびPythonでのMCPサーバーの実装ガイドは、プロトコルが重い作業を担えば、統合レイヤーがいかにシンプルになるかを示しています。

MCPがこれほど急速に重要視されるようになった理由はここにあります。それは退屈しながらも痛々しい統合問題を解決するのです。

そして、退屈な統合問題こそが、誰もが必ず行う反復作業を削減するため、耐性のある標準が生まれる場所です。

A2Aとは何か

A2AはAgent2Agent Protocol(エージェント間プロトコル)の略です。

これは、独立したAIエージェントシステム間の通信と相互運用性のためのオープン標準です。個々のビルディングブロックであるエージェントカード、タスクライフサイクル、メッセージ、パーツ、アーティファクトについて深く見るためには、A2Aプロトコルとは?エージェントカードとタスクの説明をご参照ください。公式のA2A仕様では、このプロトコルを、異なるフレームワーク、言語、ベンダーで構築されたエージェントが共通の相互作用モデルを通じて通信する方法として定義しています。

重要なフレーズは「独立したエージェントシステム」です。

A2Aは、1つのアシスタントに電卓、データベース、またはファイルシステムへのアクセス権を与えることを主目的とするものではありません。それは、独自の機能、状態、ポリシー、タスクモデル、そして背後に独自のツールを持つ可能性がある別のエージェントと、1つのエージェントが通信することに関するものです。

A2Aエージェントは、エージェントカードを通じて何ができるかを宣伝できます。別のエージェントまたはクライアントはその機能を見つけ、タスクを送信し、メッセージを交換し、アーティファクトを受け取り、タスクのライフサイクルを追跡できます。

A2Aは以下のような概念を導入します。

  • エージェントカード
  • エージェントとクライアント
  • タスク
  • メッセージ
  • パーツ
  • アーティファクト
  • タスク状態
  • ストリーミングおよび非同期ワーク

これらすべての概念を合わせると、A2Aは単なるツール呼び出しプロトコルではなく、エージェント協働プロトコルのように感じられます。それは、エージェントがアイデンティティ、状態、および他のエージェントとの継続的な関係を持つというアイデアを中心に設計されています。

A2Aはエージェント協働として理解するのが最も適切です

ユーザーがエンタープライズアシスタントに以下のように尋ねると想像してください。

「日本の市場参入概要書を準備してください。法的考慮事項、価格リスク、およびローンチプロジェクト計画を含めてください。」

単純なアシスタントは、すべてを自分で行おうとするかもしれません。しかし、より大規模なエージェントシステムは、作業の一部を委任するかもしれません。

  • 調査エージェントが市場情報を収集する
  • 法務エージェントが規制上の考慮事項を確認する
  • 財務エージェントが価格リスクを推定する
  • プロジェクト計画エージェントが納品計画を作成する
  • 執筆エージェントが最終的な概要書を組み立てる

これらのエージェントがすべて1つのコードベース内の内部関数である場合、A2Aを必要としないかもしれません。単に関数やサービスを直接呼び出すことができます。

しかし、これらのエージェントが独立したシステムであり、異なるチームやベンダーによって所有されている可能性がある場合、標準的なエージェント間プロトコルが有用になります。

それがA2Aの使用ケースです。

A2AとMCP:単純な違い

最も単純な比較は以下の通りです。

質問 MCP A2A
主な関係 エージェントからツールへ エージェントからエージェントへ
主な目的 AIアプリをツール、データ、プロンプトに接続 独立したエージェント間の通信と協働を可能にする
典型的な作業単位 ツール呼び出しまたはリソース読み取り タスク、メッセージ、アーティファクト、委任
最も適した用途 ツール統合 マルチエージェントの相互運用性
エージェントがデータベースツールを呼び出す 調査エージェントが法務エージェントに委任する
スコープ コンテキストおよび機能へのアクセス エージェントの調整およびタスク交換

この表は完璧ではありませんが、初期のメンタルモデルを構築する上で有用です。簡潔に言えば、MCPは「このAIアプリケーションは外部機能にどのようにアクセスするか?」という問いに答え、A2Aは「このエージェントは別のエージェントとどのように連携するか?」という問いに答えます。

この区別は重要です。なぜなら、ツール統合とエージェント協働は異なる失敗モードを持つからです。悪いツール呼び出しは誤ったデータを返したり、誤ったファイルを修正したりする可能性がありますが、悪いエージェント委任は責任の連鎖を不明確にしたり、機密コンテキストを漏洩させたり、エージェント間でループしたり、作業を重複させたり、誰にも監査できないアーティファクトを生成したりする可能性があります。A2Aはアーキテクチャにおいて1段階上位に位置し、その失敗モードはそれに応じてより重大な結果をもたらします。

なぜ開発者はA2AとMCPを混同するのか

その混乱は理解できます。

多くのMCPサーバーは単なる愚かなツールではありません。一部のMCPサーバーはマルチステップの作業を実行できます。一部はエージェンティック(エージェント的な)に見える高レベルの機能を公開します。MCPサーバーは、計画サービス、検索システム、さらには別のLLM駆動のワークフローをラップする可能性があります。

その時点で、境界線は曖昧になります。

research_topic という名前のMCPツールが複雑な調査ワークフローを実行する場合、それはツールでしょうか、それともエージェントでしょうか?

正直な答えは、アーキテクチャ的には「場合による」です。

ホストがツールスキーマを持つ呼び出し可能な機能として扱う場合、それはツールとして機能しています。

独自のアイデンティティ、機能、タスクライフサイクル、メッセージ、アーティファクト、および委任動作を持っている場合、それはエージェントのように見えてきます。

これが、「A2A vs MCP」が宗教的な議論になるような間違った枠組みである理由です。より良い枠組みは以下の通りです。

  • この外部機能は、ツールとしてモデル化するべきでしょうか?
  • それとも、独立したエージェントとしてモデル化するべきでしょうか?

その決定がプロトコルの選択を決定するはずです。

MCPのみを使用する場合

ほとんどのAIプロジェクトはMCPのみから始めるべきです——これは多少意見的な立場ですが、実用的なものです。

コーディングアシスタント、内部チャットボット、ローカルAIワークフロー、パーソナルオートメーションエージェント、または単純なエンタープライズアシスタントを構築している場合、最初の課題は通常エージェント間協働ではありません。最初の課題はツールへのアクセスです。

アシスタントにファイルの読み取り、データベースのクエリ、ドキュメントの検索、APIの呼び出し、チケットの作成、ログの要約、メトリクスの検査、またはレコードの更新を行わせる必要があります。

MCPはそれに非常に適合します。

MCPのみを使用するべきケース:

  • エージェントが主にツールとデータへのアクセスを必要とする場合
  • ホストアプリケーションを制御している場合
  • ほとんどの統合を制御している場合
  • 外部システムが本当に自律的なエージェントではない場合
  • ワークフローが主に同期または短時間実行である場合
  • 通常のツール呼び出しで十分である場合
  • エージェントの発見を必要としない場合
  • エージェント間のタスク状態を必要としない場合
  • 独立したエージェントからのアーティファクトを必要としない場合

多くのシステムにとって、MCPと良いアプリケーションアーキテクチャがあれば十分です。多くのチームは、本当にツールを使用するアシスタントに過ぎないシステムにA2Aを過剰に設計しますが、それはプロトコルの問題ではなく、どのプロトコルでも修正できないアーキテクチャの規律の問題です。

A2Aのみを使用する場合

A2Aのみを使用するシステムはあまり一般的ではありませんが、存在し得ます。

システムが主にエージェント間の通信についてのもので、各エージェントが既に内部で独自のツールを管理している場合、MCPなしでA2Aを使用するかもしれません。

例えば:

  • 専門エージェントのマーケットプレイス
  • ベンダー間エージェント統合
  • 組織横断的なワークフロー
  • 各エージェントが独自のプライベートツールチェーンを持つマルチエージェントシステム
  • クライアントが内部ツールの詳細を知る必要のない委任ネットワーク

このモデルでは、A2Aは独立して管理されるエージェント間の公開境界です。エージェントAは、エージェントBが背後でPostgreSQL、Elasticsearch、MCP、LangChain、カスタムAPI、またはシェルスクリプトを使用しているかどうかを知る必要はありません。エージェントAは、エージェントBが何ができるか、タスクを送信する方法、および結果を受け取る方法を知るだけで十分です。

それはクリーンな抽象化です。

A2Aのみを使用するべきケース:

  • エージェントを独立したサービスとして公開する場合
  • 呼び出し側がエージェントの内部ツールを知る必要がない場合
  • エージェント機能の発見が重要な場合
  • 直接のツールアクセスよりも委任が重要である場合
  • タスクが長時間実行される可能性がある場合
  • 結果にアーティファクトが含まれる可能性がある場合
  • エージェントが異なるベンダーまたはチームによって構築される場合

A2Aは、独立して所有されたエージェントが内部ツールチェーンを公開せずにタスクとアーティファクトを交換する必要があるシステム境界で最も強みを発揮します。それは、すべてのエージェントランタイムのすべてのレイヤーに配線する必要があるプロトコルではありません。

A2AとMCPの両方を使用する場合

最も興味深いアーキテクチャはA2A vs MCPではありません。それはA2A plus MCPです。

このパターンでは、エージェントは他のエージェントに対してA2Aインターフェースを公開しますが、内部ではツールへのアクセスにMCPを使用します。

これにより、2つのクリーンなレイヤーが得られます。

  • A2Aは外部:エージェントが互いどのように通信するか
  • MCPは内部:各エージェントがツール、データ、サービスにどのようにアクセスするか

これはおそらく最も耐久性のあるメンタルモデルです。

カスタマーサポートエージェントはA2Aインターフェースを公開するかもしれません。他のエージェントはサポート関連のタスクをそれに委任できます。内部的には、サポートエージェントはZendesk、Slack、ドキュメント検索、CRM検索、内部ポリシー検索のためにMCPサーバーを使用します。

DevOpsエージェントはA2Aインターフェースを公開するかもしれません。他のエージェントはインシデントの調査を依頼できます。内部的には、Prometheus、Grafana、GitHub、Kubernetes、ログ、クラウドAPIのためにMCPサーバーを使用します。

財務エージェントはA2Aインターフェースを公開するかもしれません。他のエージェントは予算分析を要求できます。内部的には、スプレッドシート、会計システム、請求書データベース、予測モデルのためにMCPサーバーを使用します。

このパターンは、エージェント間のクリーンな境界を維持します。他のエージェントはすべてのツールへの直接アクセスを必要としません——それらは専門エージェントと通信し、そのエージェントがタスクを完了するために内部的にどのツールが必要かを決定します。

それは現実の組織が動作する傾向とも似ています。誰もが直接本番データベースへのアクセス権を持つわけではありません。そのドメインを担当するチームやサービスに依頼します。

リファレンスアーキテクチャ:A2Aは外部、MCPは内部

実践的なマルチエージェントアーキテクチャは以下のようになるかもしれません。

ユーザー
  |
  v
プライマリアシスタントまたはオーケストレーター
  |
  |-- A2A --> 調査エージェント
  |              |
  |              |-- MCP --> Web検索
  |              |-- MCP --> ドキュメントストア
  |
  |-- A2A --> コーディングエージェント
  |              |
  |              |-- MCP --> GitHub
  |              |-- MCP --> ファイルシステム
  |              |-- MCP --> CIシステム
  |
  |-- A2A --> DevOpsエージェント
                 |
                 |-- MCP --> メトリクス
                 |-- MCP --> ログ
                 |-- MCP --> Kubernetes

この設計では、A2Aはエージェント間の委任を処理し、MCPは各エージェントとそのツール間の統合を処理します。オーケストレーターは、各専門家に利用可能なすべてのツールを知る必要はありません——それはどのエージェントがどのタイプの作業を担当しているかを知るだけでよく、これによりツールオーバーロードを軽減し、全体アーキテクチャをよりモジュール化されたものに保ちます。そのオーケストレーターレイヤーの内部トポロジー——ハブアンドスポーク、階層型ツリー、ファンアウト、またはメッシュを使用するかどうか——は、マルチエージェントオーケストレーションパターンでカバーされている別の設計決定です。推論、メモリ、ルーティング、およびツールリングがプロダクションアシスタント内でどのように統合されるかについて深く見るためには、AIアシスタントアーキテクチャ:LLM、メモリ、ツール、ルーティング、観測性がそれらのレイヤーを詳細に説明しています。

A2Aが過剰であるとき

「他のエージェント」が本当に単なる関数である場合、A2Aは過剰です。

アプリケーションにいくつかのツールを呼び出す1つのLLMワークフローがある場合、モダンだからといってA2Aを追加しないでください。Python関数、HTTPエンドポイント、キュー、またはMCPツールで十分な場合があります。

A2Aが多すぎる場合:

  • エージェントが1つしかない場合
  • すべてのコンポーネントが1つのコードベースにある場合
  • ワークフローが短く同期である場合
  • 発見を必要としない場合
  • 独立したタスク状態を必要としない場合
  • 別個のエージェントアイデンティティを必要としない場合
  • サードパーティエージェントを想定していない場合
  • ベンダーまたはフレームワークの相互運用性を必要としない場合

プロトコルは無料ではありません——それらは概念、インフラストラクチャ、デバッグの表面、セキュリティ上の懸念、および運用コストを追加します。退屈なAPIまたは単純な関数呼び出しが、時にはより良い工学的选择であることがあり、必要性ではなく習慣のためにA2Aに手を伸ばすことは、それ自体が一種の過剰設計です。よりシンプルなオプションを選択することは、A2Aに反対しているのではなく、アーキテクチャを支持しています。

MCPでは不十分なとき

MCPは、明らかにエージェントであるものを表すために使用されるようになると、不十分だと感じ始めます。

例えば、MCPサーバーが以下のツールを公開すると仮定します。

complete_enterprise_procurement_review

そのツールは以下のことを実行します。

  • ベンダーデータを読み取る
  • ポリシールールを確認する
  • 明確化のための質問をする
  • 法務レビューを委任する
  • リスクレポートを生成する
  • 複数のアーティファクトを返す
  • 20分間実行する
  • タスク状態を維持する
  • 監査履歴を必要とする

ある時点で、その機能を「ツール」と呼ぶのは不自然になります。なぜなら、それはもはや単純な呼び出し可能な関数ではなく、独自の状態、委任、および監査要件を持つワークフローを所有する専門家だからです。それはまさにA2Aが、ツールの抽象化を自然な境界を超えて引き伸ばすよりも適切な適合となる場所です。

MCPは強力なツールを公開できますが、エージェントのアイデンティティ、ピア協働、タスク所有権、委任セマンティクス、またはマルチエージェント監査証跡を魔法のように解決するわけではありません。

それらが実際の問題である場合、あなたはA2Aの領域にいるのです。

セキュリティ:誰もが過小評価する部分

セキュリティモデルは、A2AとMCPの両方が深刻になる場所です。

MCPはエージェントにツールとデータへのアクセス権を与えます。それは、AIシステムがファイルを読み取り、データベースをクエリし、APIを呼び出し、メッセージを送信し、チケットを更新し、インフラストラクチャアクションをトリガーできることを意味します。

A2Aはエージェントが作業を他のエージェントに委任することを許可します。それは、1つのエージェントがコンテキストを渡し、アクションを要求し、別のエージェントからアーティファクトを受け取ることができることを意味します。

両方とも強力です。両方とも危険です。

主なセキュリティ上の質問は異なります。

MCPの場合:

  • このエージェントはどのツールを使用できますか?
  • どのデータを読み取れますか?
  • どのアクションを実行できますか?
  • ユーザーはアクションを承認しますか?
  • ツールメタデータはモデルを操作できますか?
  • ローカルおよびリモートサーバーは信頼されていますか?

A2Aの場合:

  • どのエージェントが互いに通信することを許可されていますか?
  • 各エージェントのアイデンティティは何ですか?
  • エージェントAはエージェントBに権限を委任できますか?
  • どの程度のコンテキストが共有できますか?
  • 最終結果に責任があるのは誰ですか?
  • タスクチェーンは監査できますか?

これが、「すべてを接続する」のが悪い戦略である理由です。追加するプロトコルが増えるほど、システムを安全かつ監査可能に保つために、ポリシー、アイデンティティ、ログ、承認フロー、および最小権限パーミッションが必要になります。

良いプロダクションアーキテクチャには以下が含まれるべきです。

  • エージェントアイデンティティ
  • ツールアイデンティティ
  • ユーザーアイデンティティ
  • スコープされたパーミッション
  • リスキーなアクションのための承認ゲート
  • タスクレベルの監査ログ
  • ツール呼び出しログ
  • 委任ログ
  • アーティファクトの起源
  • レートリミット
  • タイムアウトポリシー
  • 出口制御

A2AとMCPの両方で構築する場合、セキュリティは後付けではありません。それはアーキテクチャの一部です。A2AとMCPエージェントセキュリティ:アイデンティティ、委任、および監査証跡は、完全な脅威モデル、アイデンティティレイヤー、ゲートウェイパターン、および委任制御を深く解説しています。

観測性:ログだけでなくトレースが必要です

マルチエージェントシステムはデバッグが困難です。

ユーザーが1つの質問をします。オーケストレーターが2つのエージェントを呼び出します。1つのエージェントが3つのツールを呼び出します。別のエージェントが部分的な進行状況をストリーミングします。3つ目のエージェントが失敗して再試行します。最終的な答えは理にかなっていますが、どのデータソースがそれに影響を与えたか誰も知りません。

それはプロダクションでは受け入れられません。

MCP中心のシステムでは、以下を観測する必要があります。

  • ツールの選択
  • ツールの引数
  • ツールの結果
  • ツールの遅延
  • ツールのエラー
  • ユーザーの承認
  • モデルに注入されたコンテキスト

A2A中心のシステムでは、以下を観測する必要があります。

  • エージェントの発見
  • タスクの作成
  • タスク状態の変更
  • エージェント間メッセージ
  • 生成されたアーティファクト
  • 委任チェーン
  • 失敗と再試行
  • 最終答えの起源

システムがよりエージェンティックになるほど、トレーサビリティは重要になります——作業が複数のエージェント、ツール呼び出し、アーティファクトの手渡しに及ぶ場合、単なるアプリケーションログでは不十分です。答えがその起源にまで遡れるように、完全な実行経路を追跡するタスクトレースが必要です。LLMシステムの観測性:メトリクス、トレース、ログ、およびプロダクションでのテストはこのツールリングと計装の側面を深く説明しています。エージェントが長時間実行されるA2Aタスクで進行状況をストリーミングするか、input_required で一時停止する場合、A2Aストリーミングと非同期タスク:長時間実行エージェントワークフロー用が、各状態遷移と委任ホップで何をログに記録するかを説明しています。

決定フレームワーク:A2A、MCP、両方、またはどちらも必要ないか?

この決定フレームワークを使用してください。

シンプルなコードで十分である場合はどちらも使用しない

以下の条件で、通常の関数、API、またはキューを選択します。

  • すべてのコンポーネントを制御している場合
  • LLMネイティブなツール発見を必要としない場合
  • エージェント相互運用性を必要としない場合
  • システムが決定論的である場合
  • 統合が安定してシンプルである場合

すべての統合がAIプロトコルを必要とするわけではありません。

エージェントがツールを必要とする場合はMCPを使用する

以下の条件で、MCPを選択します。

  • AIアプリが外部データを必要とする場合
  • エージェントがツールを呼び出す必要がある場合
  • 再利用可能な統合を望む場合
  • ツール発見を望む場合
  • 標準的なクライアント-サーバー統合を望む場合
  • コーディングエージェント、アシスタント、IDE、または内部ツールを構築している場合

これは、ほとんどのビルダーにとってデフォルトの開始点です。

エージェントがピアを必要とする場合はA2Aを使用する

以下の条件で、A2Aを選択します。

  • エージェントが独立してデプロイされている場合
  • エージェントが互いを発見する必要がある場合
  • エージェントが異なるチームまたはベンダーによって構築されている場合
  • タスクが長時間実行される場合
  • 委任が重要である場合
  • アーティファクトが重要である場合
  • ツール境界ではなく、エージェント境界を必要とする場合

これは、アーキテクチャの単位がエージェントであるときに正しい選択です。

専門エージェントがツールを必要とする場合は両方を使用する

以下の条件で、両方を選択します。

  • エージェントが互いに協働する場合
  • 各エージェントがまたツールへのアクセスを必要とする場合
  • 委任と実行間のクリーンな境界を望む場合
  • プライベートな内部ツールチェーンを持つ専門エージェントを望む場合
  • スケーラブルなマルチエージェントアーキテクチャを望む場合

これは、最も現実的なエンタープライズパターンです。

一般的なアンチパターン

アンチパターン1:すべてのツールをエージェントにする

すべての関数がエージェントラッパーに値するわけではありません。

通貨変換APIはたぶんツールです。データベースクエリはたぶんツールです。ファイルリーダーはたぶんツールです。

すべての小さな機能をA2Aエージェントとしてラップすると、不要な複雑さが生じます。

アンチパターン2:1つのMCPツールの背後に全体のエージェントを隠す

逆の間違いも一般的です。

MCPツールが秘密裏に長時間、ステートフル、マルチエージェントのワークフローを実行する場合、MCPの抽象化は薄すぎになるかもしれません。タスク状態、委任、アーティファクト、および責任への可視性を失います。

その時点で、それはA2Aの境界に値するかもしれません。

アンチパターン3:すべてのエージェントがすべてのツールを呼び出せるようにする

これは権限の混乱を生みます。

専門エージェントはスコープされたツールを持つべきです。執筆エージェントはたぶん本番データベースへのアクセスを必要としません。調査エージェントはたぶんインフラストラクチャをデプロイする権限を必要としません。

最小権限を使用してください。

アンチパターン4:リスキーなアクションに人間の承認がない

エージェンティックシステムは、サイレントに高影響のアクションを実行すべきではありません。

以下のようなアクションには人間の承認が必要です。

  • 外部メールの送信
  • 本番データの修正
  • インフラストラクチャのデプロイ
  • ファイルの削除
  • パーミッションの変更
  • サービスの購入
  • 機密データの共有

プロトコルは統合を容易にします。それらは説明責任を取り除くものではありません。

実用的な例

例1:ローカルコーディングアシスタント

ローカルコーディングアシスタントはMCPを使用して以下にアクセスします。

  • ファイルシステム
  • Gitリポジトリ
  • テストランナー
  • パッケージマネージャー
  • ドキュメント検索

たぶんA2Aを必要としません。

MCPで十分です。

例2:エンタープライズサポートアシスタント

サポートアシスタントはMCPを使用して以下にアクセスします。

  • CRM
  • チケットシステム
  • ドキュメント
  • Slack
  • カスタマーデータベース

最初はMCPで十分です。

後で、会社は専門エージェントを追加します。

  • 請求エージェント
  • 法務ポリシーエージェント
  • 製品トラブルシューティングエージェント
  • エスカレーションエージェント

これで、サポートアシスタントが作業を他のエージェントに委任する必要があるため、A2Aが理にかなってきます。

両方を使用します。

例3:エージェントマーケットプレイス

プラットフォームは、サードパーティエージェントが機能を宣伝し、他のエージェントからタスクを受け取ることを許可します。

プラットフォームは、各エージェントの内部実装を知りません。

A2Aは強力な適合です。

個々のエージェントは内部でMCPを使用し続けるかもしれませんが、公開境界はA2Aです。

例4:データ分析エージェント

データ分析エージェントはウェアハウスをクエリし、ダッシュボードを読み取り、チャートを生成し、レポートを書きます。

それがツールを使用する単一エージェントである場合、MCPで十分です。

それが統計レビューを1つのエージェントに、ビジネス説明を別のエージェントに、コンプライアンスレビューを別のエージェントに委任する場合、A2Aが有用になります。

私の意見的な見解

MCPはほとんどのビルダーにとって実用的なデフォルトであり、A2Aは実質的なエージェント間調整のニーズを持つようになった時点で、大規模システムが成長していくアーキテクチャの境界です。

最初の有用なAIエージェントを構築している場合、MCPから始めてください。AIシステムクラスターは、セルフホスト型アシスタント、MCPサーバー、およびエージェントメモリを接続されたセットとしてカバーしており、それらのピースが実際にどのように統合されるかについてのより広範な視図を提供します。エージェントに安全で、適切にスコープされたツールとデータへのアクセスを与えてください。ツール記述が破綻する場所を学びます。パーミッションが複雑になる場所を学びます。観測性が弱い場所を学びます。

マルチエージェントの幻想的なアーキテクチャから始めてはいけません。

しかし、システムに独立して所有された複数のエージェントがある場合、A2Aははるかに興味深くなります。それは、エージェント機能、タスク委任、およびエージェント間協働をよりクリーンに表現する方法を提供します。

A2AとMCPを競争相手として扱うのが間違いです。

それらは異なるレイヤーとして理解されるべきです。

  • MCPはエージェントを機能に接続します。
  • A2Aはエージェントを他のエージェントに接続します。

MCPのみで有用なシステムを構築できます。

A2Aのみでエージェントネットワークを構築できます。

しかし、最もスケーラブルなパターンはたぶん両方です:エージェント協働のためのA2A、ツール統合のためのMCP。

最終判決:AIエージェントは本当に両方を必要とするのか?

時々——しかし常にではなく、答えはほとんど完全に、システムに真のエージェント間境界があるか、それとも単にツールを使用する関数のコレクションがあるかに依存します。

AIエージェントがツールだけを必要とする場合、MCPを使用してください。

AIシステムが独立してデプロイされたエージェントの協働を必要とする場合、A2Aを使用してください。

専門エージェントがツールを必要とし、また他のエージェントと協働する必要がある場合、両方を使用してください。

最もクリーンなアーキテクチャは「A2A vs MCP」ではありません——それはエージェント境界でのA2Aとツール境界でのMCPであり、各プロトコルが設計された正確な問題を処理します。その懸念の分離は、マルチエージェントシステムを理解可能、安全、そして時間とともに進化しやすいものに保つものです。

2026年のA2Aの位置付け——採用ティア、セキュリティ要件、エンタープライズ使用ケース、およびそれを導入するタイミングの決定フレームワーク——についてより広範な視図を得るためには、2026年のGoogle A2Aプロトコル:採用、過熱、および現実をご参照ください。

出典

購読する

システム、インフラ、AIエンジニアリングの新記事をお届けします。