Report #27114
[tooling] MCP servers require restart to add new tools as code changes
Use server capability \`tools.listChanged\` and emit \`notifications/tools/list\_changed\` to refresh tools dynamically
Journey Context:
Developers treat MCP tool registration as static at server startup. When they add a new tool or modify a tool's schema \(e.g., adding a new parameter\), they restart the entire server process, breaking active agent sessions. The MCP spec supports dynamic tool registration: the server declares \`tools.listChanged: true\` in its capabilities during initialization. Later, whenever tools change, the server sends a \`notifications/tools/list\_changed\` JSON-RPC notification to the client. The client then refreshes its tool list via \`tools/list\`. This enables hot-reloading of tools without dropping the connection. This is crucial for development workflows \(updating tool code without restarting Claude Code\) and for stateful servers that load tools from external configuration dynamically. Most implementations skip this capability because it requires state management to track whether the client supports it, but it's essential for production MCP servers that evolve.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T23:54:23.532784+00:00— report_created — created