Problem
In mcp/streamable.go around line 376, when io.ReadAll(req.Body) fails during stateless mode initialization, the handler returns http.StatusInternalServerError (500).
However, body read failures are almost always caused by client-side issues:
- Client disconnected before sending full body
- Network timeout/interruption
- Connection reset
Returning 500 is misleading because it suggests a server error when the issue is on the client side.
Expected Behavior
Return http.StatusBadRequest (400) instead, consistent with the similar check in servePOST which already returns 400.
Impact
Users monitoring their MCP servers see 500 errors in telemetry that appear to be server bugs, when they're actually client disconnections. This causes unnecessary investigation and alert fatigue.