MCP tools/list_changed: tool index frozen at session create — newly projected tools invisible until reconnect
Environment: Claude Code CLI + Claude Desktop, MCP stdio servers.
Behavior: When an MCP server's tool catalog changes mid-session (our server projects its tool list dynamically from a database — tools can be added/updated while the server runs and we emit notifications/tools/list_changed), Claude Code does not re-fetch the tool list. The session's tool index appears frozen at session-create time; newly added or updated tools are invisible (and updated descriptions/schemas stale) until the user fully restarts/reconnects the session.
Expected: On tools/list_changed, the client re-lists tools and makes additions/updates available to the model within the same session (or exposes a user-visible refresh affordance).
Impact: Any MCP server whose capability surface is data-driven (tool definitions stored/updated outside the binary) requires a full client restart to ship a tool change, which defeats dynamic tool projection.
Workaround we use: documenting 'reconnect required' to users; considering a static meta-tool that proxies dynamic calls — both are workarounds for the missing list_changed handling.
Happy to provide a minimal reproduction server if useful.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