MCP: a -32601 reply to the server/discover probe puts a 2025-11-25 stdio server on protocol 2026-07-28, then tools/list times out

Status Open
Reported on v2.1.283
Maintainer reply None cached
Activity 2 comments · opened Sep 26, 2026

Environment

  • Claude Code 2.1.283 (macOS, Homebrew cask)
  • MCP server: mcp-grafana 1.6.0, stdio

What happens

  1. Before initialize, Claude Code sends server/discover (id server-discover-probe-1).
  2. The server answers (no data field):

{"code": -32601, "message": "\"server/discover\" requires protocol version 2026-07-28 or later"}

  1. initialize then returns protocolVersion: "2025-11-25".
  2. The MCP log nevertheless records protocolEra: "modern", negotiatedProtocolVersion: "2026-07-28".
  3. tools/list and resources/list time out after exactly 30s. Tools never load; survives /mcp reconnect and restart.

Every other MCP server in the same session negotiates legacy / 2025-11-25 and works.

Expected

Fall back to the legacy handshake — the probe got an error and initialize said 2025-11-25.

The probe reply is the trigger

A stdio shim in front of the same binary that answers server/discover with
{"code": -32601, "message": "Method not found"} — same code, only the message differs — and passes
everything else through byte for byte, makes Claude Code log legacy / 2025-11-25, and all 81 tools load.
Driving the unshimmed binary by hand over stdio returns all 81 tools in under 0.5s.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