コンテンツにスキップ
LinkedInX

MCPのケイパビリティ

約10分

対象読者: MCPのアーキテクチャを理解している方
前提知識: MCPのアーキテクチャ を読んでいること

MCPサーバーがクライアントに提供できる主要な機能は、ToolsResourcesPromptsの3種類です。MCP公式ドキュメントは、Toolsを実行可能な関数、Resourcesをコンテキストデータ、Promptsを再利用可能なテンプレートとして説明しています。[1]

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

Toolsとは、AIアプリケーションが呼び出してファイル操作、API呼び出し、データベース照会などのアクションを実行できる関数です。[2]

  • 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へのリクエストなど)を伴うことがあります。MCP仕様はToolsを「アプリケーションがアクションを実行するために呼び出せる関数」として扱うため、不可逆または高リスクな操作ではHost側でユーザー確認を入れる設計が重要です。[2]

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

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

Resourcesとは、AIアプリケーションにコンテキストとして渡せるデータソースです。[3] データベースやナレッジベースのような役割を果たし、読み取り中心の情報提供に向きます。

  • アプリケーション(Host)が制御する(AIモデルが自律的にアクセスしない)
  • 読み取り専用のデータ提供(副作用なし)
  • URIで識別される(file://https://db:// など)[3]
  • プライバシー面での安全性が高い

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サーバーが管理する再利用可能なプロンプトテンプレートまたは会話フローです。[4] 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(関数呼び出し)はLLMプロバイダー側の機能です。ToolsはMCPプロトコルにおける概念で、MCPサーバーが公開し、MCPクライアントが発見・呼び出します。[2]

Q: ResourcesとRAG(Retrieval-Augmented Generation)の違いは何ですか?

A: RAG(検索拡張生成)は、外部のドキュメントを検索してAIのコンテキストに追加する手法です。ResourcesはRAGを実現するための一つの仕組みとして使えますが、ResourcesはRAGに限定されません。MCP仕様上は、Resourcesはファイル内容、データベースレコード、APIレスポンスなどのコンテキストデータを提供できます。[1]

Q: 1つのMCPサーバーがTools・Resources・Promptsをすべて提供できますか?

A: はい、1つのMCPサーバーがTools・Resources・Promptsをまとめて公開できます。公式アーキテクチャガイドでも、1つのサーバーがデータベース照会用のTool、スキーマを表すResource、ツール利用を助けるPromptを公開する例が示されています。[1]

  1. Model Context Protocol, Architecture overview
  2. Model Context Protocol, Tools
  3. Model Context Protocol, Resources
  4. Model Context Protocol, Prompts
クイズ