MCPのケイパビリティ
MCPのケイパビリティ
Section titled “MCPのケイパビリティ”MCPサーバーがクライアントに提供できる機能は、Tools・Resources・Promptsの3種類です。それぞれ「誰が呼び出しを制御するか」「副作用があるか」「どんなデータを扱うか」という点で異なります。
対象読者: MCPのアーキテクチャを理解している方
学習時間の目安: 読了 20分
前提知識: MCPのアーキテクチャ を読んでいること
3種類のケイパビリティ概要
Section titled “3種類のケイパビリティ概要”| 種類 | 日本語訳 | 制御者 | 副作用 | 主な用途 |
|---|---|---|---|---|
| Tools | ツール | AIモデル(自律的) | あり | 処理の実行・外部APIの呼び出し |
| Resources | リソース | アプリケーション(Host) | なし | 読み取り専用データの提供 |
| Prompts | プロンプト | ユーザー・開発者 | なし | プロンプトテンプレートの管理 |
Tools(ツール)
Section titled “Tools(ツール)”Toolsとは、AIモデルの代わりに何かを実行する関数です。処理・計算・外部APIへのリクエストなど、副作用を伴う操作を行います。
Toolsの特徴
Section titled “Toolsの特徴”- AIモデルが自律的に呼び出しを決定する(モデル主導)
- 効果・副作用を伴う処理や計算を行う
- 実行前にユーザーの許可を求める仕組みが推奨される
Toolsの動作例:天気取得ツール
Section titled “Toolsの動作例:天気取得ツール”ユーザーが「東京の天気は?」と尋ねると、以下の流れになります。
- LLMが「天気を調べるには
get_weatherツールを呼び出す必要がある」と判断 - MCPクライアントが
get_weather(location="Tokyo")をサーバーに送信 - サーバーが天気APIを呼び出し、結果をJSON形式で返す
- LLMが結果を元に「東京は18度で晴れです」と回答を生成
// ツール呼び出しのリクエスト例
{
"name": "get_weather",
"arguments": {
"location": "Tokyo"
}
}
// サーバーからのレスポンス例
{
"temperature": 18,
"condition": "晴れ",
"humidity": 55
}Toolsのセキュリティ
Section titled “Toolsのセキュリティ”Toolsは外部に作用する操作(ファイルの書き込み・メールの送信・APIへのリクエストなど)を伴います。そのため、Claude DesktopなどのHostは「このツールを使っていいですか?」とユーザーに確認を求める設計になっています。
ユーザーの許可が必要な操作の例
- ファイルの作成・更新・削除
- メールやメッセージの送信
- 外部APIへのデータ送信
- データベースへの書き込み
Resources(リソース)
Section titled “Resources(リソース)”Resourcesとは、AIモデルに読み取り専用のデータを提供する仕組みです。データベースやナレッジベースのような役割を果たし、副作用がない点が特徴です。
Resourcesの特徴
Section titled “Resourcesの特徴”- アプリケーション(Host)が制御する(AIモデルが自律的にアクセスしない)
- 読み取り専用のデータ提供(副作用なし)
- URIで識別される(
file://・https://・db://など) - プライバシー面での安全性が高い
Resourcesの動作例:ファイル読み込み
Section titled “Resourcesの動作例:ファイル読み込み”URI例: file:///Users/user/documents/report.pdf
// Resourceのメタデータ
{
"uri": "file:///Users/user/documents/report.pdf",
"name": "四半期報告書",
"mimeType": "application/pdf"
}Hostアプリケーションが「このファイルの内容をコンテキストに含める」と判断した場合に、ResourceをAIモデルのコンテキストに追加します。
ToolsとResourcesの違い
Section titled “ToolsとResourcesの違い”| 比較項目 | Tools | Resources |
|---|---|---|
| 制御者 | AIモデル(自律的) | アプリケーション(Host) |
| 副作用 | あり(書き込み・送信など) | なし(読み取りのみ) |
| セキュリティ | ユーザー許可が推奨 | 比較的安全 |
| 実行タイミング | LLMが必要と判断したとき | Hostが必要と判断したとき |
Prompts(プロンプト)
Section titled “Prompts(プロンプト)”Promptsとは、MCPサーバーが管理する事前定義されたプロンプトテンプレートまたは会話フローです。AIの動作を誘導する定型指示や会話例を、サーバー側で一元管理できます。
Promptsの特徴
Section titled “Promptsの特徴”- ユーザーまたは開発者が制御する(AIモデルが自律的に選ばない)
- サーバー側で管理されるため、クライアントアプリを変更せずに更新できる
- 引数(パラメータ)を受け取り、動的なプロンプトを生成できる
- 再利用可能なプロンプトパターンを標準化できる
Promptsの動作例:コードレビューテンプレート
Section titled “Promptsの動作例:コードレビューテンプレート”// プロンプトの定義例
{
"name": "code_review",
"description": "コードレビュー用のプロンプトテンプレート",
"arguments": [
{
"name": "language",
"description": "プログラミング言語",
"required": true
},
{
"name": "focus",
"description": "レビューの重点(security/performance/readability)",
"required": false
}
]
}ユーザーが code_review テンプレートを選択し、language=Python を指定すると、サーバーがそのパラメータを反映した具体的なプロンプトを生成して返します。
Promptsのメリット
Section titled “Promptsのメリット”Promptsをサーバー側で管理することで、以下のメリットがあります。
- 一元管理: プロンプトの改善をサーバー側で行い、クライアントは自動的に最新版を使用
- 再利用性: チーム内で同じプロンプトテンプレートを共有できる
- バージョン管理: プロンプトの変更履歴をサーバーで管理できる
3種類の使い分け
Section titled “3種類の使い分け”適切な種類を選ぶ判断基準を示します。
graph TD
A[提供したい機能は?] --> B{副作用がある?}
B -->|はい\n例:ファイル書き込み・API送信| C[Tools]
B -->|いいえ| D{AIが自律的に\n利用する?}
D -->|はい| E[Tools\n※副作用なしでも\nモデル主導ならTools]
D -->|いいえ| F{データ提供か\nプロンプトか?}
F -->|データ提供| G[Resources]
F -->|プロンプト\nテンプレート| H[Prompts]実際のシナリオ別の選択例
Section titled “実際のシナリオ別の選択例”| シナリオ | 適切な種類 | 理由 |
|---|---|---|
| 天気情報の取得 | Tools | AIが自律的に呼び出し、外部APIにアクセス |
| ドキュメントファイルの参照 | Resources | 読み取り専用、Host側で制御 |
| コードレビュープロンプト | Prompts | 再利用可能なテンプレート、ユーザーが選択 |
| メールの送信 | Tools | 副作用あり、ユーザー許可が必要 |
| データベースの読み取り | Resources | 副作用なし、データの参照のみ |
| プロジェクト固有の指示 | Prompts | 開発チームが定義した定型フロー |
- Tools: AIモデルが自律的に呼び出す「実行関数」。副作用を伴うためセキュリティ管理が重要
- Resources: 読み取り専用のデータ提供。Hostが制御し、副作用がないため安全性が高い
- Prompts: サーバー側で管理するプロンプトテンプレート。クライアントを変更せずに更新可能
次のステップ
Section titled “次のステップ”- MCPとは — MCPの概要・定義に戻る
- なぜMCPが必要か — M×N統合問題の解説
- MCPのアーキテクチャ — Host・Client・Serverの3層構造
よくある質問
Section titled “よくある質問”Q: ToolsとFunctions(関数呼び出し)は同じものですか?
A: 概念は似ていますが、異なります。Function Calling(関数呼び出し)はOpenAI等が提供するLLM固有の機能で、AIが関数シグネチャを解釈して引数を生成します。ToolsはMCPプロトコルにおける概念で、Function Callingを含むより広い仕組みです。MCPのToolsは、内部的にFunction Callingを使って実装されることがあります。
Q: ResourcesとRAG(Retrieval-Augmented Generation)の違いは何ですか?
A: RAG(検索拡張生成)は、外部のドキュメントを検索してAIのコンテキストに追加する手法です。ResourcesはRAGを実現するための一つの仕組みとして使えますが、ResourcesはRAGに限定されません。Resourcesは任意の読み取り専用データ(ファイル・データベース・API結果など)を提供できます。
Q: 1つのMCPサーバーがTools・Resources・Promptsをすべて提供できますか?
A: はい、1つのMCPサーバーが3種類すべてを提供することができます。たとえば、GitHubのMCPサーバーは、リポジトリ情報をResourcesとして、ファイル作成をToolsとして、PR作成テンプレートをPromptsとして提供することができます。
このページへのリンク(英語): MCP Capabilities