MCP notifications/tools/list_changed ignored over Streamable HTTP in 2.1.211 (regression from 2.1.210)

Open 💬 0 comments Opened Jul 16, 2026 by jakeziqiwei1

Bug: MCP notifications/tools/list_changed ignored over Streamable HTTP in 2.1.211 (worked in 2.1.210)

Summary

Claude Code CLI 2.1.211 does not refresh an MCP server's tool list when the
server sends notifications/tools/list_changed over the Streamable HTTP
transport. The notification is received on the client's open GET SSE stream but
no tools/list re-fetch follows, so newly available tools never appear until the
server is manually reconnected (/mcp → Reconnect). 2.1.210 behaves correctly
(tools auto-appear), so this is a regression introduced in 2.1.211.

Environment

  • Claude Code CLI: 2.1.210 (works) vs 2.1.211 (broken), native installer, macOS
  • MCP server: http type (Streamable HTTP), OAuth-authenticated, configured in

~/.claude.json mcpServers

  • Server advertises capabilities.tools.listChanged: true in the initialize result

Steps to reproduce

  1. Connect Claude Code to a remote http MCP server that supports dynamic tools.
  2. In an active session, cause the server to gain new tools (here: authorize a

downstream service, after which the server exposes new tools).

  1. Server pushes {"jsonrpc":"2.0","method":"notifications/tools/list_changed"}

as an SSE data: frame on the standalone GET stream the client opened.

Expected

Claude Code re-fetches tools/list and the new tools become available in the
same session without reconnect (this is the documented list_changed behavior,
and is what 2.1.210 does).

Actual (2.1.211)

No re-fetch occurs. New tools do not appear until /mcp → Reconnect (which forces
a fresh initializetools/list). Server-side logs confirm the push was
delivered to an open stream (streams:1).

Evidence it's client-side, not server-side

  • Server advertises tools.listChanged: true at initialize.
  • Server log shows the stream open and the notification pushed to it

(mcp: SSE stream opened, mcp: pushed tools/list_changed notification streams:1).

  • The exact same server + push auto-refreshes correctly in claude.ai and Cowork,

and in Claude Code CLI 2.1.210.

Regression range

Works in 2.1.210, broken in 2.1.211.

Impact

Users of remote MCP servers with dynamic tool lists (e.g. gateways that expose
tools after per-service authorization) must manually reconnect to see new tools,
defeating the point of tools/list_changed.

View original on GitHub ↗