[BUG] MCP stdio server notifications/tools/list_changed does not refresh the tool catalog mid-session
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Environment: Claude Code VS Code extension · model claude-opus-4-8 · stdio MCP server (custom Node bridge)
Summary: When a connected stdio MCP server emits notifications/tools/list_changed during a session, the newly advertised tools do not become available for invocation. The same tools are picked up if they're present in tools/list at (re)connection time.
Impact: Breaks dynamic MCP tool catalogs — e.g. a bridge that exposes context-scoped tools after an attach/handshake step. The server correctly merges the tools into tools/list and emits the spec'd notification, but they remain unreachable.
Verified server-side: the bridge emits notifications/tools/list_changed and includes the new tools in subsequent tools/list responses; the standard MCP listChanged capability flow.
What Should Happen?
Client re-issues tools/list, and the B tools become callable within the session.
Error Messages/Logs
Steps to Reproduce
- Connect a stdio MCP server that initially returns catalog A from tools/list.
- Mid-session, the server adds tools (catalog A+B) and emits
notifications/tools/list_changedon stdout. - Ask the model to use a tool from B.
The B tools never become callable (not surfaced as available, not findable). Only a full reconnect (fresh initialize → tools/list) exposes them — which is unusable when the new tools depend on session state established after connect (so they can't be in the initial list).
Claude Model
Opus
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.165
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Windows Terminal
Additional Information
_No response_
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