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リクエストを送ったりコードを実行したりする能力は持たない。実際の流れは以下の通り。
- モデルが「このツールをこの引数で呼びたい」というテキスト(JSON等)を出力する
- それを受け取った外部プログラム(Host/Client側)が、実際にAPIを叩く
- その実行結果をまたモデルに渡す
この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: 定期実行タスクの作成・管理
導入の流れ(概要)
- 使いたいMCPサーバーを選定(公式レジストリや
mcp-registryで検索) - Host側の設定ファイル(例:
claude_desktop_config.jsonや.claude/mcp.json)にサーバーの起動コマンド・接続先を追記 - Hostを再起動してサーバーに接続 → Tool/Resourceが利用可能になる
- 個人用サーバーを自作する場合はSDK(Python/TypeScript等)で「どのTool/Resourceを公開するか」を実装するだけでよい
注意点
- Tool呼び出しは外部への副作用(ファイル削除、送信、購入など)を伴い得るため、権限スコープを最小限にする
- 信頼できないMCPサーバーを追加すると、モデル経由で意図しない操作をされるリスクがある(サプライチェーンリスク)
- Server側から返る内容はあくまで「データ」であり、その中に指示文が含まれていても鵜呑みにしない設計が重要(プロンプトインジェクション対策)
関連
- OpenAI — APIの具体例(料金体系など)