ai-agents-for-beginners

エージェンティックプロトコルの使用(MCP、A2A、NLWeb)

Agentic Protocols

(上の画像をクリックするとこのレッスンのビデオをご覧いただけます)

AIエージェントの利用が増えるに従い、標準化・セキュリティの確保、そしてオープンイノベーションを支援するプロトコルの必要性も高まっています。本レッスンでは、このニーズに応える3つのプロトコル、Model Context Protocol (MCP)、Agent to Agent (A2A)、Natural Language Web (NLWeb)について解説します。

はじめに

本レッスンで扱う内容は:

MCPがAIエージェントに外部ツールとデータへのアクセスを許し、ユーザーのタスクを完了する方法。

A2Aが異なるAIエージェント間のコミュニケーションと協働を可能にする方法。

NLWebがあらゆるウェブサイトに自然言語インターフェイスをもたらし、AIエージェントがコンテンツを発見し、対話できるようにする方法。

学習目標

• AIエージェントの文脈でMCP、A2A、NLWebの中核的な目的と利点を識別すること。

• 各プロトコルがLLM、ツール、他のエージェント間の通信と相互作用をどのように促進するかを説明すること。

• 複雑なエージェンティックシステム構築における各プロトコルの異なる役割を認識すること。

Model Context Protocol

Model Context Protocol (MCP)は、アプリケーションがLLMにコンテキストとツールを標準化して提供するためのオープン標準です。これにより、AIエージェントが異なるデータソースやツールに一貫した方法で接続できる「ユニバーサルアダプター」が実現されます。

MCPの構成要素、API直接利用と比較した利点、そしてAIエージェントがMCPサーバーを利用する例を見ていきましょう。

MCPの主要コンポーネント

MCPはクライアント・サーバーアーキテクチャで動作し、主要コンポーネントは以下です:

ホストはLLMアプリケーション(例:VSCodeのようなコードエディター)で、MCPサーバーへの接続を開始します。

クライアントはホストアプリケーション内のコンポーネントで、サーバーとの一対一の接続を維持します。

サーバーは特定の機能を公開する軽量プログラムです。

プロトコルには、MCPサーバーの機能である3つのコアプライミティブが含まれます:

ツール:これはAIエージェントが呼び出して行動を実行できる個別のアクションや機能です。例えば、天気情報サービスが「天気を取得」ツールを公開したり、eコマースサーバーが「商品購入」ツールを公開したりします。MCPサーバーはそれぞれのツール名、説明、入出力スキーマを機能一覧に掲載します。

リソース:MCPサーバーが提供できる読み取り専用のデータ項目やドキュメントであり、クライアントは必要に応じてそれらを取得できます。例としてファイル内容、データベースレコード、ログファイルなどがあります。リソースはテキスト(コードやJSONなど)かバイナリ(画像やPDFなど)です。

プロンプト:これはあらかじめ定義されたテンプレートで、提案プロンプトを提供し、より複雑なワークフローを可能にします。

MCPの利点

MCPはAIエージェントにとって次のような大きな利点を提供します:

動的なツール発見:エージェントはサーバーから利用可能なツールのリストとその説明を動的に受け取ることができます。これは統合に静的コーディングが必要な従来APIとは異なり、API変更ごとにコードの更新が必要になる問題を解消します。MCPは「一度統合すればよい」アプローチを提供し、適応力を高めます。

LLM間の相互運用性:MCPは異なるLLM間で動作し、よりよいパフォーマンスのためにコアモデルの切り替えが可能な柔軟性を提供します。

標準化されたセキュリティ:MCPは標準的な認証方法を含み、追加のMCPサーバーアクセスを増やす際の拡張性を改善します。これは異なるキーや認証方式を管理する従来APIよりも簡単です。

MCPの例

MCP Diagram

たとえば、ユーザーがMCPで動くAIアシスタントを使ってフライト予約をしたい場合を想像してください。

  1. 接続:AIアシスタント(MCPクライアント)が航空会社のMCPサーバーに接続します。

  2. ツール発見:クライアントは航空会社のMCPサーバーに「どんなツールがありますか?」と尋ねます。サーバーは「フライト検索」や「フライト予約」といったツールを返します。

  3. ツール呼び出し:ユーザーがAIアシスタントに「ポートランドからホノルルへのフライトを検索して」と依頼すると、AIアシスタントはLLMを使い、「フライト検索」ツールを呼び出す必要があると判断し、出発地と目的地のパラメーターをMCPサーバーに渡します。

  4. 実行と応答:MCPサーバーはラッパーとして航空会社の内部予約APIを呼び出します。APIの応答(例:JSONデータ)を受け取ると、それをAIアシスタントに返送します。

  5. さらなる対話:AIアシスタントはフライト候補を提示し、ユーザーがフライトを選択すると、同じMCPサーバーの「フライト予約」ツールを呼び出して予約を完了します。

Agent-to-Agent Protocol (A2A)

MCPがLLMとツールをつなぐことに焦点を当てているのに対し、Agent-to-Agent (A2A) プロトコルは、異なるAIエージェント同士の通信と協力を可能にします。A2Aは異なる組織、環境、技術スタックのAIエージェントを接続し、共通のタスクを遂行します。

ここではA2Aの構成要素と利点、そして旅行アプリケーションでの適用例を見ていきましょう。

A2Aの主要コンポーネント

A2Aはエージェント間の通信を可能にし、ユーザーのサブタスクを協力して完了させることに焦点を当てています。各コンポーネントはこれに寄与します:

