🐽

次のMCP??A2Aはなんですか

2025/04/11に公開

Model Context Protocol(MCP)

MCP 概要

  • MCP はオープンプロトコルであり、アプリケーションが大規模言語モデル(LLMs)にコンテキストを提供する方法を標準化することを目的としています。AI アプリケーションの「USB-C ポート」に例えられ、AI モデルが異なるデータソースやツールに接続するための標準化された経路を提供します。

MCP の役割

  • LLM をベースにしたエージェントや複雑なワークフローの構築を支援します。LLM は多くの場合、データやツールの統合が必要ですが、MCP はあらかじめ構築された統合リストを提供し、LLM が直接アクセスできるようにします。異なる LLM プロバイダー間の柔軟な切り替えをサポートし、インフラストラクチャ内でデータセキュリティを確保するためのベストプラクティスを提供します。

MCP アーキテクチャ

  • クライアント - サーバーアーキテクチャを採用しています。
    • ホスト(Host):LLM アプリケーションとして、システムの調整や LLM との対話管理を担当します。複数のクライアントの初期化と管理、クライアント - サーバーのライフサイクル管理、ユーザー認証の決定処理、クライアント間のコンテキスト集約管理などを行います。例として Claude Desktop や Cursor IDE などがあります。
    • クライアント(Client):サーバーと一対一のステートフル接続を維持し、メッセージのルーティング、サーバー機能の監視、プロトコルバージョンと機能の交渉、サブスクリプションの管理を担当し、通信の境界を明確にしてセキュリティの分離を確保します。
    • サーバー(Server):ツール、リソース、プロンプトテンプレートを通じて LLM に外部データとコンテキストを提供します。ツールは実行可能な関数で、LLM が外部アプリケーションと対話することを可能にします。リソースにはテキストファイル、ログファイルなどが含まれ、LLM に追加コンテキストを提供します。プロンプトテンプレートは言語モデルとの対話を導くための事前定義されたテンプレートです。
    • 基本プロトコル(MCP Protocol):各コンポーネント間の通信方法を定義し、JSON-RPC メッセージタイプとライフサイクル管理が中心となります。また、転送メカニズムなども含まれ、MCP 実装の重要な部分です。
  • MCP ホスト(Claude デスクトップアプリケーション、統合開発環境(IDEs)、AI ツールなど)は、MCP クライアントを通じて複数の MCP サーバーに接続します。MCP クライアントはサーバーと一対一の接続を維持し、MCP サーバーは標準化されたプロトコルを通じて特定の機能を公開する軽量プログラムです。ローカルデータソースとリモートサービスは、それぞれコンピューター上のファイル、データベース、サービス、およびインターネット上の外部システム(API を通じてアクセスするなど)を指し、MCP サーバーによってアクセスされることができます。

Agent2Agent Prototol (A2A)

A2A 概要

  • Googleの Agent2Agent(A2A)プロトコルは2025年4月9日に発表されました。A2Aは、現在のエージェント間の相互運用性の欠如を解決し、異なるフレームワークやベンダーによって構築された自律型エージェント間、およびエージェントとユーザー間の効果的なコミュニケーションと連携を実現するための全く新しいオープンプロトコルです。

A2A の役割

  • A2Aはアプリケーション層プロトコルであり、エージェントが自然な方法で協力できるようにします。これにより、エージェント同士がツールとしてではなく、エージェント(またはユーザー)のように通信することが可能になります。A2AはMCPを補完し、エージェントエコシステムの発展を促進することが期待されており、Googleもこのプロセスを推進するためにコミュニティと公開で協力していきます。

