AI・データ●●●●○

MCP

Model Context Protocol ・ えむしーぴー

AIアプリと外部のツール・データ源をつなぐ標準プロトコル。M×Nの個別連携をM+Nに減らす。

✦ 30秒で試す — 航海つなぐ相手が増えるほど、手間が掛け算で膨らんでいく全員が全員を使えるようにするのに、書く連携は何本?予想してみる

概要

MCP(Model Context Protocol)は、LLM を使うアプリケーションと、外部のツール・データ源をつなぐためのオープンな標準プロトコルです。Anthropic が2024年11月に公開し、その後 OpenAI・Google・Microsoft などの主要な AI ツールが次々に対応しました。2025年12月には Linux Foundation のもとに設立された Agentic AI Foundation へ寄贈され、特定の企業の持ち物ではない共通規格として運営されています。「AI 連携の USB-C」と呼ばれるのは、どの機器でも同じ端子でつながるように、どの AI アプリでも同じ手順で外部システムにつながることを目指しているからです。

具体的には、GitHub のリポジトリ、社内のデータベース、Slack、手元のファイルシステムといった外部システムの側が「MCP サーバ」という小さなプログラムを用意しておけば、MCP に対応した AI アプリ(チャットの画面や、コードを書くAIエージェントなど)はそれを差し込むだけで、そのシステムのデータを読んだり操作したりできるようになります。接続の約束ごとを標準にすることで、「どの AI と、どの外部システムを組み合わせるか」を自由に選べるようにする仕組みです。

なぜ生まれたか

LLM に外部のツールを使わせる Function Calling が広まると、今度は接続の組み合わせ爆発が問題になりました。AI アプリが M 個、つなぎたい外部システムが N 個あるとき、標準がなければ、各アプリが各システム向けの連携コードを個別に書くことになり、必要な実装は M×N 通りに膨らみます。同じ「GitHub につなぐ」機能を、チャットアプリも IDE もAIエージェントの基盤も、それぞれ独自の形式で作り直す。ツール定義の書式も、認証も、接続の方法もばらばらで、外部システムの側も対応アプリごとに連携を用意する羽目になっていました。

MCP は、この間に共通のプロトコルを1枚はさむことで、問題を M+N 個に変えます。AI アプリは MCP クライアントを一度実装すればあらゆる MCP サーバにつながり、外部システムは MCP サーバを一度書けばあらゆる対応アプリから使われます。これは、エディタと言語の組み合わせ爆発を「言語サーバ」の標準で解いた LSP(Language Server Protocol)にならったもので、OS のデバイスドライバや、Web における HTTP と同じく、「間を標準化して、両側の結合度を下げる」という古典的な解き方を AI の連携に当てはめたものです。

詳細

M×N を M+N に畳む

標準がないときの M×N と、MCP をはさんだときの M+N は、数字で見ると差が分かりますが、手を動かすともっとはっきりします。下の部品で確かめてください。左の AI アプリから右の外部システムへ線を引くと、線1本がそのアプリ専用の連携1つです。全部をつなぎ終えたら、アプリやシステムを1つ足して増える線を数え、次に真ん中へ MCP の帯を差し込んでみてください。

⚡ 体験: M×N 本の連携を、M+N 本に畳む
AI アプリ(3)外部システム(4)0 本実装した連携 / 必要 3×4 = 12チャットIDEエージェントGitHubDBSlackファイル↑ この帯を真ん中へドラッグ(押しても入る)MCP の帯
直結なら M×N12MCP なら M+N7いまの実装数0 / 12

左のアプリを右のシステムへドラッグして線を引いてください(押して選んでから相手を押しても引けます)。線1本が、そのアプリ専用に書く連携1つです。

1つ足したときの増え方が、標準の価値をよく表しています。直結では、新しいアプリは相手の数(N 本)だけ連携を書かないと全部に届きませんが、MCP をはさめば1本で済み、書いた瞬間に全員とつながります。ただし畳めるのは、両側が同じ約束ごとを話す場合だけです。規格の版が食い違えばつながらないので、MCP には版の交渉と、対応機能(capabilities)の申告の仕組みがあります。

ホスト・クライアント・サーバの三層構成

MCP の登場人物は3つです。「ホスト」は利用者が触る AI アプリの本体(チャットのアプリ、IDE、エージェントの基盤など)で、LLM との対話を管理します。ホストは、つなぎたい外部システムごとに「MCP クライアント」を1つ持ち、各クライアントが対応する「MCP サーバ」と1対1でつながります。MCP サーバは、外部システム(データベース、SaaS、ローカルのファイルなど)の機能を MCP の語彙に翻訳して差し出すアダプタです。やり取りは JSON-RPC 2.0(JSON で書く RPC の約束ごと)のメッセージで行います。

ホスト(AIアプリ)LLMとの対話を管理MCPクライアント AMCPクライアント BMCPクライアント CMCPつなぎ方: stdio または Streamable HTTPMCPサーバ AMCPサーバ BMCPサーバ CGitHubDBファイルサーバは外部システムの機能を MCP の語彙に翻訳するアダプタ
MCP の三層構成 — ホストは接続先ごとにクライアントを1つ持ち、クライアントとサーバが1対1で話す

つなぎ方(トランスポート)は2系統あります。ローカルでサーバをプロセスとして起動し、標準入出力でつなぐ stdio 方式と、ネットワーク越しに HTTP でつなぐ Streamable HTTP 方式です。後者は2025年3月の版で、それまでの HTTP+SSE 方式を置き換えました。どちらでも中身のメッセージは同じなので、同じサーバを手元でも、社内のサーバ上でも動かせます。

