MCP(Model Context Protocol)は、AI のアプリ(Claude Code・ChatGPT・VS Code など)が、外部の道具やデータ(GitHub・データベース・社内のシステムなど)を同じ手順で使うための公開の仕様だ。道具を一度「MCP サーバー」として作れば、MCP に対応したどのアプリからも使える。機器を選ばない1本のケーブルになぞらえて「AI の USB-C」と呼ばれる。

2024年11月25日に Anthropic が公開し、2025年12月に Linux Foundation の下の Agentic AI Foundation(AAIF)へ寄贈された。仕様の現行の版は 2026-07-28 で、この版から接続ごとの「セッション」を持たない作り(ステートレス)に変わった。この記事では、仕組み・現行の仕様で変わったこと・主なアプリでの登録の仕方・10分で試す手順・公式のセキュリティの決まりを、MCP の仕様と各社の公式文書(2026年11月12日に確認)に沿ってまとめる。

ホスト(AI のアプリ)

Claude Code・ChatGPT・VS Code など

中のクライアントがサーバーごとに接続し、道具の一覧を受け取る

⇄JSON-RPC

MCP サーバー

GitHub・Notion・自作

Tools・Resources・Prompts の3種類を出す

⇄

道具とデータ

API・DB・ファイル

サーバーが実際に読み書きする先

通信は手元の PC の中なら stdio、ネットワーク越しなら Streamable HTTP。AI がどの道具をいつ使うかを選び、ホストが利用者の承認を取ってから呼び出す。

1. MCP とは——AI と道具をつなぐ共通の決まり

MCP が出る前は、AI のアプリごとに道具のつなぎ方が違った。「Slack に投稿する」道具を3つのアプリで使うには、3通りに作る必要があった。MCP はこの接続の部分を1つの仕様にまとめた。アプリが M 個、道具が N 個あれば M×N 通りだった組み合わせが、M+N 個の実装で済む。仕様自身も、プログラミング言語の対応を各エディタで共通化した Language Server Protocol(LSP)に倣ったと書いている。

サーバーが出せる3つのもの

機能中身例
Tools(ツール)AI が呼び出す関数Issue を作る、在庫数を返す、DB に問い合わせる
Resources(リソース)利用者や AI が読む資料・データファイルの中身、テーブルの定義、社内の資料
Prompts(プロンプト)利用者が選んで使う指示のひな形「この PR をレビューする」手順

逆向きに、クライアント(アプリ側)がサーバーに出せる機能として Elicitation(サーバーが利用者に追加の情報を尋ねる仕組み)がある。以前の版にあった Roots(作業してよいフォルダを伝える)と Sampling(サーバーがアプリ側の AI に文章を作らせる)は、現行の版で非推奨になった(4章)。

2. 公開から2年で何が起きたか

MCP の仕様の版は「後方互換でない変更を最後に入れた日付」で呼ぶ。主な出来事を版と並べると次のとおり。

  • 2024年11月25日Anthropic が仕様と SDK を公開した。最初の版は 2024-11-05。
  • 2025年3月26日版 2025-03-26。リモート向けの通信 Streamable HTTP と OAuth による認可が入り、以前の HTTP+SSE は非推奨に。同じ日(米国時間)、OpenAI の Sam Altman が自社の製品で MCP に対応すると表明した(TechCrunch の報道)。
  • 2025年6月18日版 2025-06-18。ツールの結果を型つきで返す仕組みと Elicitation が入った。
  • 2025年11月25日版 2025-11-25。長い処理を扱う Tasks(実験的)と、URL でクライアントを名乗る Client ID Metadata Documents が入った。
  • 2025年12月9日Anthropic が MCP を AAIF へ寄贈。Anthropic・Block・OpenAI が共同で設立し、Google・Microsoft・AWS・Cloudflare・Bloomberg が支援する。同日の発表では、公開されて動いている MCP サーバーが1万以上、Python と TypeScript の SDK の月間ダウンロードが9,700万以上。採用例として ChatGPT・Cursor・Gemini・Microsoft Copilot・VS Code が挙がっている。
  • 2026年7月28日現行の版 2026-07-28。握手(initialize)とセッションをなくし、ステートレスになった(4章)。

