Priority
P1 — shared-service availability and memory safety.
Problem
The shared HTTP MCP server accepts and handles one connection synchronously before accepting the next. Request parsing has no read/write deadline, request-line limit, aggregate header limit, or body-size limit, and allocates a buffer directly from Content-Length.
A single client that sends an incomplete request can therefore block the endpoint indefinitely. A large numeric Content-Length can force an arbitrary allocation before request validation.
Evidence
Reproduction
- Start
decided-mcp --transport http.
- Open one TCP connection and send only a partial request line or headers.
- Leave that connection open.
- Observe that subsequent clients are not accepted or served.
Alternatively, supply an extremely large valid Content-Length and observe allocation is attempted before any configured body cap.
Acceptance criteria
Priority
P1 — shared-service availability and memory safety.
Problem
The shared HTTP MCP server accepts and handles one connection synchronously before accepting the next. Request parsing has no read/write deadline, request-line limit, aggregate header limit, or body-size limit, and allocates a buffer directly from
Content-Length.A single client that sends an incomplete request can therefore block the endpoint indefinitely. A large numeric
Content-Lengthcan force an arbitrary allocation before request validation.Evidence
Reproduction
decided-mcp --transport http.Alternatively, supply an extremely large valid
Content-Lengthand observe allocation is attempted before any configured body cap.Acceptance criteria