MCP (Model Context Protocol) のコアコンポーネントを理解しよう
目次
✅ MCP とは?
大規模言語モデル(LLM)は非常に賢くなってきましたが、外部ツールとの連携やリアルタイム情報の取得は苦手です。
その解決策が Model Context Protocol(MCP) です。
公式ドキュメント:https://modelcontextprotocol.io/introduction
MCP の特徴
- AI アプリケーション(クライアント)と外部ツール・データ(サーバー)を接続するための標準的な方法(オープンプロトコル)
- 例えるなら、USB-C が複数のデバイスを一つの規格でつなぐように、MCP は LLM と外部世界を接続
- アプリケーションを変更せずに「プラグイン」のように新機能(ファイル、API、DB など)を追加可能
🧩 MCP のアーキテクチャ概要
役割 | 説明 |
---|---|
MCP ホスト | LLM アプリ(例:Claude Desktop、IDE) |
MCP クライアント | サーバーと 1対1 で接続を維持 |
MCP サーバー | ツールやリソースをクライアントに提供(API, DB, ファイルなど) |
🔧 MCP のコアコンポーネント
1. リソース
- サーバーがクライアントに公開するデータのプリミティブ
- 例:ファイル、API レスポンス、DB レコードなど
- 一意のURI(例:
protocol://host/path
)で識別 - アプリケーション制御型
2. プロンプト
- サーバーが提供する再利用可能なテンプレート/ワークフロー
- 引数やリソースコンテキストを含めることで高度な対話が可能
- UI にスラッシュコマンドなどとして表示されることも
- ユーザー制御型
3. ツール
- サーバーが提供する実行可能な機能(アクション)
- LLM がツールを自動で呼び出すことが可能
- 例:Web 検索、ファイル削除、データ処理
- 各ツールにはアノテーション(
readOnlyHint
やdestructiveHint
)付き - モデル制御型
4. サンプリング
- サーバーから LLM に補完をリクエストする仕組み
- セキュリティとプライバシーを守りつつ、複雑な応答生成が可能
- クライアントが LLM へのリクエストとレスポンスを仲介し、内容をレビュー
- Human-in-the-loop を実現
5. ルート
- サーバーに**操作対象のスコープ(範囲)**を伝える仕組み
- 通常はディレクトリパスや URL を指定
- サーバーはその範囲内のリソースを優先的に操作・検索する
📡 MCP の通信基盤
層 | 説明 |
---|---|
プロトコル層 | メッセージ構造や通信手順(初期化、応答、終了など)を規定 |
トランスポート層 | 実際のメッセージ送信を処理。JSON-RPC 2.0 を使用 |
トランスポートの例
- Stdio:ローカル通信に便利
- HTTP with SSE:クライアントへのストリーミング送信向き
- セキュリティ対策:
- TLSの利用
- localhost バインド
- 接続元の検証
🚀 はじめの一歩:MCP を使ってみよう
MCP を試す方法
- Claude Desktop:MCP サーバーをローカル/リモートで利用可能
- Postman:MCP サーバーとの通信テストに便利
開発者向け
- 対応言語:Python / TypeScript / Java / Kotlin / C#
- クイックスタートで簡単にクライアント・サーバー構築可能
- デバッグツール:ログ機能、MCP Inspector
📝 まとめ
ポイント | 内容 |
---|---|
MCP | AI アプリと外部世界をつなぐ標準プロトコル |
Core Components | リソース、プロンプト、ツール、サンプリング、ルート |
通信基盤 | JSON-RPC ベースのプロトコル + 柔軟なトランスポート方式 |
応用 | エージェント構築、拡張機能追加、リアルタイムデータ活用などに活用可能 |
MCP を使いこなすことで、あなたの LLM は「世界とつながる存在」へと進化します。まずは簡単な設定やクイックスタートから、その可能性を体験してみましょう!