広まった理由は、仕様が JSON-RPC 2.0 と JSON Schema の上の薄い取り決めで実装しやすいこと、早くから公開の仕様として出たこと、そして寄贈によって特定の会社の持ち物でなくなったことにある。競合する各社が同じ仕様に乗ったので、道具を作る側は1回作れば済む。

3. 仕組み——ホスト・クライアント・サーバーと2つの通信方式

仕様の登場人物は3つ。ホストは利用者が使う AI のアプリ、クライアントはホストの中でサーバー1つにつき1つ動く接続役、サーバーは道具やデータを出す側だ。やり取りは JSON-RPC 2.0 の形式で、クライアントが道具の一覧を受け取り(tools/list)、AI が選んだ道具を引数つきで呼び出し(tools/call)、結果を受け取る。

通信方式動く場所向いている用途認証
stdio手元の PC(アプリがサーバーをプロセスとして起動し、標準入出力でやり取りする)ファイル、ローカルの Git、手元の DB仕様の認可の仕組みは使わず、鍵は環境変数などで渡す
Streamable HTTPサービス側(URL で接続する)GitHub・Notion などのサービス、社内で共有するサーバーOAuth 2.1 にもとづく仕様の認可(Authorization)
HTTP+SSE以前のリモート向けの方式新しく使わない非推奨(Streamable HTTP へ移る)

4. 現行の仕様 2026-07-28 で変わったこと

仕様の版の説明では、現行(Current)の版は 2026-07-28。前の版 2025-11-25 から、接続の作り方が大きく変わった。主な違いは変更の一覧のとおり。

項目2025-11-25 まで2026-07-28
接続の始め方initialize の握手で版と機能を決める握手はなく、毎回の要求の _meta に版と機能を載せ、サーバーは server/discover で対応する版を返す
セッションStreamable HTTP で Mcp-Session-Id を使う仕様としてのセッションは無く、続けて使う状態はサーバーが発行する ID をツールの引数で受け渡す
変更の通知HTTP の GET の接続、resources/subscribesubscriptions/listen の1本の流れにまとめる
サーバーからの問い合わせサーバーが要求を送る(sampling/createMessage・elicitation/create など)結果を「入力が必要」(input_required)で返し、クライアントが答えを付けて同じ要求を出し直す(Multi Round-Trip Requests)
途切れたときSSE のイベント ID で再送を受けられる再開はなく、新しい ID で要求を出し直す
長い処理(Tasks)本体の実験的な機能公式の拡張(io.modelcontextprotocol/tasks)へ移した
非推奨になったものHTTP+SSERoots・Sampling・Logging、HTTP+SSE、OAuth の動的クライアント登録(Client ID Metadata Documents へ移る)

非推奨の機能は、仕様の機能の寿命の決まりで、取り除けるようになるまで少なくとも12か月は残る(公表された脆弱性や実際の悪用があり、その場で防げない安全上の危険があるときは、最短90日まで縮められる)。2025-11-25 以前の握手を使う相手とつなぐための後方互換の手順も、仕様に書かれている。

使う人・作る人への影響

  • 使う人

    アプリが対応していれば、することはない

    Claude Code は MCP TypeScript SDK 2.0 を使う「v2 runtime」で 2026-07-28 に対応している。サーバーに新しい版に対応しているかを尋ね、対応していれば新しい版で、対応していなければ従来の握手でつなぐ。既定で v2 になるのは、機能の切り替えの情報を取得するセッションで v2.1.232 以降、取得しないセッションで v2.1.274 以降。従来の方式に固定するなら環境変数 MCP_PROTOCOL_NEGOTIATION=legacy(Claude Code の MCP のドキュメント)。

  • 作る人

    SDK を 2 系に上げ、非推奨の機能を新しく使わない

    Python の SDK は 2 系(PyPI の mcp 2.3.0 が2026年10月2日)、TypeScript の SDK は 2 系が 2026-07-28 に対応する。2 系ではパッケージが @modelcontextprotocol/server と @modelcontextprotocol/client に分かれ(npm で 2.4.0)、従来の @modelcontextprotocol/sdk は 1 系のまま(1.32.2)。新しいサーバーでは Roots の代わりにツールの引数や設定でフォルダを渡し、Logging の代わりに標準エラー出力か OpenTelemetry へ記録する。何回かにまたがる状態は、推測できない ID を発行して利用者に結び付ける(9章)。

  • 拡張

    本体の外に、選んで使う「拡張」が増えた

    仕様の概要のページは主な拡張として、長い処理の Tasks、会話の中に表やフォームの画面を出す MCP Apps、エージェント向けの手順書を MCP で配る Skills over MCP(作業部会で検討中)を挙げている。拡張はクライアントとサーバーの両方が対応したときだけ使われる。

