🌌
MCPとは?仕組みを理解する
初めに
最近よく聞くMCPについて、結局何なの?仕組みはどうなっているの?と思い、MCPについてまとめてみようと思います。
この記事では以下についてまとめようと思います。
- MCPの機能や特徴
- MCPの仕組み
- Web APIとの違い
MCPとは?
MCPとは、Model Context Protocolの略で、ChatGPTのような大規模言語モデル(LLM)が、外部のツールや情報源(データソース)と効率的に連携するための「共通のやり方」や「ルール」を定めた標準化されたプロトコルです。USB type-c に良く例えられAIと外部ツールの連携をスムーズにする役割を担います。
MCPの機能
MCPは主に以下の3つの核となる機能を提供しています。これらはMCPサーバーによって公開され、MCPクライアント(LLM側)が利用します。
- Resources(リソース):データの読み込み
- リソースは、LLMがアクセスできる静的または動的なデータソースやコンテンツを指します。
- Tools(ツール):外部プログラムやサービスの実行
- ツールは、LLMが外部で特定のアクションを実行したり、計算処理を行ったりするための、実行可能な関数やサービスを指します。これは、データの「書き込み」や「変更」といった能動的な操作を可能にする主要な機能です。
- Prompts(プロンプト):効率的なプロンプト管理
- プロンプトは、LLMが特定のツールやリソースを最も効果的に利用できるよう、事前定義されたプロンプトテンプレートを指します。
MCPのアーキテクチャ
全体図を示すとこんな感じ
MCPの主要コンポーネント
MCPのアーキテクチャは、以下の3つの主要なコンポーネントで構成されます。
-
MCPホスト (MCP Host / LLM Application):
- これは、LLMを搭載し、ユーザーインターフェースを提供するアプリケーション全体を指します。例えば、Claude DesktopのようなAIチャットアプリケーションや、AIが組み込まれたIDE(統合開発環境)などがこれに該当します。
- ユーザーからの指示を受け取り、それをMCPクライアントを介してMCPサーバーに伝え、結果をユーザーに提示する役割を担います。
-
MCPクライアント (MCP Client):
- MCPホストの内部に組み込まれたコンポーネントで、MCPサーバーとの通信を担当します。
通信の仲介: MCPサーバーとの接続を確立し、JSON-RPC 2.0をベースとしたプロトコルを使用してメッセージを交換します。 - リクエストの送信: LLMからの要求(例:特定のツールを実行したい、特定のリソースを読み込みたい)をMCPサーバーに送信します。
- レスポンスの処理: MCPサーバーからの応答(ツールの実行結果、リソースのデータなど)を受け取り、LLMに渡します。
- ハンドシェイクと機能交換: サーバーとの間で利用可能な機能(ツール、リソース、プロンプト)の情報をやり取りし、LLMが何を利用できるかを認識できるようにします。
- 認証・認可処理: OAuth 2.1などのフレームワークを使用して、サーバーへのアクセスが正当に行われるように認証・認可を管理します。
- MCPホストの内部に組み込まれたコンポーネントで、MCPサーバーとの通信を担当します。
-
MCPサーバー (MCP Server):
- 外部のデータソースやツール(データベース、ファイルシステム、ウェブAPI、社内システムなど)へのアクセスを管理し、MCPクライアントに対して「リソース」「ツール」「プロンプト」として公開する役割を担います。
- 機能の公開: MCPクライアントからのリクエストに応じて、利用可能なリソース、ツール、プロンプトの一覧とそれらの利用方法(スキーマ定義など)を提供します。
- リクエストの実行: クライアントからのリクエスト(例:特定のツールを実行せよ、特定のリソースを読み込め)を受け取り、対応する外部システムと連携して実際に処理を実行します。
- 結果の返却: 処理結果をMCPクライアントに返します。
- セキュリティとアクセス制御: どのクライアントがどのリソースやツールにアクセスできるかといったポリシーを適用し、セキュリティ境界を維持します。
MCPとWeb APIの主な違い
項目 | Web API | MCP |
---|---|---|
主要な機能 | エンドポイントによる機能提供(CRUD操作や特定のサービス機能の公開等) | 機能(ツール)をモデルに提供し、動的に呼び出させる |
基本的な目的 | アプリケーション間の汎用的なデータ交換、機能連携。 | LLMが自律的に外部機能を活用できるようにするため |
設計思想 | 人間が理解しやすい静的な設計(ドキュメント前提) | LLMが動的に理解・判断して使える設計(構造的メタ情報前提) |
利用例 | 開発者が「ユーザー情報取得→注文作成」などのフローを設計 | ユーザーが自然言語で指示 → LLMが適切な機能を呼び出して処理を自動化 |
対象ユーザー | 人間 | LLMなどのAIモデル |
まとめ
- MCPの主な機能は以下の3つです。
- Resources(リソース): LLMが外部のデータを読み込む機能。
- Tools(ツール): LLMが外部プログラムを実行する機能。
- Prompts(プロンプト): LLMが効率的にツールやリソースを利用するためのテンプレート。
- MCPはUSB type-c に例えることができ、AIと外部ツールの連携をスムーズにする役割を担います。
Discussion