エージェントカード

MCPサーバーがツール一覧を共有するのと似て、エージェントカードは:

エージェントエグゼキューター

エージェントエグゼキューターはユーザーチャットのコンテキストをリモートエージェントに渡す役割を担います。リモートエージェントはタスクを理解するためにこれを必要とします。A2Aサーバーでは、エージェントは自身のLLMを使って受信したリクエストを解析し、自身の内部ツールでタスクを実行します。

アーティファクト

リモートエージェントがタスクを完了すると、その成果物がアーティファクトとして作成されます。アーティファクトは、エージェントの作業結果完了内容の説明、そしてプロトコルを通じて送られるテキストコンテキストを含みます。アーティファクト送信後は、再度必要になるまでリモートエージェントとの接続を終了します。

イベントキュー

このコンポーネントは更新の処理とメッセージの送受信に使用されます。特に生産環境のエージェンティックシステムでは、タスク完了までエージェント間の接続が切れないようにするために重要です。タスク完了までに時間がかかる場合がありますから。

A2Aの利点

強化された協働:異なるベンダーやプラットフォームのエージェントが相互にやり取りし、コンテキストを共有し、協力しあうことで、従来は分断されていたシステム間のシームレスな自動化を促進します。

モデル選択の柔軟性:各A2Aエージェントはサービスに使うLLMを自由に選択でき、最適化やチューニングされたモデルを個別に用いることが可能です。これはMCPの一部シナリオでの単一LLM接続とは異なります。

組み込み認証:認証はA2Aプロトコルに直接統合されており、エージェント間のやり取りに強固なセキュリティフレームワークを提供します。

A2Aの例

A2A Diagram

旅行予約シナリオを拡張し、今回はA2Aを使ってみましょう。

  1. ユーザーがマルチエージェントへリクエスト:「来週のホノルル旅行を全て予約してください。フライト、ホテル、レンタカー全て含めて」と「旅行代理人」A2Aクライアント/エージェントに話しかけます。

  2. 旅行代理人による調整:旅行代理人はこの複雑なリクエストを受け、自身のLLMでタスクを推論し、他の専門エージェントとやり取りすべきと判断します。

  3. エージェント間通信:旅行代理人はA2Aプロトコルを使い、別会社が作った「航空会社エージェント」、「ホテルエージェント」、「レンタカーエージェント」など下流のエージェントに接続します。

  4. タスクの委任実行:旅行代理人は「ホノルル行きのフライトを探して」「ホテルを予約して」「レンタカーを借りて」といった具体的タスクをそれぞれの専門エージェントに送信します。各専門エージェントは自前のLLMとツール(MCPサーバーもあり得ます)を用いて担当部分の予約を行います。

  5. 結果の統合応答:下流エージェント全てがタスクを完了すると、旅行代理人はフライト詳細、ホテル確認、レンタカー予約をまとめて、チャット形式の総合応答をユーザーに返します。

Natural Language Web (NLWeb)

ウェブサイトはかねてからインターネット上の情報やデータアクセスの主要な手段です。

ここではNLWebの様々な構成要素、利点、そして旅行アプリケーションでの具体例を見ていきましょう。

NLWebの構成要素

NLWebの実例

NLWeb

先ほどの旅行予約ウェブサイトをもう一度考えますが、今回はNLWebで動作しています。

  1. データ取り込み:旅行サイトの既存商品カタログ(例:フライトリスト、ホテル説明、ツアーパッケージ)がSchema.orgでフォーマットされるかRSSフィードとして読み込まれます。NLWebのツールがこの構造化データを取り込み、埋め込みを作成し、ローカルまたはリモートのベクトルデータベースに保存します。

  2. 自然言語クエリ(人間ユーザー):ユーザーがサイトを訪れ、メニューを操作する代わりにチャットインターフェイスに「来週のホノルルで家族向けプール付きホテルを探して」と入力します。

  3. NLWebによる処理:NLWebアプリがこのクエリを受け取ります。理解のためLLMに送信すると同時に、ベクトルデータベースを検索して関連ホテルを探します。

  4. 高精度結果:LLMはデータベースの検索結果を解釈し、「家族向け」「プールあり」「ホノルル」という条件に最適なマッチを特定し、自然言語で応答を整形します。重要な点は、応答は実際のホテルカタログに基づいており架空情報を避けていることです。

  5. AIエージェントとの相互作用:NLWebはMCPサーバーとして機能するため、外部AI旅行エージェントもこのNLWebインスタンスに接続可能です。AIエージェントはask MCPメソッドを使ってサイトに直接問い合わせ(例:ask("ホノルル周辺でホテルが推薦するビーガン対応レストランはありますか?"))ることができます。NLWebはこれを処理し、レストラン情報のデータベース(もし読み込まれていれば)を活用して構造化JSON応答を返します。

MCP/A2A/NLWebについてもっと質問がありますか?

他の学習者と交流し、オフィスアワーに参加し、AIエージェントに関する質問に答えてもらうには、Microsoft Foundry Discordにご参加ください。

参考資料

前回のレッスン

AI Agents in Production

次のレッスン

Context Engineering for AI Agents


免責事項: 本書類は AI 翻訳サービス Co-op Translator を使用して翻訳されています。正確性を期していますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご承知おきください。原文の原語版が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用により生じたいかなる誤解や解釈違いについても、当方は責任を負いかねます。