AI

MCPとA2A:モデル・プロトコルは2025年にどう使われるか

MCPとA2Aプロトコルがどのように機能するのか、どのような場合に使用するのか、そしてなぜ両者がインテリジェントでスケーラブルなAIシステムを構築するために不可欠なのか、その理由をご覧ください。
1 分読
MCP vs. A2A protocols blog image

MCP(Model Context Protocol)とA2A(Agent-to-Agent)は、ソフトウェア・アーキテクチャに関する従来の前提を急速に変えつつあります。あなたが戦略をリードしているのか、ソリューションを構築しているのかにかかわらず、新しいテクノロジーを統合する際に陥りがちな間違いを避けるために、それらを明確に説明します。

この作品が終わる頃には、あなたも理解できるだろう:

  • MCPとは何か?
  • A2Aとは何か?
  • 各プロトコルの使用時期
  • 将来的に両方を使う可能性が高い理由

MCPとA2Aとは何か?

私たちは今、現代史上最大のパラダイム・シフトの最前線にいる。人工知能は実際に、ほとんどすべての人が何らかの文脈で日常的に使用している。ワークフローやアーキテクチャでは、タスクを達成するために使用されるモデルを「エージェント」と呼ぶ。

あなたが現在使っているほとんどの中心は、モデル・コンテキスト・プロトコル(MCP)です。Agent-to-Agent (A2A)は、明確に定義されたプロトコルというよりも、新たな機能のセットです。

  • MCP: これはコンテキストとモデルの内部状態の両方を管理するために使われる。おそらく毎日MCPとやり取りしていることでしょう。Grok、ChatGPT、CoPilotのようなモデルはすべて、一般的な目的でコンテキストとタスクを管理するためにMCPを使用します。独自のエージェントを作成する場合、カスタム MCP を書くことになるでしょう。
  • A2A: 2つ以上のモデルが互いに会話する場合、これはエージェント間のプロセスです。各エージェントは独自のMCPに従います。そのコミュニケーションプロセスはA2Aと呼ばれます。人間同士の話し言葉や書き言葉のように考えることができます。

モデル・コンテキスト・プロトコル-脳

MCPワークフロー図

MCPはマシンの “頭脳 “のようなものだと考えることができる。MCPは言語の解釈からタスクの完了に至るまで、タスクの内部プロセスのすべてを包含している。

Xでは、ユーザーが”@grok “と返信し、その後に質問や発言を続ける投稿が延々と続く。Grokは、ユーザーのプロンプトを解釈し、スレッドに関連する投稿を返信する。これは教科書的なMCPであり、実際のユースケースを満たしている。

1.クエリ・ルーティング

最初のステップは「クエリ・ルーティング」です。あなたが「@grok、この投稿をファクトチェックしてくれないか」と言うと、Grokは検索を実行し、関連するテキストを読み込む。もし「@grok、この投稿を画像で説明してください」と言うと、Grokはリクエストを別のAuroraにルーティングします。Auroraについての詳細はこちらをご覧ください。

  • 最初に問い合わせをするのはあなただ。
  • エージェントはクエリを解釈し、クエリを処理するモデルを選択する。

2.ツールピッキング

タスクが特定のAIモデルに渡されると、そのモデルは与えられたタスクを完了するためのツールを選択する。棚を吊るす必要があれば、ハンマーと釘、あるいはドリルとネジを手にするだろう。

これらのツールは、検索エンジン、計算機、Pythonインタプリタなど、文字通り何でもあり得る。もしGrokがファクトチェックを依頼されたら、おそらく2つのツールを選ぶだろう。

  • 検索エンジン:このモデルは検索を実行し、「信頼できる」結果を評価する。私はここでGrokの信頼できる結果を支持しているわけではない。
  • 計算機:投稿が誇張されすぎたり、過小評価されすぎたりするような場合、おそらくCOVIDの統計であろうが、Grokは計算機を使って検索とユーザーの投稿の両方から数字を足すべきである。

3.サーバーハンドオフ

モデルがタスクを構造化し、ツールを選択したら、タスクを引き渡す必要がある。まず、検索エンジンに実行すべきクエリを指示する。数字がわかったら、計算機に一連の計算を送る。

