MCPクライアントとは?

MCPクライアントはAIエージェントアプリケーションのサブプログラムであり、MCPサーバーとやり取りして情報の取得や、タスクを実行します。

学習目的

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

  • MCPクライアントとMCPサーバーがどのようにやり取りするかを説明する
  • MCPホストについて理解する
  • CloudflareでMCPクライアントとMCPサーバーのデプロイを開始する

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

MCPクライアントとは?

モデルコンテキストプロトコル(MCP)クライアントは、AIエージェントの一部として、またはAIエージェントの指示を受けて、MCPサーバーにリクエストを行うコンピュータープログラムです。MCPクライアントがMCPサーバーから取得する情報は、AIエージェントが意思決定を行ったり、作業を実行したりするために使われます。イメージとしては、雇用主(AIエージェント)の代わりにレストランの予約をしたり、従業員の補助作業を行う「アシスタント」のような存在です。

例えば、Acme社が、「9歳の子供の部屋に家具を置きたい」という単純な顧客のプロンプト(指示)に応じて、子供室用の家具セットを自律的に注文できるAIエージェントを構築したとします。その際、AIエージェントには、最適な選択肢を見つけるために、販売されている子供向け家具、その価格、一般的な寝室と比較した家具のサイズなどに関する情報が必要になります。もし家具メーカーがこれらの情報をMCPで提供していれば、AIエージェントはMCPクライアントに指示を出し、その情報を直接取得することができます。

MCPクライアントはMCPホスト(AIエージェントまたはアプリケーション)内で動作します。MCPは、インターネットで使われてきた従来のクライアント・サーバーモデルとは異なります。従来のモデルでは、「クライアント」はそれぞれ独立したIPアドレスを持つ別々の機器と考えられていました。一方で、MCPでは、クライアント・ホスト・サーバーが同じコンピューター上で動作することもあります(必ずしもそうとは限りません)。

MCPホストの仕組み

MCPホストは、Agentic(自律的に動作する)AIアプリケーションです。このアプリケーションは、さまざまな機能を持っており、その中に1つ以上のMCPクライアント(ホストに組み込まれたサブプログラム)を含んでいます。これらのクライアントは、エンドユーザーの指示に応えるために、必要な情報を取得したり、特定の処理を実行する役割を担います。各MCPクライアントは、1つのMCPサーバーと直接通信します。もし別のMCPサーバーにも接続する必要がある場合は、新たにクライアントを作成(追加)する必要があります。

図:エンドユーザーのデバイスで動作するAIアプリケーションが、MCPクライアントに問い合わせ、さらにMCPサーバーに問い合わせる
この図は、MCPサーバーがCloudflare上でホストされている場合、ユーザー向けアプリの内部でMCPクライアントとMCPサーバーがやりとりする様子を示しています。

この動作はすべて舞台裏で行われるため、エンドユーザーはAIアプリケーションに入力したプロンプト(指示)に対してアプリケーションが回答または実行する様子だけを見ることができますが、アプリケーションがジョブを完了するためには、MCPクライアントとMCPサーバーの存在が必要です。

MCPサーバーとは?

MCPサーバーは、MCPの使用をサポートし、MCPクライアントに情報を提供するソフトウェアプログラムです。MCPサーバーは必要に応じて追加の情報(コンテキスト)を求めるなど、MCPクライアントがプロンプト(指示)を正しく実行できるように積極的にサポートします。

MCPサーバーとMCPクライアントは、同じ物理マシン上で動作することもあれば、別々のデバイスで動作してインターネットを介して相互にリモートで接続することもあります。MCPサーバーはWebサーバー(図のようにCloudflare上など)でホストすることもできますが、必ずしもそうである必要はありません。

MCPサーバーの中核的な機能とは?

MCPサーバーは、MCPクライアントがタスクを実行するために役立つ、いくつかの機能を提供します。

  • ツール:プロンプトを実行するために使用される機能。例えば、APIを呼び出す関数などがこれにあたります。
  • リソース:読み取り専用で保存されているデータ。ドキュメント、APIの仕様書、ナレッジベース記事などがこれにあたります。
  • プロンプト:特定のツールやリソースを呼び出すために、あらかじめ保存された構造化されたテンプレート。

MCPクライアントの中核的な機能とは?

MCPクライアントも、MCPサーバーが利用できる機能を提供します。MCPサーバーは、これらの機能を使用してクライアントに追加情報を求めたり、明確な情報を得ることができます。

  • Elicitation(引き出し):接続が開始されると、サーバーはクライアントのリクエストに応えるために、さらに詳しい情報や文脈が必要になる場合があります。このときサーバーは「Elicitation(引き出し)」機能を使用して情報をクライアントから取得します。クライアントは、必要に応じてユーザーに確認することもあります。
  • Roots(ルート):クライアントは、サーバーが関連するレスポンスを生成するために、ファイルの特定のサブディレクトリだけに焦点を当てるようにサーバーに要求することができます。上記の例で、クライアントがサーバーにfile:///home-goods/furniture/childrens-furniture/に焦点を当てるように要求した場合、サーバーは、ユーザーのプロンプト(指示)に適合しない無関係な情報(一般的な家庭用品や成人向けサイズのベッドに関する情報など)をクライアントに提供する可能性が低くなります。
  • Sampling(サンプリング):サーバーは、AIアプリケーションに特定のタスクを実行させるようリクエストを送ることができます。

CloudflareでMCPサーバーまたはMCPクライアントを構築する方法

Cloudflareは、開発者が独自のAIエージェントを開発する一環として、独自のMCPクライアントとMCPサーバーを構築、テスト、デプロイすることを可能にします。開発者は、自分のローカル環境で開発してからCloudflareにデプロイすることもできますし、GitHubアカウントを通じて構築することも可能です。Cloudflare上にMCPサーバーまたはクライアントをデプロイすると、世界のインターネット人口の95%から約50ミリ秒以内にあるグローバルネットワーク上で、ツールやデータをエージェントに数ミリ秒で公開できるようになります。自分でサーバーをホストする必要はありません。

さらに、MCPサーバーにはOAuthによる認証を組み込むことも可能です。認証なしにすると、誰でもサーバーに接続して使用することが可能になり、認証を設定した場合、許可された者だけがこれを行うことがでるようになり、MCPサーバー上のデータの機密性と安全性を保つことができます。

CloudflareでリモートMCPサーバーを構築する方法の完全チュートリアルについては、CloudflareのMCP開発者向けドキュメントをご覧ください