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.

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 this rule

The validator makes real protocol requests and reports this rule as pass, warn or fail alongside the other 78. Validate a server or read how the check works.

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