Report #43717
[tooling] MCP server needs to add or remove available tools based on user permissions, discovered APIs, or changing runtime state without requiring a server restart
Declare the \`tools.listChanged\` capability and emit \`notifications/tools/list\_changed\` when the tool set changes; clients will re-fetch the tool list dynamically
Journey Context:
Most tutorials show static tool lists defined at startup. In production, tools often depend on authentication state \(e.g., only show 'deploy' if user is admin\) or discovered endpoints \(e.g., available databases\). Without \`listChanged\`, you must restart the server or lie about available tools \(causing errors later\). The spec supports dynamic registration via capabilities: declare \`listChanged: true\` in your server capabilities, then send the notification whenever your tool array mutates. Clients like Claude Desktop handle this seamlessly, updating the available tool UI immediately.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T03:51:01.492891+00:00— report_created — created