bug: a request sent before initialize is answered with JSON-RPC error code 0 instead of -32600
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 82/100
Línea de trabajo
Empieza con el programa mínimo del issue: ejecuta un servidor sobre IOTransport, envía tools/list antes de initialize y confirma que la respuesta contiene code: 0. Encuentra el lugar donde se construye el error 'invalid during session initialization' y comprueba qué código asigna. Está listo cuando esa ruta devuelve -32600 y el texto del mensaje no cambia, con una prueba que verifique el código.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
A request sent before initialize is answered with a JSON-RPC error whose code is 0. 0 is not a JSON-RPC 2.0 error code; the spec requires -32600 (Invalid Request) for a request that cannot be served.
Version
github.com/modelcontextprotocol/go-sdk v1.8.0 (also observed on main).
Reproduction
Run a server over a raw stdio transport (IOTransport) and, before sending initialize, send:
{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}
Observed response:
{"jsonrpc":"2.0","id":1,"error":{"code":0,"message":"method \"tools/list\" is invalid during session initialization"}}
Expected response (JSON-RPC 2.0):
{"jsonrpc":"2.0","id":1,"error":{"code":-32600,"message":"method \"tools/list\" is invalid during session initialization"}}
The message text is correct; only the code is wrong.
Minimal program
srv := mcp.NewServer(&mcp.Implementation{Name: "t", Version: "0"}, nil)
c2s, serverIn := io.Pipe()
serverOut, cFromS := io.Pipe()
go func() { _ = srv.Run(ctx, &mcp.IOTransport{Reader: c2s, Writer: cFromS}) }()
fmt.Fprintln(serverIn, `{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}`)
// read the first line of serverOut
Notes
pingis correctly allowed beforeinitialize.0is especially awkward for clients: it is indistinguishable from "no code set" and is not one of the standard codes (-32700,-32600,-32601,-32602,-32603).
Impact
Consumers must wrap the transport to rewrite code: 0 to -32600 before forwarding to clients. We do exactly that in ai-rulez (internal/mcp GuardLifecycle) and would like to delete the workaround once the SDK answers with -32600 itself.
- Lenguaje dominante
- Go
- Estrellas
- 5.2k
- Forks
- 594
- Merge medio
- 1 d 19 h
- PR fusionados (30 d)
- 63
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 75/100
modelcontextprotocol/go-sdk#1444 · 2 comentarios ·
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 59 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 224 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
-
mcp: notifications and interrupted calls lose ErrConnectionClosedPosiblemente ocupada @Jackmeson1 la tomó hace 1 día. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 30/100
modelcontextprotocol/go-sdk#1448 ·
Los mantenedores suelen responder en 1 día
-
mcp: LoggingHandler drops records logged at custom slog levelsPosiblemente ocupada @kaankucukx la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 45/100
modelcontextprotocol/go-sdk#1445 ·
Los mantenedores suelen responder en 1 día
Todos los issues de modelcontextprotocol/go-sdk
Issues similares
-
fix(handlers): explicitly set Content-Type header in static Index handlerPosiblemente ocupada @kage-zero la tomó hoy. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
Los mantenedores suelen responder en 1 día
-
Quick Open: restore dependency-directory exclusions in filesystem fallbackPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
eugenioenko/ttt#1206 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
open-policy-agent/opa#9426 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
rorkai/App-Store-Connect-CLI#3192 ·
Los mantenedores suelen responder en 1 día
-
t:urlDecodeUni does not map U+3002 and U+FF61 to a dot, unlike ModSecurityPosiblemente ocupada @fzipi la tomó hoy. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día