[Bug] HTTP MCP Transport Missing Required Protocol Version Header
Bug Description
Title: HTTP MCP transport missing required MCP-Protocol-Version header
Description:
Claude Code's HTTP MCP transport client is not sending the required MCP-Protocol-Version header when connecting to MCP servers, causing connection failures with servers that implement MCP spec 2025-06-18.
Steps to Reproduce:
- Create an MCP server using mcp-server library version 0.1.0.15 (which implements MCP 2025-06-18)
- Configure Claude Code to connect via HTTP transport
- Attempt to connect with /mcp command
Expected Behavior: Claude Code should send MCP-Protocol-Version: 2025-06-18 header on all HTTP requests to MCP servers, as required by the MCP 2025-06-18 specification.
Actual Behavior:
- No MCP-Protocol-Version header is sent
- Server returns 400 Bad Request: Missing required MCP-Protocol-Version header
- Connection fails with "Failed to reconnect to agda-mcp"
Evidence from logs: "HTTP Connection failed after 49ms: Error POSTing to endpoint (HTTP 400): {"error":"Missing required MCP-Protocol-Version header"}"
Log location: ~/Library/Caches/claude-cli-nodejs/-Users-fa ezs-agda-mcp/mcp-logs-agda-mcp/
Manual verification:
Without header (fails) - this is what Claude Code is
doing
curl -X POST http://localhost:3000/mcp -H "Content-Type:
application/json"
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","param
s":{"protocolVersion":"2025-06-18","capabilities":{},"clie
ntInfo":{"name":"test","version":"1.0"}}}'
Returns: {"error":"Missing required MCP-Protocol-Version
header"}
With header (succeeds) - what Claude Code should do
curl -X POST http://localhost:3000/mcp -H "Content-Type:
application/json"
-H "MCP-Protocol-Version: 2025-06-18"
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","param
s":{"protocolVersion":"2025-06-18","capabilities":{},"clie
ntInfo":{"name":"test","version":"1.0"}}}'
Returns: successful initialize response
Environment:
- Claude Code version: 2.0.13
- Platform: macOS (darwin)
- Node version: v24.3.0
- MCP server library: mcp-server 0.1.0.15 (Haskell)
Specification Reference: According to the MCP 2025-06-18 spec upgrade notes, all HTTP requests must include the MCP-Protocol-Version: 2025-06-18 header. This is a breaking change from earlier protocol versions.
Workaround: Use STDIO transport instead of HTTP, or use older mcp-server versions (0.1.0.14 or earlier) that don't enforce the header requirement.
Environment Info
- Platform: darwin
- Terminal: ghostty
- Version: 2.0.13
- Feedback ID: d4715dbe-2e1b-4369-87d3-bf4fd1cc6d6c
Errors
[{"error":"Error\n at <anonymous> (/$bunfs/root/claude:32:10432)\n at emit (node:events:92:22)\n at <anonymous> (/$bunfs/root/claude:31:3291)\n at request (/$bunfs/root/claude:34:2146)\n at processTicksAndRejections (native:7:39)","timestamp":"2025-10-13T21:30:10.118Z"},{"error":"Error\n at <anonymous> (/$bunfs/root/claude:14:15093)\n at <anonymous> (/$bunfs/root/claude:32:10011)\n at emitError (node:events:43:23)\n at <anonymous> (/$bunfs/root/claude:31:1123)\n at emitError (node:events:43:23)\n at <anonymous> (node:_http_client:251:22)\n at processTicksAndRejections (native:7:39)\n at request (/$bunfs/root/claude:34:2146)\n at processTicksAndRejections (native:7:39)","timestamp":"2025-10-13T21:30:14.452Z"},{"error":"Error: Request was aborted.\n at _createMessage (/$bunfs/root/claude:386:4506)\n at processTicksAndRejections (native:7:39)","timestamp":"2025-10-13T21:33:38.907Z"},{"error":"Error: Request was aborted.\n at _createMessage (/$bunfs/root/claude:386:4506)\n at processTicksAndRejections (native:7:39)","timestamp":"2025-10-13T21:41:59.029Z"},{"error":"Error\n at LC (/$bunfs/root/claude:27:1142)\n at <anonymous> (/$bunfs/root/claude:32:9845)\n at emit (node:events:92:22)\n at endReadableNT (internal:streams/readable:862:50)\n at processTicksAndRejections (native:7:39)\n at request (/$bunfs/root/claude:34:2146)\n at processTicksAndRejections (native:7:39)","timestamp":"2025-10-13T21:48:54.581Z"},{"error":"Error: Request was aborted.\n at makeRequest (/$bunfs/root/claude:527:3850)\n at processTicksAndRejections (native:7:39)","timestamp":"2025-10-13T21:51:09.330Z"},{"error":"Error: Language not supported while highlighting code, falling back to markdown: \n at RI (/$bunfs/root/claude:2071:731)\n at map (native:1:11)\n at c3 (/$bunfs/root/claude:2071:448)\n at Mc5 (/$b
Note: Error logs were truncated.
This issue has been inactive for 30 days. If the issue is still occurring, please comment to let us know. Otherwise, this issue will be automatically closed in 30 days for housekeeping purposes.
This issue has been automatically closed due to 60 days of inactivity. If you're still experiencing this issue, please open a new issue with updated information.
This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.