CC逆引きリファレンス

MCP サーバーからの入力要求をフックしたい

11. フック

コマンド / 機能

Elicitation / ElicitationResult

MCP インタラクティブ入力フック

概要

Elicitation は MCP サーバーがユーザーへのインタラクティブな入力を要求した時に発火します。ElicitationResult は入力が完了した後に発火します。MCP サーバーが対話的にデータを収集する際のカスタマイズに使います。

設定例

// .claude/settings.json
{
  "hooks": {
    "Elicitation": [
      {
        "type": "command",
        "command": ".claude/hooks/handle-elicitation.sh"
      }
    ],
    "ElicitationResult": [
      {
        "type": "command",
        "command": ".claude/hooks/on-elicitation-done.sh"
      }
    ]
  }
}

// Elicitation フック例:要求内容をログ
#!/bin/bash
prompt=$(echo "$CLAUDE_HOOK_DATA" | jq -r '.prompt')
echo "[Elicitation] MCP requested: $prompt" >> .claude/mcp.log
公式ドキュメントを見る

こんな時に使う

  • MCP サーバーからのユーザー入力要求をカスタマイズしたい時
  • MCP の入力・出力をログに記録したい時
  • セキュリティ上 MCP の対話的操作を監視したい時

使い方

  1. 1hooks.Elicitation で入力要求時の処理を定義
  2. 2hooks.ElicitationResult で入力完了後の処理を定義
  3. 3MCP サーバーが elicitation をサポートしている必要あり

Tips

  • Elicitation は MCP サーバーが対話的データ収集をする機能
  • 終了コード 2 で入力をブロック・拒否できる
  • ElicitationResult でユーザーが提供した値を受け取れる