A2A プロトコルの利点

  • シームレスなエージェント連携の実現:標準プロトコルを導入することで、異なるフレームワークに基づく、異なるベンダーによって開発された自律的で不透明なエージェント間の効果的なコミュニケーションと協力を可能にし、エージェント間の相互作用の障壁を取り除きます。
  • 企業におけるエージェント統合の簡素化:企業が既存のアプリケーションにエージェントを統合するための便利な方法を提供し、企業が自社の技術システム内でエージェントの能力を最大限に活用し、ビジネス効率とインテリジェンスレベルを向上させることを可能にします。
  • 重要な企業ニーズへの対応:能力発見、ユーザーエクスペリエンスのネゴシエーション、タスクと状態の管理、および安全な協力などの核心機能を備え、企業レベルのエージェントエコシステムのセキュリティと機能性に関する厳格な要求を満たし、企業環境におけるエージェントの安定した運用と効率的な協力を保証します。

A2A の主要コンポーネント

  • Agent Card(エージェントカード):公開メタデータファイルです。エージェントの能力、スキル、エンドポイントURL、認証要件などの情報を記述し、主にクライアントがエージェントを発見するために使用されます。これはクライアントがエージェントを理解し、相互作用するための重要なエントリーポイントです。
  • A2A Server(A2Aサーバー):HTTPエンドポイントを公開するエージェントで、A2Aプロトコルメソッドを実装する役割を担います。クライアントからのリクエストを受け取り、タスクの実行プロセスを管理し、相互作用全体においてコアな処理と調整の役割を果たします。
  • A2A Client(A2Aクライアント):アプリケーションまたは別のエージェントで、A2Aサービスを消費するために使用されます。A2A ServerのURLにtasks/sendなどのリクエストを送信することでタスクを開始し、相互作用プロセス全体を駆動します。
  • Task(タスク):作業の中核単位であり、クライアントがtasks/sendまたはtasks/sendSubscribeメッセージを送信することで開始されます。各タスクには一意のIDがあり、submitted(提出済み)、working(作業中)、input-required(入力が必要)、completed(完了)、failed(失敗)、canceled(キャンセル)など、異なる状態間を遷移してタスクの進捗を追跡します。
  • Message(メッセージ):クライアント(role: "user")とエージェント(role: "agent")間の通信ラウンドを表します。メッセージは複数のPartsで構成されており、Partsはメッセージの基本コンテンツ単位です。TextPart(テキスト部分)、FilePart(ファイル部分、インラインバイトまたはURIを含む)、DataPart(フォームなどの構造化JSONのため)があり、これらの異なるタイプのPartsを通じて、メッセージは豊富で多様な情報を伝達できます。
  • Artifact(アーティファクト):タスク実行中にエージェントによって生成される出力で、生成されたファイルや最終的な構造化データなどが含まれます。これもPartsを含み、タスクの結果の具体的な表現であり、エージェントがタスクを処理した後に生成する有用な情報を担っています。

A2A 相互作用メカニズム

  • Discovery(発見):クライアントはサーバーの既知のURLからAgent Cardを取得し、サーバー上のエージェントに関する情報を理解して、後続の相互作用の準備をします。
  • Initiation(開始):クライアントはtasks/sendまたはtasks/sendSubscribeリクエストを送信し、初期ユーザーメッセージと一意のタスクIDを含めることでタスクを開始します。
  • Processing(処理):streaming(ストリーミング)機能をサポートするサーバーの場合、タスク実行中にServer-Sent Events(SSE)を通じてTaskStatusUpdateEvent(タスク状態更新イベント)またはTaskArtifactUpdateEvent(タスクアーティファクト更新イベント)メッセージをクライアントに送信し、タスクの進捗をリアルタイムで知らせます。ストリーミングをサポートしていないサーバーの場合は、タスクを同期的に処理し、レスポンスで最終的なTaskオブジェクトを返します。
  • Interaction(相互作用、オプション):タスクがinput-required状態になった場合、クライアントは同じタスクIDを使用して、tasks/sendまたはtasks/sendSubscribeを通じて後続のメッセージを送信し、タスクを継続する必要があります。
  • Completion(完了):タスクは最終的にcompleted、failed、またはcanceledなどの終端状態に達し、タスクの終了を示します。

