MCP公式ドキュメント 日本語版
  1. コンセプト
MCP公式ドキュメント 日本語版
  • 始める
    • 導入
    • サンプルサーバー
    • クライアントの例
    • クイックスタート
      • サーバー開発者向け
      • クライアント開発者向け
      • Claude デスクトップ ユーザー向け
  • チュートリアル
    • LLMs を使用した MCP の構築
    • デバッグ
    • Inspector
  • コンセプト
    • リソース
    • コアアーキテクチャ
    • プロンプト
    • ツール
    • サンプリング
    • ルーツ
    • トランスポート
  • 発達
    • 最新情報
    • ロードマップ
    • 貢献
  1. コンセプト

プロンプト

再利用可能なプロンプトテンプレートとワークフローを作成する
Promptsは、サーバーが再利用可能なプロンプトテンプレートとワークフローを定義することを可能にし、クライアントがユーザーやLLMに簡単に表示できるようにします。共通のLLMインタラクションを標準化し、共有する強力な方法を提供します。
Promptsはユーザー制御を目的として設計されており、サーバーからクライアントに公開され、ユーザーがそれを明示的に選択して使用できるようにすることを意図しています。

概要#

MCPのPromptsは以下のことができます:
動的な引数を受け入れる
リソースからコンテキストを含める
複数のインタラクションを連鎖させる
特定のワークフローをガイドする
UI要素として表示される (スラッシュコマンドのように)

プロンプト構造#

各プロンプトは以下のように定義されます:

プロンプトの発見#

クライアントはprompts/listエンドポイントを通じて利用可能なプロンプトを発見できます:

プロンプトの使用#

プロンプトを使用するために、クライアントはprompts/getリクエストを行います:

動的プロンプト#

プロンプトは動的にし、以下を含むことができます:

埋め込みリソースコンテキスト#

{
  "name": "analyze-project",
  "description": "プロジェクトのログとコードの分析",
  "arguments": [
    {
      "name": "timeframe",
      "description": "ログを分析する期間",
      "required": true
    },
    {
      "name": "fileUri",
      "description": "レビューするコードファイルのURI",
      "required": true
    }
  ]
}
prompts/getリクエストを処理する際:
{
  "messages": [
    {
      "role": "user",
      "content": {
        "type": "text",
        "text": "これらのシステムログとコードファイルの問題を分析してください:"
      }
    },
    {
      "role": "user",
      "content": {
        "type": "resource",
        "resource": {
          "uri": "logs://recent?timeframe=1h",
          "text": "[2024-03-14 15:32:11] ERROR: 接続タイムアウト in network.py:127\n[2024-03-14 15:32:15] WARN: 再接続を試みています (試行 2/3)\n[2024-03-14 15:32:20] ERROR: 最大再試行回数を超えました",
          "mimeType": "text/plain"
        }
      }
    },
    {
      "role": "user",
      "content": {
        "type": "resource",
        "resource": {
          "uri": "file:///path/to/code.py",
          "text": "def connect_to_service(timeout=30):\n    retries = 3\n    for attempt in range(retries):\n        try:\n            return establish_connection(timeout)\n        except TimeoutError:\n            if attempt == retries - 1:\n                raise\n            time.sleep(5)\n\ndef establish_connection(timeout):\n    # サービスへの接続を確立する実装\n    pass",
          "mimeType": "text/x-python"
        }
      }
    }
  ]
}

マルチステップワークフロー#

具体的な実装例#

以下はMCPサーバーでプロンプトを実装する完全な例です:
TypeScript

ベストプラクティス#

プロンプトを実装する際には:
1.
明確で説明的なプロンプト名を使用する
2.
プロンプトおよび引数の詳細な説明を提供する
3.
すべての必須引数を検証する
4.
引数が見つからない場合は適切に処理する
5.
プロンプトテンプレートのバージョニングを考慮する
6.
必要に応じて動的コンテンツをキャッシュする
7.
エラーハンドリングを実装する
8.
想定される引数のフォーマットを文書化する
9.
プロンプトの組み合わせ可能性を考慮する
10.
さまざまな入力でプロンプトをテストする

UI統合#

プロンプトはクライアントUIに以下の形で組み込むことができます:
スラッシュコマンド
クイックアクション
コンテキストメニュー項目
コマンドパレットエントリー
ガイド付きワークフロー
インタラクティブフォーム

更新と変更#

サーバーはクライアントにプロンプトの変更を通知できます:
1.
サーバー機能: prompts.listChanged
2.
通知: notifications/prompts/list_changed
3.
クライアントはプロンプトリストを再取得

セキュリティ考慮事項#

プロンプトを実装する際には:
すべての引数を検証する
ユーザー入力をサニタイズする
レート制限を考慮する
アクセス制御を実施する
プロンプトの使用を監査する
機密データを適切に扱う
生成されたコンテンツを検証する
タイムアウトを実装する
プロンプトインジェクションのリスクを考慮する
セキュリティ要件を文書化する
前へ
コアアーキテクチャ
次へ
ツール
Built with