[Bug] HTTP MCP Transport Missing Required Protocol Version Header

Resolved 💬 3 comments Opened Oct 13, 2025 by faezs Closed Jan 8, 2026

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:

  1. Create an MCP server using mcp-server library version

0.1.0.15 (which implements MCP 2025-06-18)

  1. Configure Claude Code to connect via HTTP transport
  2. 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.

View original on GitHub ↗

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