MCPとは? Model Context Protocol の解説

AIモデルをツール、ファイル、サービスに接続するオープン標準 — AI統合のためのUSB-Cのような存在

読了時間:8分 更新:2026年4月

🔌 MCP とは?

The Model Context Protocol(MCP) は 2024 年 12 月に Anthropic により公開されたオープン標準で、AI モデルを外部ツール、データソース、サービスに接続するための汎用インターフェースを定義します。MCP が導入される前は、あらゆる AI 統合がカスタムの一回限りの実装でした。MCP は AI クライアントが外部機能と通信する方法を標準化し、1 回の統合で任意の互換性のある AI システムで動作するようにします。

MCP はクライアント-サーバープロトコルです: MCP クライアント は外部機能を利用したい AI システム(Claude、Cursor、VS Code with Copilot など)です。 MCP サーバー は GitHub、データベース、ファイルシステム、ウェブブラウザなどの機能を標準化された API を通じて公開するサービスです。どの MCP クライアントでも利用できます。

💡 重要な洞察: MCP は AI をより賢くするものではなく、AI を より良く接続するものです。 知能本体はモデル内にあり、MCP はその知能が実世界のデータやサービスに対して行動できるようにする配管を提供します。

🔋 USB-C の比喩

USB-C が登場する前は、すべての機器が独自のプロプライエタリコネクタを持っていました — 電話の充電器はラップトップで使えず、ディスプレイケーブルはストレージデバイスで使えませんでした。USB-C は 1 つの汎用標準でこれを解決しました:1 つのポート、1 本のケーブルで無限のデバイスに対応します。

MCP 登場前の AI 統合も同じ混乱状態でした。Claude を GitHub に接続するにはカスタムコードが必要でした。GPT-4 を同じ GitHub API に接続するには別のカスタムコードが必要でした。新しいツールを追加するたびに各 AI プラットフォーム向けに統合を一から作り直す必要がありました。

MCP は AI にとっての USB-C です。1 つの標準:

  • MCP サーバーを一度構築すれば — どの MCP クライアントでも使用できます
  • 新しい AI モデルを採用しても — 既存の MCP サーバーはすぐに機能します
  • MCP サーバーのエコシステムは AI モデル開発とは独立して成長します

⚙️ MCP の仕組み

MCP は transport 層上での JSON-RPC 2.0 プロトコルを使用します(ローカルサーバーでは stdio、リモートでは HTTP/SSE)。通信は初期化、機能発見、リクエスト処理のライフサイクルに従います。

3 つのコア原始操作

Primitive公開するものExample
Tools モデルが呼び出せる関数(model-controlled) search_github_issues、run_sql_query、send_email
Resources モデルが読み取れるデータ(application-controlled) file:///workspace/src、db://customers/schema
Prompts 再利用可能なプロンプトテンプレート(ユーザー制御) code-review、summarize-pr、explain-error

通信フロー

  1. 初期化: クライアントがサーバーに接続し、プロトコルバージョンと機能を交換する
  2. 発見: クライアントが利用可能なツール、リソース、プロンプトのリストを要求する
  3. 呼び出し: AI モデルがツールを呼び出すことを決定し、クライアントがサーバーにリクエストを送信する
  4. 返却: サーバーがアクションを実行し、構造化された結果をクライアントに返す
  5. 継続: AI モデルが結果を取り込み推論を続ける

トランスポートの選択肢

Transport最適用途Notes
stdio ローカルツール、CLI 統合 クライアントがサーバーをサブプロセスとして起動する; 最もシンプルなセットアップ
HTTP + SSE リモート/クラウドサービス、共有チーム向け サーバーが独立して実行され、認証ヘッダーをサポートする
WebSocket リアルタイム双方向(ドラフト) ストリーミングユースケース向けに提案されている

🔄 MCP と Function Calling の比較

Function calling(ツール使用)は OpenAI、Anthropic、Google などの特定の AI API に組み込まれた機能で、モデルが呼び出せるカスタム関数を定義できます。MCP は function calling の上に置かれるか並行して動作するレイヤーで、標準化を提供します。 それらの関数がどのように発見され接続されるか.

