モデルコンテキストプロトコル(MCP)とは?

モデルコンテキストプロトコル(MCP)により、AIエージェントは外部ツールやデータソースにアクセスできるようになり、さらに効果的に行動を取ることができます。

学習目的

この記事を読み終えると、以下のことができるようになります。

  • エージェントAIにおけるモデルコンテキストプロトコル(MCP)の役割を理解する
  • MCPの仕組みを説明する
  • MCPにおけるセキュリティの課題を特定する

記事のリンクをコピーする

モデルコンテキストプロトコル(MCP)とは?

モデルコンテキストプロトコルは、大規模言語モデル(LLM)が情報を利用できるようにするための標準的な方法です。アプリケーションプログラミングインターフェース(API)の仕組みにやや似ていますが、MCPは、コンピュータプログラムが外部ソースのサービスを統合するための、文書化された標準的な方法を提供します。エージェントAIに対応:これは、自律的に目標を追求し、行動できるインテリジェントなプログラムです。

MCPは本質的に、AIプログラムが学習以上の能力を発揮できるようにするものです。意思決定やコンテンツ生成に新たな情報ソースを組み込めるようにし、外部ツールとの接続も可能にします。

上司のためにレストランの予約をする必要があるアシスタントを想像してみてください。アシスタントはレストランに電話をかけ、空いている時間を尋ねて、テーブルを予約します。MCPは、AIエージェントに「電話番号」を提供し、タスク実行に必要な情報を取得できるようにする手段です。

MCPはAI企業のアンソロピックによって開発され、後にオープンソース化されました。2024年後半にオープンソース化されて以来、MCPは急速に業界標準として定着し、AIエージェントの利用がさらに広がることを可能にしました。

AIエージェントとは?

AIエージェントとは、LLM上に構築されたAIプログラムです。LLMの情報処理機能を活用して、人間のユーザーに代わり、データを取得し、意思決定を行い、行動します。

MCPは、AIエージェントが必要な情報を見つけ、行動するための方法の一つです。これは、いわば「外の世界」、つまりLLMの学習データの枠を超えた世界にAIエージェントを接続するのに役立ちます。(その他の手段には、API統合やヘッドレスブラウジングなども含まれます。)

MCPの仕組みは?

MCPは、ネットワーク接続された多様なコンピューティングデバイス間での利用を定めた一連の手順と指示から成るプロトコルです。MCPは、クライアントサーバー型アーキテクチャを前提としており、その中では1つのエンティティ、すなわちクライアント(AIエージェントまたは補助的なプログラム)がサーバーにリクエストを送信し、サーバーがそれに応答します。

MCPクライアントはMCPホスト内で動作します。クライアントはMCPサーバーと1対1の接続を維持しますが、同じMCPホストから複数のクライアントを実行できます。したがって、MCPホストは複数のMCPサーバーから同時にデータを取得できます。一方、MCPサーバーは、API統合を利用して、追加のソースからデータを取得できます。

つまり、AIエージェントはMCPを使用して一度に複数のサーバーに接続できます。ただし、それぞれの接続はすべての他の接続とは独立して行われます。新聞社の記者チームを想像してみてください。各記者が個別に情報源に連絡を取り、それぞれが集めた情報をまとめてニュース記事を作成します。

MCPメッセージ

MCPで使用されるメッセージには、次の4つの種類があります:

  • リクエスト:ホスト内のクライアントがMCPサーバーから情報を要求します。
  • 結果:MCPサーバーが必要な情報を返します。
  • エラー:サーバーが応答できない場合に送信されます。
  • 通知:応答を必要としない一方向のメッセージ(公共のお知らせなど)。これらは、クライアントまたはサーバーのどちらからでも送信できます。

リモートおよびローカルMCP接続

MCP接続は、リモート接続またはローカル接続のいずれかです。リモート接続は、AIエージェントとMCPサーバーの間でインターネットを介して行われます。ローカル接続は、同じマシン内で実行されます(MCPクライアントとMCPサーバーは、互いに独立して動作するソフトウェアプログラムです)。

MCP接続の手順

MCPネットワーク通信には3つの段階があります。

  1. 初期化:クライアントは最初のメッセージを送信し、それに続く一連の短いメッセージで、クライアントとサーバーがプロトコルのバージョンに合意します
  2. メッセージ交換:リクエスト、結果、通知がやり取りされます
  3. 終了:クライアントまたはサーバーのいずれかが、「close()」メッセージを使用して接続を終了します

MCPをより安全にするために、これらの3つの段階の前に、認証承認のための追加ステップが実行されることがあります。

MCPサーバーとは?

MCPサーバーは、サーバーまたはクラウド上でホストされ、MCPを介してAIエージェントが利用できる機能を提供するプログラムです。MCPサーバーは、AIエージェントが必要とする新しいデータセットやその他のツールへのアクセスを提供します。例えば、MCPサーバーがAIエージェントにメールサービスの利用を許可することで、エージェントは支援している人間のユーザーに代わってメールを送信できるようになります。

MCPは安全か?

MCPには認証、認可、または暗号化がネイティブに組み込まれていないため、開発者は自ら実装するか、実装支援サービスを利用する必要があります。

MCPはHTTPSの使用を必要とせず、多くの実装でHTTP上で実行されます。そのため、開発者がTransport Layer Security(TLS)の使用を積極的に実装しない限り、暗号化や認証が行われていない可能性があります。TLSを使用しないと、他のネットワークプロトコルと同様に、MCPはなりすましやオンパス攻撃に対して脆弱になる可能性があります。

MCPは、外部からのデータやサービス要求に応じるAPIと同様の機能を提供するため、主要なAPIセキュリティ上の考慮事項の多くはMCPの実装にも当てはまります。MCPサーバーを提供する組織は、機密データが漏洩しないこと、リソースが保護されていること、レート制限によって過剰なリクエストが阻止されていること、AIエージェントに過剰な権限が与えられていないこと、入力が検証・サニタイズされていることを確保する必要があります。

一部のMCPサーバーは、OAuthの実装を容易にするライブラリを提供しています。Cloudflareは、OAuth 2.1プロトコルのプロバイダー側を実装したOAuthプロバイダーライブラリを提供しており、これを使用してMCPサーバーに容易に認可機能を追加できます。

開発者は、このOAuthプロバイダーライブラリを3つの方法で使用できます。

  • サードパーティのOAuthプロバイダーと直接統合する
  • Authorization as a Serviceプロバイダーなど、自社のOAuthプロバイダーとの統合
  • Cloudflare Worker(Cloudflareネットワーク上にデプロイされたサーバーレス関数)が認可処理を行い、Cloudflare上で稼働するMCPサーバーがOAuthフロー全体を処理します

Cloudflareは、エージェントAIを構築する開発者が利用できるように、複数のMCPサーバーを提供しています。Cloudflareは、開発者がAIエージェントを支援するために独自のMCPサーバーを構築・デプロイすることもできます。CloudflareでMCPの始め方を学びましょう