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

サンプリング

サーバーに LLM からの補完をリクエストさせる
Sampling は、サーバーがクライアントを通じて LLM の補完をリクエストできる強力な MCP 機能であり、セキュリティとプライバシーを維持しながら、高度なエージェント的な動作を可能にします。
この MCP の機能は、Claude Desktop クライアントではまだサポートされていません。

Sampling の仕組み#

Sampling の流れは以下の通りです。
1.
サーバーが sampling/createMessage リクエストをクライアントに送信
2.
クライアントがリクエストを確認し、変更可能
3.
クライアントが LLM からサンプリング
4.
クライアントが補完を確認
5.
クライアントが結果をサーバーに返す
このヒューマン・イン・ザ・ループ設計により、ユーザーは LLM が何を見て何を生成するかを常に制御できます。

メッセージ形式#

Sampling リクエストは、標準化されたメッセージ形式を使用します。

リクエストパラメータ#

メッセージ#

messages 配列には、LLM に送信する会話履歴が含まれています。 各メッセージには以下が含まれます。
role: "user" または "assistant" のいずれか
content
: メッセージの内容。以下が可能です。
text フィールドを持つテキストコンテンツ
data (base64) および mimeType フィールドを持つ画像コンテンツ

モデルの設定#

modelPreferences オブジェクトを使用すると、サーバーはモデル選択の優先順位を指定できます。
hints: クライアントが適切なモデルを選択するために使用できるモデル名の提案の配列:
name: 完全または部分的なモデル名に一致する文字列 (例: "claude-3", "sonnet")
クライアントは、ヒントを異なるプロバイダーの同等のモデルにマッピングできます
複数のヒントは優先順位で評価されます
優先度値 (0-1 に正規化):
costPriority: コストを最小限に抑える重要度
speedPriority: 低レイテンシー応答の重要度
intelligencePriority: 高度なモデル機能の重要度
クライアントは、これらの優先順位と利用可能なモデルに基づいて、最終的なモデル選択を行います。

システムプロンプト#

オプションの systemPrompt フィールドを使用すると、サーバーは特定のシステムプロンプトをリクエストできます。 クライアントはこれを変更または無視する可能性があります。

コンテキストの包含#

includeContext パラメータは、含める MCP コンテキストを指定します。
"none": 追加のコンテキストなし
"thisServer": リクエスト元のサーバーからのコンテキストを含める
"allServers": 接続されているすべての MCP サーバーからのコンテキストを含める
クライアントは、実際に含まれるコンテキストを制御します。

サンプリングパラメータ#

以下を使用して、LLM Sampling を微調整します。
temperature: ランダム性を制御 (0.0 ~ 1.0)
maxTokens: 生成する最大トークン数
stopSequences: 生成を停止するシーケンスの配列
metadata: 追加のプロバイダー固有のパラメータ

応答フォーマット#

クライアントは補完結果を返します。

リクエスト例#

クライアントからの Sampling をリクエストする例を次に示します。
{
  "method": "sampling/createMessage",
  "params": {
    "messages": [
      {
        "role": "user",
        "content": {
          "type": "text",
          "text": "What files are in the current directory?"
        }
      }
    ],
    "systemPrompt": "You are a helpful file system assistant.",
    "includeContext": "thisServer",
    "maxTokens": 100
  }
}

ベストプラクティス#

Sampling を実装する場合:
1.
常に明確で構造化されたプロンプトを提供する
2.
テキストと画像の両方のコンテンツを適切に処理する
3.
妥当なトークン制限を設定する
4.
includeContext を通じて関連するコンテキストを含める
5.
使用する前に応答を検証する
6.
エラーを適切に処理する
7.
Sampling リクエストのレート制限を検討する
8.
予想される Sampling の動作を文書化する
9.
さまざまなモデルパラメータでテストする
10.
Sampling のコストを監視する

人間が関与する制御#

Sampling は、人間の監視を念頭に置いて設計されています。

プロンプトについて#

クライアントは、提案されたプロンプトをユーザーに表示する必要があります
ユーザーは、プロンプトを変更または拒否できる必要があります
システムプロンプトは、フィルタリングまたは変更できます
コンテキストの包含は、クライアントによって制御されます

補完について#

クライアントは、補完をユーザーに表示する必要があります
ユーザーは、補完を変更または拒否できる必要があります
クライアントは、補完をフィルタリングまたは変更できます
ユーザーは、使用するモデルを制御します

セキュリティに関する考慮事項#

Sampling を実装する場合:
すべてのメッセージコンテンツを検証する
機密情報をサニタイズする
適切なレート制限を実装する
Sampling の使用状況を監視する
転送中のデータを暗号化する
ユーザーデータのプライバシーを処理する
Sampling リクエストを監査する
コストエクスポージャーを制御する
タイムアウトを実装する
モデルエラーを適切に処理する

一般的なパターン#

エージェントワークフロー#

Sampling は、次のようなエージェントパターンを可能にします。
リソースの読み取りと分析
コンテキストに基づく意思決定
構造化データの生成
複数ステップのタスクの処理
インタラクティブな支援の提供

コンテキスト管理#

コンテキストに関するベストプラクティス:
最小限必要なコンテキストをリクエストする
コンテキストを明確に構造化する
コンテキストサイズの制限を処理する
必要に応じてコンテキストを更新する
古いコンテキストをクリーンアップする

エラー処理#

堅牢なエラー処理は、次のことを行う必要があります。
Sampling の失敗をキャッチする
タイムアウトエラーを処理する
レート制限を管理する
応答を検証する
フォールバック動作を提供する
エラーを適切にログに記録する

制限事項#

次の制限事項に注意してください。
Sampling はクライアントの機能に依存します
ユーザーは Sampling の動作を制御します
コンテキストサイズには制限があります
レート制限が適用される場合があります
コストを考慮する必要があります
モデルの可用性は異なります
応答時間は異なります
すべてのコンテンツタイプがサポートされているわけではありません
前へ
ツール
次へ
ルーツ
Built with