createmcps.com

MCP-RES-005

Response is application/json or text/event-stream; SSE terminates with the final response

“The server MUST return either Content-Type: application/json (a single JSON object) or Content-Type: text/event-stream (an SSE response stream).” — spec anchor

How to fix this

Set `Content-Type` to either `application/json` for a single JSON object or `text/event-stream` for a stream. An SSE stream ends with the final response.

Example: failing and passing

The server answers a JSON-RPC request with Content-Type text/plain.
Violates MCP-RES-005 · HTTP
POST /mcp HTTP/1.1
Host: mcp.example.com
Content-Type: application/json
Accept: application/json, text/event-stream
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/list

{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {"_meta": {
  "io.modelcontextprotocol/protocolVersion": "2026-07-28",
  "io.modelcontextprotocol/clientCapabilities": {}}}}

HTTP/1.1 200 OK
Content-Type: text/plain

{"jsonrpc": "2.0", "id": 1, "result": {"resultType": "complete", "tools": [], "ttlMs": 300000, "cacheScope": "public"}}
The server answers with Content-Type application/json and a single JSON object.
Complies with MCP-RES-005 · HTTP
POST /mcp HTTP/1.1
Host: mcp.example.com
Content-Type: application/json
Accept: application/json, text/event-stream
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/list

{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {"_meta": {
  "io.modelcontextprotocol/protocolVersion": "2026-07-28",
  "io.modelcontextprotocol/clientCapabilities": {}}}}

HTTP/1.1 200 OK
Content-Type: application/json

{"jsonrpc": "2.0", "id": 1, "result": {"resultType": "complete", "tools": [], "ttlMs": 300000, "cacheScope": "public"}}

How the validator checks this

Probe P1.1, against a streamable-http server on the modern protocol. What it reports:

pass
Every list response used application/json or text/event-stream
fail
Content-Type must be application/json or text/event-stream — got

Quoted from the probe that runs this check, so it cannot drift from what the validator actually reports.

This rule is checked deterministically: a fail here is a certain violation, not an inference.

Checked in the same request as MCP-DSC-001, MCP-DSC-002, MCP-DSC-003, MCP-DSC-004, MCP-DSC-005, MCP-STL-003, MCP-RES-001, MCP-RES-002.

Check your own server against MCP-RES-005

Probe P1.1 checks MCP-RES-005 in the same request as 8 other rules, so one run shows your server's result for this rule next to the rest. Validate a server or read how the validator works.

Background on this topic: the 2026-07-28 migration guide.

Other Result and message shape rules

  • MCP-RES-001Every result includes resultType
  • MCP-RES-002resultType is a value defined by core or an advertised extension
  • MCP-RES-003Server sends no independent JSON-RPC requests on a response stream
  • MCP-RES-004Accepted notification POST returns 202 with no body
  • MCP-RES-006SSE responses set X-Accel-Buffering: no
  • MCP-RES-007tools/list returns a deterministic order