MCP(モデルコンテキストプロトコル)とは
この記事の結論
- MCP(モデルコンテキストプロトコル)とは、LLMを使うアプリと、外部のデータやツールを提供するサーバーとの間のやり取りを、JSON-RPC 2.0 のメッセージで取り決めたオープンな通信規格のことです。
- サーバーが差し出すものは、データ(Resources)・定型の指示(Prompts)・実行できる関数(Tools)の3種類に整理されています。
- 仕様は日付で版を区別し、2026-09-26 時点の現行版は 2026-07-28 です。この版からは、各リクエストが自分の版と能力を名乗る「状態を持たない」設計に変わりました。
えむしーぴー/Model Context Protocol
LLMを使うアプリと、外部のデータやツールを提供するサーバーとの間のやり取りを、JSON-RPC 2.0 のメッセージで取り決めたオープンな通信規格です。
最終更新: 2026-09-26
MCPとは(意味と読み方)
MCP(モデルコンテキストプロトコル)とは、LLMを使うアプリと、外部のデータやツールを提供するサーバーとの間のやり取りを、JSON-RPC 2.0 のメッセージで取り決めたオープンな通信規格のことです。読みは「エムシーピー」、正式名は Model Context Protocol です。
公式仕様は、MCPが言語サーバープロトコル(LSP)から着想を得たと説明しています。LSPが「エディタとプログラミング言語の支援機能」のつなぎ方をそろえたのと同じように、MCPは「AIアプリと、そこへ足したい文脈やツール」のつなぎ方をそろえる、という位置づけです(MCP 公式仕様(概要))。
このページでは、仕様書に書かれている取り決めの中身に絞って説明します。MCPが生まれた背景は記事「MCPとは?」、実際に使えるサーバーの選び方は「MCPサーバー導入ガイド」で扱っています(下の関連記事を参照)。
MCPの仕組み(役割・3つの機能・通信方式)
仕様では、登場する役割を3つに分けています。接続を始めるLLMアプリがホスト、ホストの中にあってサーバーと話す接続部品がクライアント、文脈や機能を差し出す側がサーバーです。
サーバーがクライアントに提供できる機能は次の3種類です。
- Resources:利用者やモデルが参照するためのデータや文脈。ファイルの中身、データベースの行などです。
- Prompts:利用者が選んで使う、ひな形になったメッセージや手順です。
- Tools:モデルが実行を依頼できる関数です。モデルからは関数呼び出しと同じ形で使われます。
逆向きに、クライアントがサーバーに提供する機能もあります。代表は、サーバーが利用者に追加の情報を尋ねる elicitation です。
メッセージの形式は JSON-RPC 2.0 に従い、「リクエスト」「レスポンス」「通知(返事を求めない一方向のメッセージ)」の3種類でやり取りします。運び方(トランスポート)は標準で2つ定められています。
- stdio:クライアントが起動した子プロセスの標準入出力を使い、1行に1メッセージを流します。手元のPCで動かすサーバーで使われます。
- Streamable HTTP:メッセージごとに1つのエンドポイントへ HTTP POST を送り、返事はJSONか、そのリクエスト専用のSSEストリームで受け取ります。
MCPの版の数え方と、2026-07-28 版の変更点
MCPの版は 2026-07-28 のような「年-月-日」の文字列で表します。この日付は、後方互換性のない変更が最後に入った日を示します。互換性を保った改善であれば、版の日付は変わりません(MCP 公式仕様(版の管理))。
2026-07-28 版では、MCPは「状態を持たないプロトコル」と明記されました。すべてのリクエストが、使う版とクライアントの能力を _meta 欄に載せて送り、サーバーはそれぞれのリクエストを単独で処理します。2025-11-25 版までは、接続の最初に initialize という握手をして、その接続の間は同じ取り決めを使う方式でした。古い版と話す実装は、相手の版を見分けて古い方式に合わせる手順が仕様に用意されています。
入門記事や設定例を読むときは、どの版を前提にした説明かを確かめると、手順の食い違いに気づきやすくなります。
AI開発でのMCPの具体例
AIコーディングエージェントに、課題管理サービスのMCPサーバーを追加した場面で考えます。
- エージェント(ホスト)が、サーバーの提供するツール一覧を受け取ります。一覧には
list_issuesのような名前と、引数の型が並びます。 - 「未対応のバグを確認して」と頼むと、モデルは一覧の中から
list_issuesを選び、{"state":"open","label":"bug"}のような引数で呼び出しを依頼します。 - ホストは実行の許可を利用者に確かめたうえで、JSON-RPC の
tools/callリクエストをサーバーに送ります。 - 返ってきた一覧をモデルが読み、優先して直す候補を挙げます。
同じサーバーを、MCPに対応した別のアプリに登録すれば、接続部分を作り直さずに同じツールを使えます。
MCPについてのよくある誤解
- 誤解:MCPは特定のAI製品の機能 → 実際:公開された仕様にもとづくオープンなプロトコルで、仕様に沿えば誰でもクライアントやサーバーを実装できます。
- 誤解:MCPがあれば関数呼び出しは要らない → 実際:MCPはアプリとサーバーの間の取り決めです。モデルがツールを選んで引数を出す部分は、これまでどおり関数呼び出しの仕組みで動きます。
- 誤解:プロトコルが安全を保証してくれる → 実際:仕様は、安全の原則をプロトコルの層で強制することはできないと明記し、同意の確認や権限管理を実装する側に求めています。
MCPを使うときの注意点
- ツールは「任意のコードの実行」として扱う:仕様は、ツールの呼び出し前に利用者の明示的な同意を得ることをホストに求めています。
- ツールの説明文をうのみにしない:仕様は、信頼できるサーバーから得たものでない限り、ツールの振る舞いの説明は信頼できない情報として扱うよう書いています。説明文に命令を紛れ込ませるプロンプトインジェクションへの備えです。
- 認証情報の置き場所を分ける:HTTP で接続する場合は仕様の認可の枠組みに従うことが推奨され、stdio の場合は認証情報を環境変数などの実行環境から読むよう書かれています。
関連用語
関連記事
出典・参考資料
よくある質問
Q1. MCPとは何ですか?
LLMを使うアプリと、外部のデータやツールを提供するサーバーとの間のやり取りを、JSON-RPC 2.0 のメッセージで取り決めたオープンな通信規格です。正式名は Model Context Protocol で、エムシーピーと読みます。
Q2. MCPサーバーは何を提供しますか?
仕様では、参照用のデータや文脈である Resources、ひな形になったメッセージや手順である Prompts、モデルが実行を依頼できる関数である Tools の3種類が定められています。サーバーはこのうち必要なものだけを提供できます。
Q3. MCPの通信方式には何がありますか?
標準では2つです。手元で起動した子プロセスの標準入出力を使う stdio と、1つのエンドポイントに HTTP POST を送る Streamable HTTP です。仕様に沿えば、独自の通信方式を実装することもできます。
Q4. MCPの最新版はどれですか?
2026-09-26 時点で公式仕様が現行版としているのは 2026-07-28 です。版は後方互換性のない変更が最後に入った日付で表され、この版から各リクエストが版と能力を自分で名乗る方式になりました。
Q5. MCPとAPIはどう違いますか?
APIは各サービスが独自に決める呼び出し口で、形式はサービスごとに違います。MCPは、AIアプリがそうした機能を使うときのやり取りの形式を共通化した規格です。MCPサーバーの中で、各サービスのAPIを呼んでいることもよくあります。