MCP と Claude Code のフック
AI エージェントから人に通知し、確認を取ります。MCP の回答はモデルが無視できます。実行を確実に止めたいときはフックを使います。
どちらも CLI の nodd を使います。先に nodd login を済ませるか、NODD_KEY を設定してください。
MCP
nodd mcp は stdio の MCP サーバーです。Claude Code では次のコマンドで追加します。
claude mcp add nodd -- nodd mcp
ほかのクライアントでは次の設定を使います。
{"mcpServers":{"nodd":{"command":"nodd","args":["mcp"]}}}
ツール
notify | 通知を送ります。応答は待ちません。title(必須、120 文字)、body(1,000 文字。format: markdown で 4,000 文字)、format、image(40 KB までの Base64)、level |
|---|---|
ask | 承認か選択を求めます。title(必須)、body、format、image、options(2 から 4 個。省略すると承認)、input(入力欄。回答は note で返ります)、expires_in(既定 3600)、wait_seconds(0 から 300、既定 50) |
check_answer | ask が返した id の回答を調べます |
ask と check_answer は id、status と、あれば option_id、note を返します。
pending | wait_seconds のうちに回答がありません。check_answer で調べます |
|---|---|
approved, rejected | 承認または却下。却下の理由は note に入ります |
answered | 選択肢が選ばれました。option_id に入ります |
expired, cancelled, failed | 応答なしで終わりました |
Claude Code のフック
nodd hook は PreToolUse フックです。ツールの実行前に iPhone へ承認を求め、記録された承認だけを許可します。Claude Code の設定ファイルに次を追加します。
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [{"type": "command", "command": "nodd hook", "timeout": 1260}]
}
]
}
}
timeout は応答期限より十分長くしてください。 nodd hook は応答期限の 15 分後まで結果を待ちます。既定の 300 秒なら合計 1,200 秒です。それより先に Claude Code がフックを打ち切ると、nodd hook は拒否を出力できません。上の例の 1,260 秒は既定の期限に合わせた値です。期限を延ばすときは同じだけ増やしてください。応答期限は nodd hook --expires-in 秒 で変えられます。既定は 300 秒です。
通知は approval、level: high で送ります。見出しは Claude Code: ツール名、本文は実行するコマンド(Bash 以外はツールの入力)で、1,000 文字で切ります。
| 承認 | allow |
|---|---|
| 却下 | deny。却下の理由があれば、Rejected in Nodd: 理由 としてエージェントへ渡します |
| 期限切れ、取り下げ、失敗 | deny |
| 通信の失敗、確認できない状態 | deny。失敗はすべて拒否の出力にします |