コンテンツにスキップ
X

MCPのケイパビリティ

MCPサーバーがクライアントに提供できる機能は、ToolsResourcesPromptsの3種類です。それぞれ「誰が呼び出しを制御するか」「副作用があるか」「どんなデータを扱うか」という点で異なります。

対象読者: MCPのアーキテクチャを理解している方

学習時間の目安: 読了 20分

前提知識: MCPのアーキテクチャ を読んでいること

種類日本語訳制御者副作用主な用途
ToolsツールAIモデル(自律的)あり処理の実行・外部APIの呼び出し
Resourcesリソースアプリケーション(Host)なし読み取り専用データの提供
Promptsプロンプトユーザー・開発者なしプロンプトテンプレートの管理

Toolsとは、AIモデルの代わりに何かを実行する関数です。処理・計算・外部APIへのリクエストなど、副作用を伴う操作を行います。

  • AIモデルが自律的に呼び出しを決定する(モデル主導)
  • 効果・副作用を伴う処理や計算を行う
  • 実行前にユーザーの許可を求める仕組みが推奨される

ユーザーが「東京の天気は?」と尋ねると、以下の流れになります。

  1. LLMが「天気を調べるには get_weather ツールを呼び出す必要がある」と判断
  2. MCPクライアントが get_weather(location="Tokyo") をサーバーに送信
  3. サーバーが天気APIを呼び出し、結果をJSON形式で返す
  4. LLMが結果を元に「東京は18度で晴れです」と回答を生成
// ツール呼び出しのリクエスト例
{
  "name": "get_weather",
  "arguments": {
    "location": "Tokyo"
  }
}

// サーバーからのレスポンス例
{
  "temperature": 18,
  "condition": "晴れ",
  "humidity": 55
}

Toolsは外部に作用する操作(ファイルの書き込み・メールの送信・APIへのリクエストなど)を伴います。そのため、Claude DesktopなどのHostは「このツールを使っていいですか?」とユーザーに確認を求める設計になっています。

ユーザーの許可が必要な操作の例

  • ファイルの作成・更新・削除
  • メールやメッセージの送信
  • 外部APIへのデータ送信
  • データベースへの書き込み

Resourcesとは、AIモデルに読み取り専用のデータを提供する仕組みです。データベースやナレッジベースのような役割を果たし、副作用がない点が特徴です。

  • アプリケーション(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モデルのコンテキストに追加します。

比較項目ToolsResources
制御者AIモデル(自律的)アプリケーション(Host)
副作用あり(書き込み・送信など)なし(読み取りのみ)
セキュリティユーザー許可が推奨比較的安全
実行タイミングLLMが必要と判断したときHostが必要と判断したとき

Promptsとは、MCPサーバーが管理する事前定義されたプロンプトテンプレートまたは会話フローです。AIの動作を誘導する定型指示や会話例を、サーバー側で一元管理できます。

  • ユーザーまたは開発者が制御する(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をサーバー側で管理することで、以下のメリットがあります。

  • 一元管理: プロンプトの改善をサーバー側で行い、クライアントは自動的に最新版を使用
  • 再利用性: チーム内で同じプロンプトテンプレートを共有できる
  • バージョン管理: プロンプトの変更履歴をサーバーで管理できる

適切な種類を選ぶ判断基準を示します。

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]
シナリオ適切な種類理由
天気情報の取得ToolsAIが自律的に呼び出し、外部APIにアクセス
ドキュメントファイルの参照Resources読み取り専用、Host側で制御
コードレビュープロンプトPrompts再利用可能なテンプレート、ユーザーが選択
メールの送信Tools副作用あり、ユーザー許可が必要
データベースの読み取りResources副作用なし、データの参照のみ
プロジェクト固有の指示Prompts開発チームが定義した定型フロー
  • Tools: AIモデルが自律的に呼び出す「実行関数」。副作用を伴うためセキュリティ管理が重要
  • Resources: 読み取り専用のデータ提供。Hostが制御し、副作用がないため安全性が高い
  • Prompts: サーバー側で管理するプロンプトテンプレート。クライアントを変更せずに更新可能

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