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
- Before
initialize, Claude Code sendsserver/discover(idserver-discover-probe-1). - The server answers (no
datafield):
{"code": -32601, "message": "\"server/discover\" requires protocol version 2026-07-28 or later"}
initializethen returnsprotocolVersion: "2025-11-25".- The MCP log nevertheless records
protocolEra: "modern",negotiatedProtocolVersion: "2026-07-28". tools/listandresources/listtime out after exactly 30s. Tools never load; survives/mcpreconnect 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.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