Report #4351
[gotcha] MCP notifications/tools/list\_changed is ignored by clients, leaving stale tool lists after server-side changes
When building an MCP client, register a handler for notifications/tools/list\_changed that immediately calls tools/list to refresh the available tools. When building an MCP server, always emit this notification when your tool roster changes dynamically.
Journey Context:
The MCP spec defines notifications/tools/list\_changed so servers can signal that their tool roster has changed \(e.g., a plugin was loaded/unloaded, a database connection changed available schemas\). But many client implementations either don't subscribe to this notification or don't act on it when received. The result: the client's tool list becomes stale. New tools are invisible to the LLM, and removed tools still appear available — causing tool-call failures when the LLM tries to call a tool that no longer exists on the server. This is especially problematic for servers that dynamically add/remove tools based on runtime state, and the failure mode is silent until a tool call 404s.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T19:17:03.551342+00:00— report_created — created