MCP サーバーからユーザーに入力を求めさせたい
7. MCP(Model Context Protocol)コマンド / 機能
MCP ElicitationMCP インタラクティブ入力
概要
MCP Elicitation は MCP サーバーがユーザーにインタラクティブな入力を求めることができる機能です。確認ダイアログや入力フォームを通じて、MCP サーバーが必要なデータをユーザーから収集できます。
設定例
// MCP サーバー側の実装(TypeScript)
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
const server = new McpServer({ name: "my-server", version: "1.0" });
server.tool("deploy", async ({ context }) => {
// ユーザーに確認を求める
const result = await context.elicit({
message: "本番環境にデプロイしますか?",
schema: {
type: "object",
properties: {
confirmed: { type: "boolean" },
environment: { type: "string", enum: ["staging", "production"] }
}
}
});
if (!result.confirmed) {
return { content: [{ type: "text", text: "デプロイをキャンセルしました" }] };
}
// デプロイ処理...
});
// フックで Elicitation を監視する(.claude/settings.json)
{
"hooks": {
"Elicitation": [
{
"type": "command",
"command": "echo "MCP requested input: $CLAUDE_HOOK_DATA" >> .claude/mcp.log"
}
]
}
}こんな時に使う
- MCP サーバーからユーザーに確認を求めたい時
- MCP ツール実行前に必要なパラメータを対話的に収集したい時
- 危険な操作の前にユーザー確認を挟みたい時
使い方
- 1MCP サーバー側で context.elicit() を呼び出す実装が必要
- 2Claude Code は Elicitation ダイアログを表示してユーザー入力を求める
- 3Elicitation / ElicitationResult フックで入力内容を監視可能
Tips
- MCP SDK の最新バージョンが必要
- schema パラメータで入力フォームの形式を定義
- Elicitation フックで自動処理・ブロックが可能