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
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"}}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