ここでの「サーバー」という用語は緩く使われている。モデルとセットアップによっては、この “サーバー “はデータセンター内で稼働しているものかもしれないし、http://localhost:6000-or、他のポートで稼働しているものかもしれない。ポイントは単純である。ツールはジョブをリッスンし、モデルはそれらのジョブをツールに送信する。

  • ツールはポートをリッスンする:このモデルは、ジョブを適切なツール “サーバー “に渡す。サーバーにHTTPリクエストを行い、応答を待つ。基本的に、Grokはサーバーに “1+1=? “を送信する。
  • サーバーが応答を送る:サーバーは完了したジョブ・データで応答する。サーバーは「1+1=2」と言うかもしれない。Grokはその答えを受け取り、正しい文脈で使用することができます。

4.チェックポイント(オプションで人間もあり)

レスポンスをエージェントに送り返して出力させる前に、モデルの出力をチェックする必要がある。あなたは気づいていないかもしれませんが、バイアスや悪い出力は今日でもモデルに存在します。1+1=3 “や “1+1=ragebait “のような不正解を防ぐために、出力は1つ以上のチェックポイントを通過します。

タスクのコンテキストによっては、これらのチェックポイントは人間かもしれないし、同じジョブを実行しているモデルかもしれない。ここでのポイントは単純で、悪いアウトプットをユーザーに渡してはいけないということだ。

  • チェックポイント:人間かモデルがタスクからの出力をダブルチェックする。これにより、間抜けで恥ずかしい出力がユーザーに届くのを防ぐことができる。
  • 修正:同じモデルを使うかもしれないし、別のモデルにジョブを渡すかもしれない。
  • 実際の出力:出力が確認されると、Grokは”@grok “を使用した人への返信としてそれを投稿する。

エージェント間プロトコル-脳間のコミュニケーション

A2Aダイアグラム

MCPがエージェントの全体的な脳機能だとすれば、A2Aは複数の脳が互いに会話する方法である。現実の状況では、複数のエージェントがすでにお互いに会話しています。ChatGPTと会話しているところを想像してみてください。

あなたとChatGPTは猫について話しています。それは長文の会話で、あちこちに行きます。小さな猫、大きな猫、知的な猫…そして、あなたは自分の猫についてChatGPTに話すことにしました。あなたは自分の猫が世界征服を目指しているばかげた写真が欲しいのでしょう(猫はみんな心の底ではこれを望んでいるのですから)。

ChatGPT自身はイメージを作成できません。ChatGPTは、GrokがAuroraを使うように、DALL-Eにこれをファームアウトします。ChatGPTを実行しているエージェントは、タスクを達成するためにDALL-Eを実行しているエージェントと話します。

エージェントカードエージェントのREADME

エージェントカードは、あなたのAIエージェントが何ができるかを他の人に示すために使用されます。これは、どのようにAIエージェントに接続し、どのような出力を期待できるかを示すものです。ここでは、深入りする必要はありません。あなたのコードを通してユーザーを歩かせるのではなく、超基本的な使用例と期待される出力で説明するのだ。APIドキュメントを読んだことがある人なら、ここで何が適切で何が適切でないかわかるだろう。

  • 接続:エージェントに安全に接続する方法を正確に示してください。REST API をデモしている場合、ローカルホスト上の HTTP ではなく、実際のドメインで HTTPS の例を使用してください。エージェントが SDK を介して管理されている場合、SDK を使用して接続する方法を示します。
  • シンプルな使い方:REST APIの場合、これはかなり標準的なエンドポイントと出力です。SDKを使用する場合は、基本的なクラスとメソッドを示します。
  • 出力例:各使用法のスニペットの下に、出力例を示す別のスニペットを表示する必要があります。

A2A アプリケーションを作成する場合、複数のエージェントを接続するためにエージェントカードを使用します。自分自身のエージェントを作成する場合、他の人はエージェントカードを介してエージェントを使用します。

自分がされたいように人と接する。

タスクシステム:タスクはどのように作られ、達成されるか