A2AとMCPの関係

  • MCP(モデルコンテキストプロトコル)はツールとリソースを使用して、構造化された入出力を持つツール、API、リソースにエージェントを接続するためのものです。Google ADKはMCPツールをサポートしているため、幅広いMCPサーバーをエージェントと共に使用することができます。
  • A2A(Agent2Agent プロトコル)はエージェント間の協力のためのもので、共有メモリ、リソース、ツールを必要とせずに、異なるエージェント間で動的かつマルチモーダルな通信を可能にします。コミュニティ主導のオープンスタンダードです。Google ADK、LangGraph、Crew.AIで例を見ることができます。

共通点

  • オープンプロトコル:A2AとMCPはともにオープンプロトコルです。これは、それらの仕様が公開されており、どの開発者もこれらのプロトコルに基づいて開発できることを意味します。これにより、異なるシステムやコンポーネント間の相互作用と統合が促進され、多様で相互運用可能なAIエコシステムの構築の基盤が築かれています。
  • 相互作用性の向上:両者ともに人工知能関連コンポーネント間の相互作用能力の向上に取り組んでいます。A2Aは異なるエージェントが互いに通信・協力できるようにし、MCPは大規模言語モデルとデータ、ツール間の統合を実現し、各部分の協働をよりスムーズにします。
  • エコシステム発展の推進:両者ともにAIエコシステムの発展を推進する役割を果たしています。A2Aはエージェントエコシステムの形成を促進し、MCPはツールサービスプロバイダーのエコシステムを構築し、エージェントとツール・データの接続の複雑さを低減させ、共にAI分野の発展と革新を支援しています。

相違点

  • 応用シナリオ:A2Aは異なるエージェント間の協力問題の解決に焦点を当て、複数のエージェントが協力してタスクを完了するシナリオに適しています。MCPは主に大規模言語モデルとデータ、リソース、ツールを接続するために使用され、言語モデルに追加のコンテキストと機能サポートを提供し、モデルのタスク処理能力向上に役立ちます。
  • 相互作用の対象:A2Aプロトコルは主にエージェント間の相互作用、ユーザー、リモートエージェント、他のエージェントとの通信を実現します。MCPは大規模言語モデルと外部ツール、データソースとの相互作用に重点を置き、モデルに構造化された入出力サポートを提供します。
  • 機能特性:A2Aはタスク管理、メッセージ相互作用、ストリーム処理、プッシュ通知などの機能を持ち、エージェント間の複雑な相互作用プロセスをサポートします。MCPはリソース管理、ツール呼び出し、プロンプトテンプレートの使用、標準化された認証メカニズムを強調し、モデルのアプリケーション能力とセキュリティを向上させます。
  • 標準化内容:A2Aはエージェント間の通信と協力方法を標準化し、エージェント能力の記述、タスク処理、メッセージフォーマットなどを含みます。MCPはモデルが外部データとツールを取得する方法を標準化し、リソースアクセス、ツール実行、データ相互作用の標準パターンを規定します。

A2AとMCPの応用例

ある自動車修理店を想像してみましょう。この店は自動車の修理を担当しています。店には自律的に働く従業員がおり、彼らは専用ツール(ジャッキ、マルチメーター、ソケットレンチなど)を使用して問題を診断・修理します。これらの従業員は、以前に遭遇したことのない問題に対処する必要がよくあります。修理プロセスには、顧客との詳細な対話、調査、部品サプライヤーとの協力が含まれることがあります。

今、店内の従業員をAIエージェントとしてモデル化すると:

MCPは、これらのエージェントを構造化されたツールに接続するためのプロトコルです(例:プラットフォームを2メートル上げる、レンチを右に4ミリメートル回す)。

A2Aは、エンドユーザーや他のエージェントが店内の従業員と協力できるようにするプロトコルです(例:「私の車がガタガタ音を立てています」)。A2Aは継続的な双方向コミュニケーションと、目標達成のための進化し続ける計画の作成をサポートします(例:「左のホイールの写真を送ってください」、「液体漏れに気づきました。この状態はどのくらい続いていますか?」)。A2Aはまた、自動車修理店の従業員が他のエージェント(部品サプライヤーなど)と協力するのにも役立ちます。

Discussion