サーバが差し出すもの、クライアントが引き受けること

MCP サーバがホストに差し出せる機能は、3つのプリミティブ(基本要素)に整理されています。「ツール」は LLM が呼び出せる操作で、検索を実行する、Issue を作る、といった副作用のある行為を含みます。これは Function Calling の関数の宣言にあたり、サーバは各ツールの名前・説明・引数のスキーマを公開します。「リソース」は読み取り用のデータで、ファイルの中身やデータベースのレコードのように、LLM の文脈に取り込む素材です。「プロンプト」は定型の指示のひな形で、「このコードをレビューして」のような使い回せる依頼文をサーバの側が用意します。

逆向きに、サーバがクライアントに頼めることもあります。代表が elicitation(聞き出し)で、作業の途中で「どのリポジトリに作りますか」のように利用者へ追加の入力を求めます。初期の版には、サーバがホストの LLM に文章の生成を頼む sampling や、作業してよいディレクトリをクライアントが伝える roots もありましたが、2026年7月の版(2026-07-28)で非推奨になりました。この版は MCP を大きく作り変えた改訂で、接続のはじめに能力を交換する initialize のやり取りと、プロトコルとしてのセッションをなくし、各リクエストが自分の版と能力を添えて送る「ステートレス」な形になりました。サーバがリクエストの途中で情報を求めるときも、サーバからクライアントへ新しいリクエストを送るのではなく、「入力が必要」という結果をいったん返し、クライアントが答えを添えて同じリクエストを出し直す形に整理されています。

1回のツール呼び出しを順に追うと、MCP が「エージェントのループの外側の接点」を規格にしたものだと分かります。

外部システムMCPサーバLLMホストユーザー外部システムMCPサーバLLMホストユーザーtools/list 使えるツールは?ツールの名前・説明・引数のスキーマ先週の未解決 Issue をまとめて依頼とツールの一覧search_issues を呼んでほしいtools/call search_issuesGitHub の API を呼ぶIssue の一覧結果結果を文脈に足して再送まとめの文章回答を表示

ホストはまずサーバに「どんなツールがあるか」を問い合わせ、その一覧を LLM に渡します。LLM がツールを使うと決めたら、ホストはクライアントを通してサーバに実行を頼み、結果を文脈に戻します。この往復そのものは AIエージェントの「観察→思考→行動」のループで、MCP はそのうち外の世界との接点だけを標準にしている、と位置づけられます。

エコシステムと実務での使いどころ

標準化のいちばんの恩恵は再利用です。GitHub・Slack・PostgreSQL など主要なサービスの MCP サーバは、公式のものもコミュニティ製のものも多数公開されています。自作する場合も、各言語の SDK を使えばツール数個のサーバは短時間で書けます。社内システムを AI につなぎたいとき、アプリごとの個別の連携ではなく MCP サーバを1つ立てれば、対応するどの AI ツールからも使えます。社内の API を整えるのと同じ感覚で、「AI 向けの窓口」を整えられるのが実務上の魅力です。ネットワーク越しの接続では、OAuth を土台にした認可が仕様に組み込まれていて(2025年3月の版で導入)、利用者の同意に基づいて権限を委ねるという、Web の API で培われた作法をそのまま持ち込めます。

落とし穴と設計上の注意

便利さの裏で、MCP は「LLM に外の世界への実行力を渡す配線」でもあるので、セキュリティの注意が欠かせません。素性の分からない MCP サーバをつなぐことは、見知らぬコードに手元のデータへのアクセスを許すのと同じです。ツールの説明文やリソースの中身に悪意のある指示を仕込み、LLM に意図しない操作をさせる攻撃(プロンプトインジェクションの一種。プロンプトエンジニアリングの記事を参照)の入口にもなります。信頼できる提供元のサーバだけを使う、最小権限のトークンを渡す、破壊的な操作には人の承認をはさむ、という基本を守ります。また、つなぐサーバを増やすほどツールの定義がコンテキストウィンドウを圧迫し、LLM がツールを選ぶ精度も落ちます。「つなげるだけつなぐ」のではなく、作業に必要な接続に絞るのが実運用のこつです。

試問

左に AI アプリ、右に外部システムが並んでいます。アプリをシステムへドラッグすると、そのアプリ専用の連携が1本引けます(線を押すと外せます)。下のボタンでアプリやシステムを足せて、下にある「MCP の帯」は真ん中へドラッグすると差し込めます。

✦ 命題挑戦中

AI アプリ5つと外部システム6つの全員が全員を使える状態を、連携12本以内で作れ

  • AI アプリを5つ、外部システムを6つにそろえる(いま 3・4)
  • どのアプリからも、すべてのシステムを使える
  • 書いた連携を12本以下に収める(いま 0 本)
⚡ 体験: M×N 本の連携を、M+N 本に畳む
AI アプリ(3)外部システム(4)0 本実装した連携 / 必要 3×4 = 12チャットIDEエージェントGitHubDBSlackファイル↑ この帯を真ん中へドラッグ(押しても入る)MCP の帯
いまの実装数0 / 12

左のアプリを右のシステムへドラッグして線を引いてください(押して選んでから相手を押しても引けます)。線1本が、そのアプリ専用に書く連携1つです。