タスクシステムは基本的にシンプルなCRUD(Create, Read, Update, Delete)アプリです。ユーザーはタスクを作成できます。ユーザはそのステータスを読むことができなければなりません。ユーザとエージェントの両方がタスクを更新する必要があります。この場合、削除はむしろベストプラクティスの方法です-もし、増え続けるTodoアプリを作ったら、それは無駄です。

  • 作成する:ユーザ(この場合は他のエージェント)は新しいタスクを作成できるはずです。ChatGPTのエージェントはDALL-Eに、世界を支配しようと決意した邪悪な猫が必要だと伝えます。
  • 読む:ユーザ(または他のエージェント)はタスクのステータスを確認できる必要があります。ChatGPT が “Creating Image” と表示した場合、ステータスは “in progress” です。エージェントは常に与えられたタスクのステータスを読み、送信できる必要があります。
  • 更新:ChatGPTに猫に蝶ネクタイをつけることを伝え忘れています。より良い写真を得るためにプロンプトを更新することができるはずです。さらに、DALL-EはChatGPTがそれを待っている間、タスクのステータスを更新する必要があります。
  • 削除:企業はこの基本的な機能をますます無視し、効率性よりもデータレイクを重視している。エージェントはタスクを削除することができるはずだ。キャンセルされたタスクをそのままにしておくことは無意味なだけでなく、意味もなくストレージを浪費することになる。

セキュア・メッセージング

エージェント間のメッセージは安全である必要があります。一般的なコンピュータサイエンスに戻り、SSL と HTTPS 接続について考えてみましょう。HTTPS/SSL 経由でリクエストを送信すると、リクエスト本文は暗号化されます。サーバーだけがそれを読むことができます。サーバーがレスポンスを送信するとき、そのレスポンスは暗号化され、ブラウザだけが読むことができます。

エージェントはこれと同じ原則に従うべきである。複数のAIエージェント(完全に人間のタスクを代替する可能性が高い)を扱う場合、時には機密情報が関与する可能性がある。これらのエージェントも暗号化プロトコルを使用すべきである。

  • 暗号化:エージェントが通信するときは、エンドツーエンドで暗号化されるべきである。メッセージを傍受する者は、ごちゃごちゃしたゴミしか見ることができないはずだ。
  • 認証:デジタル署名のような適切な認証技術により、エージェントは誰と話しているかを知ることができる。特定のフィンガープリントに結びつけば、タスク情報は適切なアクセス権を持つ者に限定される。

長時間ジョブのサポート

すぐに終わらない仕事もある。数時間、あるいは数日かかることもある!このような場合、エージェントはコミュニケーションをとる必要があります。特に複数のエージェントが関わる仕事の場合、ユーザはエージェントからステータスのアップデートを受け取る必要があります。

  • リアルタイム更新:エージェントはリアルタイムでステータスを更新する必要があります。これにより、ユーザーは自分の都合の良い時にステータスを確認することができます。
  • 通知とEメール:エージェントは、ステータスの更新を段階的に送信する必要があります。タスクが完了したら、メールやプッシュ通知を送信しましょう。

エージェントは、ユーザーに迷惑をかけることなく、常に最新の情報を提供する必要があります。ユーザーは利便性を求めてA2Aを利用しています。

マルチモーダル・コミュニケーション

多くの場合、A2Aプロセスはマルチモーダルなタスクを扱う。ChatGPTとDALL-Eの例を思い出してください。ChatGPTは実際のテキストチャットを処理し、DALL-Eは画像作成を処理します。

  • フリーテキストとロジック:自然言語処理を専門とするLLMが担当することが多い。
  • 画像とビデオの生成:これらのタスクは、DALL-EやSoraのような他の専門モデルが担当する。

タスクはしばしばマルチモーダルなデータ形式を必要とする。このようなマルチモーダルなタスクに対応する場合、A2Aプロトコルは、これらのタスクを適切なモデル間で分割する必要がある。

各プロトコルはいつ使うべきか?

これらのプロトコルはそれぞれ異なるシナリオに対応するように作られている。MCPはエージェントの内部、つまり頭脳を扱う。A2Aは、複数のエージェントが互いに通信するために使われる。

