mcp: rejected request IDs receive no JSON-RPC error envelope
Los mantenedores suelen responder en 1 día
@skosovsky ya está trabajando en esto.
Desde el 12/10/2026.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 68/100
Línea de trabajo
Start with the StreamableHTTPHandler and IO/stdio request decoding and read paths; the issue does not name specific files or tests. Reproduce the invalid-ID request on both transports, then inspect how each handles decoder rejection and frames errors. Done means both return an Invalid Request (-32600) envelope with id null, HTTP uses 400 and application/json, IO/stdio continues to the following valid request, and the rejected request is not dispatched.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
A syntactically valid, single JSON-RPC request with an ID rejected by the decoder does not receive a JSON-RPC error response:
{"jsonrpc":"2.0","id":true,"method":"ping"}
On upstream main d1a225e:
- Streamable HTTP returns HTTP 400 with a
text/plainbody beginningmalformed payload, rather than a JSON-RPC error envelope. - The IO/stdio transport returns
parse error: invalid ID type boolfromRead, writes no response, and does not deliver the subsequent valid request in that read call. The connection read loop treats this as a terminal read error.
The same behavior occurs for object and array IDs. These cases reproduce independently of the pending numeric-ID precision fixes.
Expected behavior
For a single request whose ID cannot be accepted, return a JSON-RPC Invalid Request error (-32600) with an explicit id: null. Over HTTP, use HTTP 400 and application/json. Over IO/stdio, write the error and continue reading subsequent valid messages. Do not dispatch the rejected request.
The response ID requirement comes from https://www.jsonrpc.org/specification#response_object. This report concerns structurally invalid IDs, not a new numeric range policy.
Reproduction
HTTP: POST the above body to a StreamableHTTPHandler with Content-Type application/json and Accept application/json, text/event-stream.
IO/stdio: feed the above JSON followed by a newline and {"jsonrpc":"2.0","id":7,"method":"ping"}. The current transport returns an error without writing a JSON-RPC response.
Regression tests reproduce both failures on the unmodified base. Repeating the invalid frame 1000 times before a valid request tests iterative recovery.
Related work and scope
- #1209 / #1210 concern syntactically malformed JSON and decoder resynchronization. Here JSON decoding succeeds, so that recovery machinery is unnecessary.
- #976 concerns other malformed request envelopes.
- #1375 / #1253 address exact numeric identity parsing. Once a numeric ID is rejected by those decoders, it needs the same error framing. This change can be reviewed independently and does not redefine numeric acceptance.
Legacy batch handling, invalid response handling, absent/null request IDs, and malformed JSON recovery are outside this narrowly scoped fix.
- Lenguaje dominante
- Go
- Estrellas
- 5.2k
- Forks
- 583
- Merge medio
- 1 d 12 h
- PR fusionados (30 d)
- 52
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de modelcontextprotocol/go-sdk
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
modelcontextprotocol/go-sdk#1372 ·
Los mantenedores suelen responder en 1 día
-
Session-lifecycle bookkeeping logs at info, spamming multiple log lines per request on stateless streamable HTTPPosiblemente ocupada @anneheartrecord la tomó hace 47 días. AbiertoP3
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
modelcontextprotocol/go-sdk#1204 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Expose generic `SendNotification` on `ServerSession` for custom protocol extensionsPosiblemente ocupada @ajuijas la tomó hace 213 días. Abiertoneeds investigation
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
modelcontextprotocol/go-sdk#745 · 13 comentarios · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
modelcontextprotocol/go-sdk#1394 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 25/100
modelcontextprotocol/go-sdk#1377 ·
Los mantenedores suelen responder en 1 día
Todos los issues de modelcontextprotocol/go-sdk
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
limitlessprojects/Go-Hybrid#50 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
vinyldns/go-vinyldns#106 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
praetorian-inc/augustus#334 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
ClickHouse/clickhouse-go#2066 ·
Los mantenedores suelen responder en 1 día