HTTP MCP servers requiring `Accept: text/event-stream` fail with 406 (never load)

Resolved 💬 3 comments Opened Apr 8, 2026 by jim-wkr Closed Apr 12, 2026

Summary

HTTP MCP servers that strictly require Accept: application/json, text/event-stream in the request headers fail to connect with a 406 Not Acceptable error. The affected servers never appear in the MCP server list regardless of restarts.

Environment

  • Claude Code version: 2.1.96
  • OS: macOS Darwin 24.6.0

Steps to Reproduce

  1. Add a type: "http" MCP server to ~/.claude/settings.json that enforces the text/event-stream accept type (e.g. the VWO MCP server):

\\\json
"vwo": {
"type": "http",
"url": "https://mcp.vwo.io/mcp?key=YOUR_KEY"
}
\
\\

  1. Start (or restart) Claude Code.
  2. Run /mcp — the VWO server is absent from the list.

Root Cause

Claude Code's HTTP MCP client appears to send only Accept: application/json when connecting to HTTP MCP servers. The VWO server (and likely any server that strictly implements the MCP Streamable HTTP transport spec) rejects this with:

\\\
HTTP 406
{"jsonrpc":"2.0","id":"server-error","error":{"code":-32600,"message":"Not Acceptable: Client must accept both application/json and text/event-stream"}}
\
\\

Manually sending the correct Accept header works:

\\\`bash
curl -X POST "https://mcp.vwo.io/mcp?key=..." \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'

→ 200 OK, returns initialize result + full tools list correctly

\\\`

Without text/event-stream in Accept:

\\\`bash
curl -X POST "https://mcp.vwo.io/mcp?key=..." \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '...'

→ 406, "Not Acceptable: Client must accept both application/json and text/event-stream"

\\\`

Other HTTP MCP servers (Sanity, Vercel) are more lenient and work fine, which is why this issue only surfaces with strict servers.

Expected Behavior

Claude Code's HTTP MCP client should include Accept: application/json, text/event-stream in all HTTP MCP requests, per the MCP Streamable HTTP transport specification.

Actual Behavior

HTTP MCP servers that enforce the full Accept header per spec fail silently and never appear in the MCP server list.

View original on GitHub ↗

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