[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 3 comments on GitHub. Read the full discussion on GitHub ↗