createmcps.com

MCP-RES-003

Server sends no independent JSON-RPC requests on a response stream

The server MUST NOT send independent JSON-RPC requests on this stream.spec anchor

How to fix this

Send only responses on a response stream. To ask the client for something, return an `input_required` result carrying `inputRequests` and let the client retry — that is what replaced server-initiated requests.

How the validator checks this

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

pass
No server-initiated JSON-RPC request appeared on the … response stream… observed
fail
The response stream carried server-initiated JSON-RPC request(s): …. A response stream must carry responses only.
skip
No text/event-stream response was returned in this run, so there was no response stream to inspect

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-006, 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-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-006SSE responses set X-Accel-Buffering: no
  • MCP-RES-007tools/list returns a deterministic order