createmcps.com

MCP-RES-006

SSE responses set X-Accel-Buffering: no

“When initiating an SSE stream, servers SHOULD include the X-Accel-Buffering: no header in the HTTP response.” — spec anchor

How to fix this

Add `X-Accel-Buffering: no` to SSE responses. nginx buffers proxied responses by default, which holds the stream open with nothing delivered and is indistinguishable from a hung server.

Example: failing and passing

The SSE response has no X-Accel-Buffering: no header, so a buffering proxy such as nginx can hold events back.
Violates MCP-RES-006 · HTTP
POST /mcp HTTP/1.1
Mcp-Method: tools/list
...

HTTP/1.1 200 OK
Content-Type: text/event-stream

data: {"jsonrpc": "2.0", "id": 1, "result": {"resultType": "complete", "tools": [], "ttlMs": 300000, "cacheScope": "public"}}
The SSE response sets X-Accel-Buffering: no so proxies deliver events immediately.
Complies with MCP-RES-006 · HTTP
POST /mcp HTTP/1.1
Mcp-Method: tools/list
...

HTTP/1.1 200 OK
Content-Type: text/event-stream
X-Accel-Buffering: no

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

How the validator checks this

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

pass
SSE responses set X-Accel-Buffering: no
warn
SSE response without X-Accel-Buffering: no (…) — nginx buffers proxied responses by default, which holds the stream and looks like the server hanging

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-HDR-008, MCP-HDR-009, MCP-RES-003, MCP-RES-007, MCP-ERR-003, MCP-ERR-004, MCP-ERR-005, MCP-ERR-008, MCP-CAC-001, MCP-CAC-002, MCP-CAC-003, MCP-CAC-004, MCP-CAC-005, MCP-SCH-001, MCP-SCH-002, MCP-SCH-003, MCP-SCH-004, MCP-SCH-005, MCP-SCH-006, MCP-SCH-007, MCP-SEC-004, MCP-SEC-005, MCP-SEC-006, MCP-DEP-005.

Check your own server against MCP-RES-006

Probe P2.1 checks MCP-RES-006 in the same request as 24 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-005Response is application/json or text/event-stream; SSE terminates with the final response
  • MCP-RES-007tools/list returns a deterministic order