Agent2Agent 入門 (4) - A2AとMCP
「A2A」と「MCP」の関係についてまとめました。
前回
1. はじめに
「MCP」がAIエージェントとツール・リソースの連携に関するプロトコルだったのに対し、「A2A」はAIエージェント同士の連携にするプロトコルになります。エージェントアプリケーションには「A2A」と「MCP」の両方が必要です。
2. 異なるプロトコルが必要な理由
「MCP」と「A2A」の違いは、エージェントが対話する対象の性質にあります。
2-1. ツール ・ リソース
「ツール」と「リソース」は、定義が明確で構造化された入出力を持ちます。。多くの場合ステートレス (状態を保持しない) で、電卓やデータベースクエリAPI、天気予報検索サービスなど単一の機能を実行します。その動作は予測可能で、インタラクションは基本的に「リクエスト → レスポンス」の一回限りです。
2-2. エージェント
「エージェント」はより自律的で複雑なシステムです。推論や計画立案、複数のツール連携、長期にわたる状態管理を行い、複数ターンにまたがる対話を通じて課題を解決します。そのふるまいは創発的で、単純なツールに比べ予測困難で、インタラクションには多段階・多面的なやり取りが含まれます。
3. Model Context Protocol (MCP)
「MCP」は、AIエージェントがツール・リソースに接続し、対話する方法を標準化します。
・メカニズム
ツールの機能を記述するための構造化された方法 (LLMにおけるFunction Callingに類似)、ツールへの入力の受け渡し、構造化された出力の受け取りを定義します。
・ユースケース
・LLMが外部APIを呼び出す (例 : 現在の株価の取得)
・エージェントをデータベースに接続
・エージェントを定義済みの関数に接続
4. Agent2Agent Protocol (A2A)
「A2A」は、独立したAIエージェントが互いに通信し、連携する方法を標準化します。
・メカニズム
エージェントが以下の機能を実現するためのアプリケーションレベルのプロトコルを提供します。
・Agent Cardを介して 互いの機能を発見する。
・テキスト、ファイル、構造化データなどのインタラクション形式をネゴシエート。
・ステートフルで、実行時間が長くなる可能性のある共有タスクを管理。
・会話のコンテキスト、指示、複雑で複数の要素から成る結果を交換。
・ユースケース
・顧客サービスエージェントが、複雑な請求の問い合わせを専門の請求エージェントに委任し、顧客とのインタラクションのコンテキストを維持。
・旅行計画エージェントが、フライト、ホテル、アクティビティの予約エージェントと連携し、複数段階の予約プロセスを管理。
・エージェントが、時間の経過とともに進化する共同プロジェクトのために、情報やステータスの更新を交換。
5. A2A と MCP がどのように相互に補完するか
「A2A」と「MCP」は相互に排他的ではなく、補完的であり、エージェントシステムのインタラクションニーズの異なるレイヤーに対応します。

エージェントアプリケーションは「A2A」を使用して他のエージェントと通信しますが、各エージェントは内部的に「MCP」を使用して特定のツールやリソースと対話します。
5-1. シナリオ例 : 自動車修理工場
自律型AIエージェント「メカニック」が、車両ジャッキ、マルチメーター、ソケットレンチなどの専用工具を用いて問題を診断・修理する自動車修理工場を想像してみてください。作業員は、これまで経験したことのない問題を診断・修理しなければならないことがよくあります。修理プロセスには、顧客との綿密な話し合い、調査、部品サプライヤーとの連携などが含まれる場合があります。
(1) 顧客とのやり取り (ユーザーとエージェント間のA2A経由の通信)
・顧客 (または担当アシスタントエージェント) が「A2A」を使用して「ショップマネージャ」エージェントとやり取りします。「車からガタガタ音がします。」
・ショップマネージャエージェントは「A2A」を使用して、複数ターンにわたる診断会話を行います。「音の動画を送っていただけますか?」「液体が漏れているのが見えます。どれくらい前からこの状態になっているのですか?」
(2) 内部ツールの使用 (MCP経由のエージェントからツールへの通信)
・ショップマネージャからタスクを割り当てられたメカニックエージェントは、問題を診断する必要があります。メカニックエージェントは、「MCP」を使用して専用ツールと連携します。
・MCPによる「車両診断スキャナー」ツールの呼び出し
scan_vehicle_for_error_codes(vehicle_id='XYZ123')
・MCPによる「修理マニュアルデータベース」ツールの呼び出し
get_repair_procedure(error_code='P0300', vehicle_make='Toyota', vehicle_model='Camry')
・MCPによる「プラットフォームリフト」ツールの呼び出し
raise_platform(height_meters=2)
(3) サプライヤーとのやり取り (エージェント間、A2A経由)
・メカニックエージェントは特定の部品が必要だと判断します。A2Aを使用して「部品サプライヤー」エージェントとやり取りします。「トヨタ カムリ 2018用の部品番号12345の在庫はありますか?」
・同じくA2A準拠システムである部品サプライヤーエージェントが応答し、注文につながる可能性があります。
この例では、次のようになります。
・「A2A」は、顧客と整備工場間、そして整備工場のエージェントと外部サプライヤーのエージェント間における、より高レベルかつ会話的でタスク指向のインタラクションを促進します。
・「MCP」は、整備士エージェントが独自の構造化されたツールを使用して診断および修理機能を実行できるようにします。
6. A2AエージェントをMCPリソースとして提供
「A2A」サーバ (リモートエージェント) が、そのスキルの一部をMCP互換リソースとして公開することも考えられます。特に、それらのスキルが明確に定義されており、ツールのようにステートレスな方法で呼び出せる場合です。そのような場合、別のエージェントは、MCPスタイルのツール記述 (おそらくAgent Cardから派生したもの)を介して、このA2Aエージェントの特定のスキルを「発見」する可能性があります。
しかし、「A2A」の最大の強みは、一般的なツール呼び出しを超えた、より柔軟でステートフルで協調的なインタラクションをサポートすることにあります。「A2A」はエージェントがタスクを共同で遂行することを目的としており、「MCP」はエージェントが機能を使用することに重点を置いています。
エージェント間の連携に「A2A」を活用し、ツール統合に「MCP」を活用することで、開発者はより強力で柔軟性が高く、相互運用性の高いAIシステムを構築できます。
