Answers, developer
This MCP server error means the client request did not include both application/json and text/event-stream in its Accept header. The HTTP+SSE transport for remote MCP servers requires both content types because the server can respond with either a JSON-RPC reply or a server-sent-event stream. Add both to your Accept header and the call succeeds. The error is on the client; the server is enforcing the protocol.
Related pillar: Model Context Protocol overview
The MCP HTTP+SSE transport spec requires the client to send `Accept: application/json, text/event-stream` on every request to the MCP server's HTTP endpoint. Either content type alone is rejected. The server uses content negotiation to decide whether to respond synchronously (JSON-RPC) or stream (SSE) based on the operation.
curl -H 'Accept: application/json, text/event-stream' -H 'Content-Type: application/json' -d '{...}' https://your-mcp-server/. Both Accept values, separated by a comma. That clears the Not Acceptable response and the MCP call goes through.
fetch(url, { method: 'POST', headers: { 'Accept': 'application/json, text/event-stream', 'Content-Type': 'application/json' }, body: JSON.stringify(payload) }). Same idea: list both Accept values.
If you're using the @modelcontextprotocol/sdk client (TypeScript) or mcp Python client, the SDK sets the correct headers automatically. The Not Acceptable error usually appears when you're hand-rolling an HTTP client to test the endpoint or when a proxy strips one of the Accept values.
MCP HTTP+SSE is bidirectional: the server may respond with a stream of events when a tool call takes time, or with a single JSON-RPC reply when it returns immediately. Without the SSE Accept value, the server cannot upgrade to a stream. Strict content negotiation prevents protocol confusion and keeps the SDK contract clean.
36+ read-only connectors. ChatGPT, Claude, and Perplexity. Solo $29.95 a month. 30-day free trial.