いつ使うか エムシーピー A2A スコープ コミュニケーション・スタイル 最適 主な懸念事項
エラーと早期ミスアライメントを防ぐ ✔️ シングル・エージェント 内部 タスクの安全性と検証 早まった行動を避ける プロンプトを確認するChatGPT
単一エージェントのコンテキストの制御 ✔️ シングル・エージェント 内部 コンテキストを考慮した意思決定 メモリー+ツール選択 コードを書くCoPilot
エージェント間のコミュニケーションまたはタスクのハンドオフ ✔️ マルチ・エージェント 外部 ワークフローの委任 エージェントの相互運用性 GPTからDALL-Eへの引継ぎ
サードパーティ・エージェントのコラボレーション ✔️ マルチ・エージェント 外部 ベンダー間のタスク・オーケストレーション プロトコルの標準化 Alexaスキルの統合
マルチエージェント・エコシステムの構築 ✔️ マルチ・エージェント 外部 分散エージェントシステム タスク・ルーティング+ディスカバリー 内部LLMパイプライン
完全な監査証跡の維持(シングルエージェント) ✔️ シングル・エージェント 内部 ロギングとトレーサビリティ 観測可能性 ファイナンス・オートメーション・エージェント
モダリティを超えた柔軟性(テキスト、画像、ビデオ) ✔️ マルチ・エージェント 外部 マルチモーダル処理 タスク・セグメンテーション GPT+ダルイーまたはソラ

結論将来は両方使うことになるだろう

MCPとA2Aは競合する規格ではなく、補完するシステムだ。MCPはエージェントの内部プロセスの総和である。A2Aはエージェント間のコミュニケーションを規定する。

  • MCPによって、エージェントはインテリジェントに振る舞うことができます。
  • A2Aは、インテリジェント・エージェント同士を対話させる。

独自のAIモデルをトレーニングする場合、Bright Dataは過去のデータを含むカスタムデータセットを提供し、エージェントが傾向を把握できるようにします。リアルタイムのデータが必要ですか?Scraper APIをご覧ください。エージェントが必要なときにいつでもデータを取得できます。エージェントブラウザを使用すると、エージェントは、プロキシ統合とCAPTCHA解決により、人間と同じようにウェブを閲覧することができます。

クレジットカードは必要ありません

あなたは下記にもご興味がおありかもしれません

web scraping with claude blog image
ウェブデータ

2025年のクロードによるウェブスクレイピング

Pythonを使ってWebスクレイピングを自動化し、構造化データを楽に抽出するClaude AIの使い方を学ぶ。
18 分読
Building AI-Ready Vector Datasets for LLMs blog image
AI

LLMのためのAI対応ベクトルデータセット構築:Bright Data、Google Gemini、Pineconeを使ったガイド