5. 主なアプリでの登録の仕方と設定の置き場所

同じ MCP サーバーでも、登録の仕方と設定ファイルの場所はアプリごとに違う。各社の公式文書(2026年11月12日に確認)で確かめた内容をまとめる。

アプリ登録のしかた設定の置き場所注意
Claude Codeclaude mcp add自分用は ~/.claude.json、チームで共有するならプロジェクト直下の .mcp.json接続の状態は /mcp で見る
Claude Desktop設定ファイルに書くclaude_desktop_config.json(macOS は ~/Library/Application Support/Claude/、Windows は %APPDATA%\Claude\、Linux は ~/.config/Claude/)書いたらアプリを起動し直す(公式の手順)
Codex(CLI)codex mcp add~/.codex/config.toml の [mcp_servers.名前](信頼したプロジェクトは .codex/config.toml も)OAuth のサーバーは codex mcp login 名前
Gemini CLIgemini mcp addsettings.json の mcpServers(.gemini/ か ~/.gemini/)trust: true は呼び出しの確認をすべて省くので、自分で管理するサーバーだけに(無料の枠と Google One の利用者向けには、2026年6月18日に Antigravity CLI へ置き換わったと公式ページの冒頭にある)
VS Codeコマンドパレットの「MCP: Add Server」案内に沿って、そのフォルダ用か全体用かを選ぶローカルのサーバーは PC の上でコードを動かす、と公式が注意している
ChatGPT「Plugins」の「Add custom MCP server」(開発者モードを先に有効にする必要はない)ワークスペースの画面から設定(公開の HTTPS のエンドポイントか Secure MCP Tunnel)Business・Enterprise・Edu のウェブ版だけ(Business は管理者・所有者だけが接続でき、Enterprise・Edu は権限を与えられたメンバーも接続できる、ワークスペースへの公開は管理者・所有者だけ)(OpenAI のヘルプ)

出典:Claude Code・Codex・Gemini CLI・VS Code の MCP のドキュメント。claude.ai で追加したコネクタ(リモートの MCP サーバー)は Claude Code の /mcp にも出るが、API キーでログインしているときは読み込まれない(コネクタが止まるときの対処)。

6. すぐ使えるサーバーと探し方

サーバー何ができる主な用途
filesystem(参照実装)許したフォルダの中だけでファイルを読み書きする資料やコードを AI に読ませる
fetch(参照実装)Web ページを取ってきて、AI が読みやすい形にするURL を渡して中身を要約させる
git(参照実装)ローカルの Git リポジトリの履歴を読み、操作する変更履歴から差分を説明させる
GitHub(GitHub が運営するリモートのサーバー)Issue・PR・リポジトリの操作PR のレビュー、見つけた不具合の Issue 化
Notion(Notion が運営するリモートのサーバー)Notion のワークスペースを扱う社内の資料を探して要約する

探すときは、公開サーバーの一覧である MCP Registry と、Anthropic がレビューしたコネクタを並べた Anthropic Directory から。公式リポジトリに残っている参照実装は Everything・Fetch・Filesystem・Git・Memory・Sequential Thinking・Time の7つで、README は「サーバーを作る開発者のための教材」と位置づけ、使う側に自分でセキュリティの要件を確かめるよう求めている。以前そこにあった GitHub・PostgreSQL・Slack などのサーバーは servers-archived に移った(GitHub は GitHub 自身のサーバーへ、Slack は Zencoder の保守へ)。古い記事の手順をそのまま使わない。

7. 10分で試す——Claude Code にフォルダを読ませる

