🦾

MCP(Model Context Protocol)の理解を深める

に公開

はじめに

MCP(Model Context Protocol)とは?

MCP(Model Context Protocol)とは、一言でいうと、
AIエージェントにできることを増やすためのプロトコル のことです。

AIエージェントは、様々な「ツール(外部機能をAIエージェントに拡張する機能)」を、この 「MCP(Model Context Protocol)」 を通して使用することで、自身の基本的な能力だけでは実行できない専門的なタスクや、外部システムとの連携、リアルタイムの情報処理などが可能になります。

@akshay_pachaarさんがXでインフォグラフィックを用いてMCPについて解説されてますが、かなり分かりやすいです🤩
https://x.com/i/status/1900170408038642058

また、Anthropicが出してる公式ドキュメントで、MCPは以下のように解説されています。

MCPは、アプリケーションがLLMにコンテキストを提供する方法を標準化するオープンプロトコルです。MCPは、AIアプリケーション向けのUSB-Cポートのようなものと考えてください。USB-Cがデバイスを様々な周辺機器やアクセサリーに接続する標準的な方法を提供するように、MCPはAIモデルを異なるデータソースやツールに接続する標準的な方法を提供します。

Model Context Protocolの概念図

引用:https://modelcontextprotocol.io/introduction

MCPホスト / MCPクライアント

MCP(Model Context Protocol)において、MCPサーバーに接続して外部機能を利用する側は、MCP Host (ホスト) と MCP Client (クライアント) の2つのコンポーネントで構成されます。


引用:https://modelcontextprotocol.io/docs/concepts/architecture

MCP Host (ホスト) とは?

ユーザーが直接対話するアプリケーション[1]であり、AIエージェントとしての役割を担います。
MCP Hostは、利用したいMCPサーバーごとに、MCP Client (クライアント) を内部で生成・管理します。

MCP Client (クライアント) とは?

MCP Host(アプリケーション(AIエージェント))の内部に存在し、特定のMCPサーバーとの1対1の接続を確立・維持し、MCPプロトコルに基づいた実際の通信(リクエストやレスポンスの送受信)を担当するコンポーネントです。

つまり、
ユーザーが操作する「アプリケーション(AIエージェント)」が、MCP Hostであり、そのMCP Hostが、MCPサーバー(ツール)と通信するために内部で利用する「通信係」が、MCP Clientとなります。

全体として、このMCP HostとMCP Clientの組み合わせが、
「MCPサーバーに接続して外部機能を利用する側」 となります。

MCPサーバーとは?

MCPサーバーとは、
AIエージェント(MCP Host)と外部世界を繋ぐ「橋渡し役」を担う特殊なプログラムです。

「橋渡し役」として、以下の2つの性質を持っています。

  • 「窓口」としての性質
    MCPクライアントが、外の世界(ファイルシステム、API、データベースなど)、いわゆる 「外部機能」と通信するためのインターフェース
  • 「ツール」としての性質
    MCPクライアントから見ると、特定の機能を提供するツール(拡張機能:道具)でもある

「窓口」と「ツール」2つの性質

この2つの性質は重要な概念です:

  • 窓口(インターフェース)として:
    MCPサーバーはプロトコルの変換器のように動作します。MCPクライアントは、MCPプロトコルという「共通言語」で通信し、MCPサーバーがその要求を実際のシステムコール、API呼び出し、ファイル操作などに変換します。
  • ツールとして:
    MCPクライアント(AIエージェント)は、自らの能力を拡張するために、MCPサーバーを「ツール」として利用します。例えば、「ファイルを検索する」「ウェブを閲覧する」「データを計算する」などの「外部機能」は、全てMCPサーバーという「ツール」を通じて使用することができます。

MCPサーバーは、特定の機能をMCPプロトコルに準拠した形で、MCPクライアントに提供します。

MCPクライアント(AIエージェント)は、MCPサーバーに接続し、MCPサーバーが提供する「ツール(拡張機能)」を利用することで、外部機能を利用することができ、特定タスクの実行が可能になります。

MCPサーバーが提供する「3つの基本的要素」

MCPサーバーは、AIエージェント(MCP Host)に対して、主に以下の3つの要素を提供します。
これらは、AIエージェントが外部の世界とどのように連携できるかを定義するための重要な要素です。

ツール (Tools)

ツールは、AIエージェントが通常の言語処理能力を超えて、特定の外部機能(例:ファイル操作、データベースへの書き込み、外部APIの呼び出し)を実行可能にするための「拡張機能インターフェース」です。MCPサーバーはこれらのツールを提供し、MCPクライアント(AIエージェント)はそれを通じて外部機能を利用することが出来ます。

リソース (Resources)

MCPサーバーが管理している「データやコンテンツ」へのアクセスをAIエージェントに提供します。
例えば、「特定のファイルの内容」「データベース内の情報」「ウェブページのコンテンツ」などがリソースにあたります。AIエージェントはこれらのリソースを読み取り、ユーザーとの対話に必要な背景情報(コンテキスト)として利用することができます。リソースをどのように、いつ利用するかは、AIエージェントをホストしているアプリケーション(MCP Host)側で制御します。

プロンプト (Prompts)

MCPサーバーは、特定のタスクを実行するための「定型的な対話テンプレートやワークフロー」をAIエージェントに提供します。これにより、ユーザーはより簡単に(抽象的で曖昧な指示でも)特定の機能を開始でき、AIエージェントとのやり取りを標準化できます。
例えば、「メールの下書きを作成するプロンプト」「コードレビューを依頼するプロンプト」などが考えられます。こういったプロンプトは、主にユーザーの意図に基づいて選択・利用されます。

これらの要素を組み合わせることで、MCPサーバーはAIエージェントに対して、単なる知識検索だけでなく、具体的なアクションの実行、深いコンテキストに基づいた対話能力を提供し、その能力を柔軟かつ効果的に拡張することができます。

さいごに

本記事では、AIエージェントの能力を拡張するMCP(Model Context Protocol)について、その仕組みと構成要素を中心に解説しました。
MCPがもたらすAIエージェントの進化に、今後も注目していきたいです!

参照

https://docs.anthropic.com/en/docs/agents-and-tools/mcp
https://modelcontextprotocol.io/introduction
https://modelcontextprotocol.io/docs/concepts/architecture
https://neo4j.com/blog/developer/model-context-protocol/

関連記事

https://zenn.dev/aoyamadev/articles/d3b18d64b3bd60

脚注
  1. Claude Desktop, Cursor などのアプリケーションがMCP Hostにあたります。これらは内部にMCP Clientを持ち、MCPサーバーとの通信を行います。 ↩︎

Discussion