Function CallingMCP
Scope API 固有、リクエスト毎 クロスプラットフォーム、標準化された
Discovery API 呼び出しでハードコードされる 動的 — サーバーが機能を広告する
Portability 1 つの AI プロバイダーに結びつく 任意の MCP 対応クライアントで動作する
Resources 標準化されていない ファーストクラスの原始操作(ファイル、DB、URI)
最適用途 単純で単一プロバイダーのユースケース マルチツール、マルチモデルのプロダクションシステム

実際には、MCP サーバーは内部で function calling を利用することが多い — MCP は発見と接続のレイヤーを提供し、function calling が実際の LLM とツールの呼び出しを扱います。

🏢 MCP をサポートする企業

MCP は 2024 年 12 月のローンチ以来急速に採用が進んでいます。2026 年 4 月時点でのエコシステムには次が含まれます:

MCP サポートを備えた AI クライアント

  • Claude(Anthropic) — Claude.ai と Claude Code にネイティブな MCP サポート
  • Cursor — コード対応の AI 支援のための MCP サーバー
  • VS Code(GitHub Copilot) — エージェントモードでの MCP 統合
  • Windsurf(Codeium) — MCP サーバーのサポート
  • Continue.dev — MCP を備えたオープンソース IDE アシスタント

人気のある MCP サーバー

  • Filesystem — ローカルファイルの読み書き(公式 Anthropic)
  • GitHub — リポジトリ、PR、Issue、コード検索
  • PostgreSQL / SQLite — データベースクエリとスキーマ探索
  • Brave Search / Exa — API キー不要のウェブ検索
  • Puppeteer / Playwright — ブラウザ自動化
  • Slack / Linear / Notion — 生産性ツールとの統合
📦 MCP サーバーの見つけ方: The 公式 MCP サーバーのリポジトリ や mcp.so のようなコミュニティレジストリには数百の利用可能なサーバーが掲載されています。

🚀 MCP の始め方

オプション 1: 既存の MCP サーバーを使用する(5 分)

MCP を体験する最も速い方法は、プリビルトのサーバーを使った Claude Desktop を使用することです。 Claude Desktop の設定を次で編集します ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/yourname/Documents"]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..." }
    }
  }
}

オプション 2: MCP サーバーを構築する(30 分)

公式 SDK は TypeScript、Python、Kotlin 用に利用可能です:

// TypeScript MCP server example
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

const server = new Server({ name: "my-server", version: "1.0.0" });

server.setRequestHandler("tools/list", async () => ({
  tools: [{
    name: "get_weather",
    description: "Get current weather for a city",
    inputSchema: {
      type: "object",
      properties: { city: { type: "string" } },
      required: ["city"]
    }
  }]
}));

server.setRequestHandler("tools/call", async (request) => {
  const { city } = request.params.arguments;
  // ... fetch weather data
  return { content: [{ type: "text", text: `Weather in ${city}: sunny, 22°C` }] };
});

const transport = new StdioServerTransport();
await server.connect(transport);

🔐 MCP セキュリティに関する考慮事項

AI モデルにツール、ファイル、サービスへのアクセスを与える MCP の力は、開発者が設計すべきセキュリティリスクも導入します。

RiskDescriptionMitigation
MCP を介したプロンプトインジェクション ツールの結果に含まれる悪意あるコンテンツが AI を操作する ツールの出力をサニタイズする; 推論とアクション用モデルを分離する
権限が過剰なサーバー MCP サーバーが必要以上の権限を持っている 最小権限の原則; 可能な場合は読み取り専用にする
混乱した代行(Confused deputy) AI がユーザーの認識なしに攻撃者の代わりに行動する 破壊的/不可逆な操作には HITL 確認を行う
サーバーのサプライチェーン 悪意あるサードパーティの MCP サーバーがデータを流出させる 信頼できる監査済みのサーバーのみを使用する; サーバーのコードをレビューする
⚠️ MCP サーバーに、インターンの開発者に与えないようなアクセス権を絶対に与えないでください。 もし新しい従業員に任意のデータベースクエリを実行させたくないなら、MCP サーバーに無制限のデータベースアクセスを与えないでください。MCP サーバーの権限は、任意の API を設計する際と同じように慎重に設計してください。

MCP ツール結果を通じてプロンプトインジェクションがどのように兵器化されうるかを含む AI セキュリティ脆弱性の詳細については、当社のガイドを参照してください: プロンプトインジェクションの説明.