Model Context Protocol(MCP)とは何か?仕組みを解説
はじめに
最近あちこちで「MCP(Model Context Protocol)」という言葉を耳にするようになりました。
「名前は聞くけど、結局どんなものなの? 何ができるの?」
MCPについて私たちR&Dチームで社内勉強会を開催し、どんな仕組みでどんなことができるのかをチーム内で共有しました。
「これからMCPを学んでみようかな」という方にとって、少しでも参考になれば嬉しいです。
MCPとは?
モデルコンテキストプロトコル(Model Context Protocol)とは
MCPは、AIが外部データやツールに標準化された方法でアクセスするためのルールを定めたプロトコルです。よくUSB Type-Cに例えられ、異なるデバイスやサービス間の接続を「共通仕様」で可能にするイメージです。
(引用:https://x.com/norahsakal/status/1898183864570593663)
具体的には、以下の3つの機能を提供します
MCPが提供する3つの機能
Resources
画像、テキスト、ソースコード、PDF、動画など、AIが処理や解析に使えるリソースを提供できます。たとえば社内ドキュメントやナレッジをAIに読み込ませることで、より正確な回答や業務支援を実現できます。
Prompts
ユーザーやアプリケーションがAIに指示を出すためのテンプレート化を支援します。これによりプロンプト設計の属人化や品質ばらつきを抑え、誰でも一貫性あるAI活用が可能になります。
Tools
AIが外部APIや業務ツールを呼び出し/処理を実行する機能です。
単なる検索だけでなく具体的なアクション(CRUD等)をAIが自律的に実行できるようになります。
MCPのアーキテクチャと仕組み
1. 接続方式
stdio:標準入出力(stdin/stdout)を介してメッセージをやり取りする方式
Streamable HTTP:HTTP経由でメッセージをやり取りする方式
※いずれもJSON-RPC 2.0形式でメッセージをやり取り
2.ライフサイクル
初期化フェーズ
AIがMCPサーバーに接続し、提供可能な「ツール一覧」を取得
各ツールの名称、説明、入力パラメータ等の仕様をLLMが理解します
実行フェーズ
LLMがプロンプトや状況に応じて、最適なツールを自ら選択し呼び出し
実行結果を受け取り、ユーザーへの回答や次のアクションに活用
(引用:https://modelcontextprotocol.io/specification/2025-03-26/basic/lifecycle)
3. クライアント機能
Sampling:サーバーからクライアントのLLMへ補完要求を出す機能
Roots:サーバーが処理する対象(リポジトリやディレクトリなど)の定義
Web APIとの違い
まず、どのLLMでも共通仕様で扱えるため環境やモデルごとに作り直す必要はありません。
また、利用者は専門知識やAPI仕様を意識することなく自然言語でやり取りするだけでAIが適切なツールを選んで実行してくれる点も大きな魅力です。
セキュリティ設計の重要性
MCPの柔軟さと強力さは大きな魅力ですが、同時にリスクにもなり得ます。
ツール汚染、各種インジェクション、シャドーイング...など様々なセキュリティリスクが伴います。
- 信頼できるMCPサーバーの選定
- 社内専用セルフホスティングの推奨
- 認証・認可・権限制御の設計
- サンドボックス化や実行環境の隔離
等々、MCPサーバーごとにリスクや特性は異なるため、用途や運用方針に応じて適切な対策を講じることが重要です。
おわりに
MCPは、AIと外部のツール・データをつなぐインターフェースとして大きな可能性を秘めており
従来のAPI設計や個別実装の手間を減らし、様々なツールを柔軟に組み合わせて利用する事ができるようになりました。
一方で、ツール連携をAIに委ねるという性質上、設計や運用次第で利便性とリスクが表裏一体となる技術でもあります。
MCPを単なる技術トレンドとして捉えるのではなく、「自社にとってどう活用すべきか」「どこまで任せるべきか」といった観点から
慎重に設計・検討していくことが求められます。
私たちもまだ試行錯誤の途中ですが、こうした知見を積み重ねより実践的な活用方法や運用のベストプラクティスを探っていきたいと考えています。
Discussion