大規模言語モデル(LLM)は、私たちが情報にアクセスし、インテリジェントなアプリケーションを構築する方法を変革しています。LLMの可能性を最大限に引き出すには、特にドメイン固有の知識や独自のデータを使用する場合、高品質で構造化されたベクトルデータセットを作成することが重要です。LLMの性能と精度は、入力データの品質に直接結びついています。準備不足のデータセットは劣悪な結果をもたらす可能性があり、一方、十分にキュレーションされたデータセットはLLMを真のドメイン・エキスパートに変えることができます。 このガイドでは、AIに対応したベクターデータセットを生成するための自動パイプラインの構築方法を順を追って説明する。 課題:LLMのためのデータ収集と準備 LLMは膨大な汎用テキストコーパスで学習されますが、商品関連のクエリへの回答、業界ニュースの分析、顧客フィードバックの解釈など、特定のタスクやドメインに適用すると、不足することがよくあります。LLMを真に役立てるには、ユースケースに合わせた高品質のデータが必要です。 このデータは通常、ウェブ上に分散していたり、複雑なサイト構造の背後に隠されていたり、ボット対策によって保護されていたりする。 当社の自動ワークフローは、データセット作成の最も困難な部分を処理する合理化されたパイプラインでこれを解決します: コア技術の概要 パイプラインを構築する前に、関連するコアテクノロジーと、それぞれがワークフローをどのようにサポートしているかを簡単に見ておこう。 ブライトデータスケーラブルなウェブデータ収集 AIに対応したベクターデータセットを作成するための最初のステップは、関連性のある高品質なソースデータを収集することです。ナレッジベースやドキュメンテーションのような内部システムから得られるものもあるが、大部分は公共のウェブから得られることが多い。 しかし、最近のウェブサイトは、CAPTCHA、IPレート制限、ブラウザフィンガープリントなどの高度なボット対策メカニズムを使用しているため、大規模なスクレイピングは困難である。 Bright Dataは、データ収集の複雑さを抽象化するWeb Unlocker APIでこの課題を解決します。プロキシのローテーション、CAPTCHAの解決、ブラウザのエミュレーションを自動的に処理するため、データへのアクセス方法ではなく、データに集中することができます。 Google Gemini: インテリジェント・コンテンツ・トランスフォーメーション Geminiは、Googleによって開発された強力なマルチモーダルAIモデルのファミリーであり、様々なタイプのコンテンツを理解し処理することに優れている。私たちのデータ抽出パイプラインにおいて、Geminiは3つの重要な機能を果たします: このAIを活用したアプローチは、特に以下のような使用例において、脆弱なCSSセレクタや壊れやすい正規表現に依存する従来の方法よりも大きな利点をもたらす: AIがデータ抽出プロセスにどのような変化をもたらしているかについては、Using AI for Web Scrapingをご覧ください。スクレイピングのワークフローにGeminiを実装するための実践的なチュートリアルをお探しの場合は、包括的なガイドをご覧ください:GeminiによるWebスクレイピングをご覧ください。 文の変形意味埋め込み文の生成 エンベッディングは、高次元空間におけるテキスト(または他のデータタイプ)の密なベクトル表現である。これらのベクトルは意味的な意味を捉え、コサイン類似度やユークリッド距離のようなメトリクスを用いて測定される、類似したテキスト片を近接したベクトルで表現することを可能にする。この特性は、セマンティック検索、クラスタリング、検索拡張生成(RAG)のようなアプリケーションで重要である。 Sentence Transformersライブラリは、高品質の文や段落の埋め込みを生成するための使いやすいインターフェースを提供する。Hugging Face Transformersの上に構築され、意味タスクのために微調整された幅広い事前学習済みモデルをサポートしています。 このエコシステムで最も人気があり、効果的なモデルの1つがオールMiniLM-L6-v2である: より大きなモデルはより微妙なエンベディングを提供するかもしれないが、all-MiniLM-L6-v2は性能、効率、コストの間で非常に優れたバランスを提供する。その384次元ベクトルは ほとんどの実用的なユースケース、特に初期段階の開発やリソースに制約のある環境では、このモデルで十分すぎる。エッジケースにおける精度のわずかな低下は、通常、スピードとスケーラビリティの大幅な向上によって相殺されます。そのため、AIアプリケーションの最初のイテレーションを構築する場合や、控えめなインフラストラクチャでパフォーマンスを最適化する場合は、all-MiniLM-L6-v2を使用することをお勧めします。 Pineconeベクトル埋め込み画像の保存と検索 テキストがベクトル埋め込みデータに変換されると、それを効率的に保存、管理、照会するための専用のデータベースが必要になります。従来のデータベースはこのために設計されていません。ベクトル・データベースは、埋め込みデータの高次元の性質を扱うために特別に設計されており、RAGパイプライン、セマンティック検索、パーソナライゼーション、その他のAI駆動型アプリケーションに不可欠なリアルタイムの類似性検索を可能にします。 Pineconeは、開発者フレンドリーなインターフェイス、低レイテンシの検索パフォーマンス、完全に管理されたインフラストラクチャで知られる人気のベクトルデータベースです。ベクトル検索インフラストラクチャの複雑さを抽象化することで、複雑なベクトルインデックスと検索を効率的に管理します。主なコンポーネントは以下の通りです: Pineconeは2つのデプロイメントアーキテクチャを提供する:ServerlessとPod-Based です。ほとんどのユースケース、特に開始時や動的な負荷に対処する場合は、シンプルさとコスト効率からサーバーレスが推奨されます。 セットアップと前提条件 パイプラインを構築する前に、以下のコンポーネントが適切に設定されていることを確認する。 前提条件 各APIキーの生成方法については、以下のツール固有の設定セクションを参照してください。 必要なライブラリのインストール このプロジェクトのコアとなるPythonライブラリをインストールする: これらのライブラリーは提供している: 環境変数の設定 プロジェクトのルート・ディレクトリに.envファイルを作成し、APIキーを追加する: ブライトデータ設定 Bright DataのWeb Unlockerを使用するには: 実装例と統合コードについては、Web Unlocker GitHub […]
6 分読
AI

LLMにおけるスーパーバイズド・ファインチューニングとは?

このPythonガイドでは、概念、ツール、ワークフロー、そしてAIプロジェクトを向上させる実践的な例を取り上げています。
7 分読