公式の filesystem サーバーを使い、決めたフォルダの中だけを Claude Code に読ませる。Node.js(npx)が入っている前提。

  1. 試す用のフォルダを作る。大事なファイルの無い空のフォルダ(例:~/mcp-test)を作り、短いメモの README.md を1つ置く。サーバーが触れられるのはこのフォルダの中だけになる。
  2. サーバーを登録する。macOS・Linux では次のとおり。-- より後ろは、サーバーの起動コマンドとしてそのまま渡される。
    claude mcp add --transport stdio files -- npx -y @modelcontextprotocol/server-filesystem ~/mcp-test
    Windows(WSL でない)でも同じ形で登録でき、フォルダは C:\mcp-test のように書く。npx が起動しないときは、参照実装の README にある Windows 向けの書き方どおり cmd /c で包む。
    claude mcp add --transport stdio files -- cmd /c npx -y @modelcontextprotocol/server-filesystem C:\mcp-test
    フォルダの場所は自分の環境に合わせる。
  3. つながったか確かめる。Claude Code を起動して /mcp を開き、files が connected になっているかを見る。failed のときの切り分けは MCP サーバーの接続エラーの直し方へ。
  4. 使ってみる。「mcp-test の README を要約して」と頼む。ツールを使う前に許可を求められるので、ツールの名前と引数を見てから許可する。
  5. 片付ける。試し終えたら claude mcp remove files で外す。

