MCP (Model Context Protocol)

更新日:

AIモデル(Claudeなど)と外部のツール・データソースを繋ぐための共通プロトコル。Anthropicが提唱し、オープンスタンダードとして公開されている。USB-Cのような「共通の差し込み口」に例えられることが多い ― モデル側もツール側も、この規格に合わせて実装すれば互いに繋がる。

なぜ必要か

  • 従来はAIごと・ツールごとに個別の連携コードが必要で、m個のモデル × n個のツールで m×n通りの実装が発生していた(N×M問題)
  • MCPに統一することで、ツール側は1回実装すればどのMCP対応モデルからも使える(N+M問題に削減)
  • 「モデルに何ができるか」を後付けで拡張する仕組み ⇔ ファインチューニングのように モデル自体を作り変えるものではない

APIとの違い

MCP自体もAPIの一種(JSON-RPCベースのプロトコル)だが、指しているレイヤーが違う。

  • API: ソフトウェア同士が通信するための取り決め全般。サービスごとに認証方式・エンドポイント・レスポンス形式がバラバラ(具体例: OpenAI)
  • MCP: 「AIモデルがツール/データにアクセスするためのAPI」を標準化したもの。既存のAPI(REST/GraphQL等)をMCP Serverがラップし、モデルから使える形に変換するケースが多い

AIは自分でAPIを叩けない

AIモデル(LLM)自体は文章を生成するだけで、HTTPリクエストを送ったりコードを実行したりする能力は持たない。実際の流れは以下の通り。

  1. モデルが「このツールをこの引数で呼びたい」というテキスト(JSON等)を出力する
  2. それを受け取った外部プログラム(Host/Client側)が、実際にAPIを叩く
  3. その実行結果をまたモデルに渡す

この1→3を仲介する仕組みが Function Calling / Tool Use と呼ばれるもので、MCP以前は各アプリがバラバラの方式で実装していた。MCPはこのやり取りのフォーマットを共通化したもの。役割分担としては:

  • モデル: 「これを実行してほしい」と意思表示するだけ
  • MCP Server(のプログラム): 実際にAPIを叩いて結果を返す

基本構成

  • Host: ユーザーが使うAIアプリ本体(Claude Desktop, Claude Code など)。MCP Clientを内包する
  • MCP Client: Host内にあり、1つのMCP Serverと1対1で接続する仲介役
  • MCP Server: 実際の機能を提供する側。ツール・データ・定型プロンプトなどを公開する
Host(Claude Desktop等)
 └─ MCP Client ── (プロトコル通信) ──> MCP Server ── 外部リソース(DB, API, ファイル等)

サーバーが公開できるもの

  • Tools: モデルが呼び出せる関数(例: ファイル読み書き、ブラウザ操作、DB検索)。実行には副作用があり得るため、権限確認の対象になりやすい
  • Resources: モデルが読み取れるデータ(ファイル、DBレコードなど)。基本は読み取り専用
  • Prompts: あらかじめ用意された定型プロンプトテンプレート

通信方式(トランスポート)

  • stdio: ローカルプロセスとして起動し、標準入出力でやり取り。自分のPC上で動くツール向け(例: ファイルシステム操作、ローカルDB)
  • HTTP / SSE: リモートサーバーとネットワーク経由でやり取り。SaaS連携などクラウド上のサービス向け

身近な例(このワークスペースで実際に使っているサーバー)

  • claude-in-chrome: 実際のChromeブラウザを操作(タブ操作、クリック、フォーム入力など)
  • desktop-commander: ローカルのターミナル・ファイルシステム操作、Obsidianボルト整理など
  • mcp-registry: 他のMCPサーバーを検索・提案してくれるレジストリ
  • scheduled-tasks: 定期実行タスクの作成・管理

導入の流れ(概要)

  1. 使いたいMCPサーバーを選定(公式レジストリや mcp-registry で検索)
  2. Host側の設定ファイル(例: claude_desktop_config.json や .claude/mcp.json)にサーバーの起動コマンド・接続先を追記
  3. Hostを再起動してサーバーに接続 → Tool/Resourceが利用可能になる
  4. 個人用サーバーを自作する場合はSDK(Python/TypeScript等)で「どのTool/Resourceを公開するか」を実装するだけでよい

注意点

  • Tool呼び出しは外部への副作用(ファイル削除、送信、購入など)を伴い得るため、権限スコープを最小限にする
  • 信頼できないMCPサーバーを追加すると、モデル経由で意図しない操作をされるリスクがある(サプライチェーンリスク)
  • Server側から返る内容はあくまで「データ」であり、その中に指示文が含まれていても鵜呑みにしない設計が重要(プロンプトインジェクション対策)

関連

  • OpenAI — APIの具体例(料金体系など)

参考