リモートのサーバーは URL で登録する(例:claude mcp add --transport http notion https://mcp.notion.com/mcp)。登録したら /mcp から認証を済ませる。登録先(スコープ)は3つあり、既定の local はそのプロジェクトで自分だけ、--scope project はプロジェクト直下の .mcp.json に書かれてチームで共有、--scope user は自分の全プロジェクトで使える。バージョン管理に入れたくない認証情報を持つサーバーは local にする。

8. 自分で MCP サーバーを作る——最小実装

使うだけでも役に立つが、MCP の本領は自社だけの道具を AI に開くことにある。Python の SDK(2 系)なら、次の十数行で動く。例は「社内の在庫数を返す」サーバー。

SDK は uv add "mcp[cli]"(pip なら pip install "mcp[cli]")で入れる。[cli] を付けると、下で使う mcp dev・mcp run のコマンドも入る。

from mcp.server import MCPServer

mcp = MCPServer("inventory-server")

@mcp.tool()
def get_stock(sku: str) -> int:
    """指定SKUの現在在庫数を返す"""
    # ここに自社の在庫DB照会を書く
    return query_internal_db(sku)

if __name__ == "__main__":
    mcp.run(transport="stdio")
  • 確かめる

    SDK の README にある uv run mcp dev server.py で、公式の確認用の画面(MCP Inspector)が開き、ツールの一覧と呼び出しの結果を AI 抜きで確かめられる。

  • 登録する

    Claude Code なら claude mcp add --transport stdio inventory -- python server.py。関数の説明文(docstring)がそのまま AI への道具の説明になるので、何を返すかを具体的に書く。

  • 公開する

    社内で共有するなら uv run mcp run server.py --transport streamable-http で HTTP のサーバーにできる。その場合は9章の認可とトークンの決まりを守る。

公式の SDK は TypeScript・Python・C#・Go・Rust・Ruby(Tier 1)、Java(Tier 2)、Swift・PHP・Kotlin(Tier 3)。Tier は機能の揃い方と保守の約束の段階で、仕様の新しい版への追従も SDK ごとに時期が違う。

9. セキュリティ——公式の Security Best Practices の要点

仕様は、ツールを「任意のコードの実行」にあたるものとして扱い、ホストはツールを呼び出す前に利用者の明示的な同意を得なければならないと定めている。ツールの説明や注釈(annotations)も、信頼できるサーバーから来たものでない限り信用しない前提だ。そのうえで公式の Security Best Practices は、MCP に特有の攻撃と対策を挙げている。

攻撃何が起きるか仕様が求める対策関わる人
ローカルのサーバーの乗っ取り設定に紛れ込ませた起動コマンドで、SSH の鍵を外へ送るなどの任意のコマンドが動くワンクリックで登録できるクライアントは、実行するコマンドを省略せずに見せて承認を取る(MUST)、サンドボックスで最小の権限で動かす(SHOULD)使う人・アプリを作る人
トークンの素通し別のサービス宛てのトークンを受け取り、そのまま先の API へ流す自分宛てに発行されていないトークンを受け取らない(MUST NOT)サーバーを作る人
Confused deputy第三者の API を中継するサーバーで、同意の画面を飛ばして認可コードを盗まれるクライアントごとの同意を、第三者の認可の前に取る(MUST)、redirect_uri は完全一致で照合する中継するサーバーを作る人
SSRF悪意あるサーバーが OAuth の URL に社内の住所(例:169.254.169.254)を入れ、クライアントに取りに行かせるHTTPS を求め、私的な IP の範囲への要求を止める(SHOULD)クライアントを作る人
状態の ID の乗っ取りサーバーが発行した買い物かごなどの ID を推測され、他人の状態を操作されるID を持っていることを認証とみなさない(MUST NOT)、推測できない乱数で作り、利用者に結び付ける(SHOULD)サーバーを作る人
広すぎる権限(スコープ)盗まれたトークン1つで、関係のない道具やデータまで使われる最初は読み取り中心の最小の権限にし、必要になったときに段階的に広げるサーバーを作る人

使う側が入れる前に確かめる5つ

確かめること見る場所・実例
① 誰が運営しているかサービス自身が運営するサーバー(例:GitHub の https://api.githubcopilot.com/mcp/、Notion の https://mcp.notion.com/mcp)か、参照実装か、第三者か(探すなら MCP Registry と Anthropic Directory から)
② 起動コマンドを全文読んだかnpx -y や uvx は登録した時点でパッケージを取ってきて動かすので、名前の似た別のパッケージでないか、余計なコマンドが続いていないかを見る
③ 保守が続いているか公式リポジトリの GitHub・PostgreSQL・Slack のサーバーは servers-archived に移っている
④ どこまでの権限を渡すかトークンは対象を絞って発行する(Claude Code の公式ドキュメントも、GitHub には対象のリポジトリだけに許した fine-grained トークンを使う例を示している)
⑤ 外部の内容を取り込むかWeb ページやメールを取ってくるサーバーは、プロンプトインジェクションの入口になる(Claude Code の公式ドキュメントも、接続前に信頼できるか確かめるよう警告している)

サーバーが返した文字列に「前の指示を無視して〜」と書かれていれば、AI が乗っ取られるおそれがある。サーバーの出力はデータとして扱い、送信・削除・支払いのような取り消せない操作は毎回人が確かめる。考え方は AIに渡すプロンプトの注意点 にまとめた。エージェントを自分で組む側の設計(ツールの与え方・権限の最小化・危険な操作の分け方)は、講座「AIエージェント開発」の章 MCPとツール接続 で順を追って学べる。

10. MCP・API・Skills・A2A の使い分け

やりたいこと向いている方法理由
AI に外部のデータや操作を渡し、いつ使うかも AI に選ばせたいMCP サーバーAI が道具の一覧を受け取り、必要なときに自分で呼ぶ仕組みだから
同じ接続を Claude Code・Codex・VS Code など複数のアプリで使い回したいMCP サーバー一度作れば、MCP に対応したアプリならどれからでも使える
決まった処理を、自分のプログラムから毎回同じ順で呼ぶだけ普通の API 呼び出しAI が選ぶ場面がないなら、間に MCP を挟む理由がない
手順や書き方の決まりを AI に守らせたい(外部への接続は要らない)Skills必要なのは接続ではなく手順書だから
別のチームや会社が作った AI エージェントに仕事を頼みたいA2A相手は道具ではなくエージェント(MCP が道具への「縦」なら、A2A はエージェント同士の「横」)

この4つは排他ではない。たとえば「MCP で最新のデータを取り、Skill の手順で整え、別の部署のエージェントには A2A で渡す」のように組み合わせる。MCP サーバーは Claude Code のプラグインに同梱して、スキルやフックとまとめてチームに配ることもできる。

11. 入れすぎ・作りすぎの注意

  • 文脈

    道具の結果は文脈を消費する

    Claude Code は既定で tool search を使い、セッションの開始時に読み込むのはツールの名前とサーバーの指示(instructions)だけで、定義は必要になったときに読む。ただしツールが返す結果は文脈を使い、1回の出力が10,000トークンを超えると警告が出て、既定では25,000トークンが上限になる(MAX_MCP_OUTPUT_TOKENS で変えられる)。

  • 設計

    何でも MCP にしない

    1回の問い合わせで多くの道具を呼ぶほど、時間も費用も増える。AI が選ぶ必要のない処理は、普通のプログラムや API 呼び出しのほうが速く確実だ。

  • 仕様

    版が変わる前提で作る

    2026-07-28 のように、接続の作りが変わる版もある。非推奨の機能は原則12か月以上(安全上の危険があれば最短90日)残るが、自作のサーバーは SDK の更新に合わせて見直す。

  • 収益

    作ったサーバーで稼げるか

    MCP 自体には課金の仕組みが無い。売り方と手数料は MCP サーバーで稼げるか で比べた。

まとめ

  • MCP は、AI のアプリと外部の道具・データをつなぐ公開の仕様。2024年11月に Anthropic が公開し、2025年12月に Linux Foundation の下の AAIF へ寄贈された。
  • 登場人物はホスト・クライアント・サーバー。サーバーは Tools・Resources・Prompts を出し、通信は stdio か Streamable HTTP。
  • 現行の版は 2026-07-28。握手とセッションをなくしてステートレスになり、Roots・Sampling・Logging は非推奨になった。
  • Claude Code・Codex・Gemini CLI は mcp add のコマンドで、Claude Desktop は設定ファイルで、VS Code はコマンドパレットで登録する。
  • まず filesystem の参照実装を空のフォルダで試し、/mcp で接続を確かめる。
  • 自作は Python の SDK で十数行から。MCP Inspector で確かめてから登録する。
  • 公式の Security Best Practices は、起動コマンドの全文表示と承認、自分宛てでないトークンの拒否、推測できない ID、最小の権限を求めている。

FAQ

Q1. MCP を使うために特別な学習は必要?

使うだけなら要らない。Claude Code なら claude mcp add の1行、Claude Desktop なら設定ファイルに数行を足すだけで使える。自作する場合も、SDK が JSON-RPC の細部を引き受けるので、関数を書いてデコレーターを付けるところから始められる。

Q2. ChatGPT で MCP は使える?

使える。2026年11月12日に確かめた OpenAI のヘルプでは、自作の MCP サーバーを ChatGPT につなぐ機能(書き込みを含む MCP への完全な対応)は ChatGPT Business・Enterprise・Edu のウェブ版で使える。「Plugins」の「Add custom MCP server」から、サーバーの公開の HTTPS のエンドポイント(または Secure MCP Tunnel)を登録し、危険の警告を確かめて追加する。開発者モードを先に有効にする必要はない。Business では管理者・所有者だけが接続でき、Enterprise・Edu では管理者が権限(RBAC)を与えたメンバーも接続できる。ワークスペースへの公開は管理者・所有者だけで、モバイルからは接続できない。詳しくは OpenAI のヘルプ を参照。

Q3. 2026-07-28 の版になって、古いサーバーは使えなくなる?

すぐには使えなくならない。仕様には 2025-11-25 以前の握手を使う相手とつなぐ後方互換の手順があり、Claude Code も新しい版に対応していないサーバーには従来の方式でつなぐ。非推奨の機能も原則として少なくとも12か月は仕様に残る(実際に悪用されている安全上の危険があるときだけ最短90日)。自作のサーバーは SDK を 2 系に上げるときに、Roots・Sampling・Logging に頼っていないかを見直す。

Q4. 社内 DB を MCP で AI に開くのは安全?

権限の設計しだい。読み取り専用の接続を使い、引数を厳しく確かめる決まった問い合わせだけを道具にすれば、AI に生の SQL を書かせるよりずっと安全だ。逆に「どんな SQL でも投げられる道具」は危ない。HTTP で共有するなら、9章のとおり自分宛てのトークンだけを受け取り、権限を最小にし、記録を残す。

Q5. MCP と Function Calling(ツール呼び出し)は別物?

層が違う。Function Calling はモデルの API の中で「この関数をこの引数で呼びたい」を表す形式で、MCP はアプリと外部のサーバーのあいだの通信の取り決めだ。MCP 対応のアプリは、サーバーから受け取った道具の一覧をモデルのツール呼び出しの形に渡し、モデルが選んだ呼び出しを MCP でサーバーへ送る。