Empty cacheScope on tools/list drops every tool
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- rust
- Área
- backend-api-design
Línea de trabajo
Comienza con la deserialización de serde para cacheScope en los tipos de resultado de tools/list y resources/read y, después, reproduce el JSON proporcionado como una prueba específica. Se considera terminado cuando una cadena exactamente vacía se trata igual que un campo omitido, las tools siguen disponibles y valores como "shared" o " " siguen fallando.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Describe the bug
Some hosted MCP servers send cacheScope: "" on tools/list and resources/read results. SEP-2549 only allows "public", "private", or omitting the field, so serde rejects the empty string. Because ServerResult is an untagged enum, that failure does not stay on ListToolsResult. The payload falls through to CustomResult, and the client ends up with no tools.
Negative ttlMs is already normalized. Empty cacheScope is not.
To Reproduce
Deserialize a valid tools/list result that includes an empty cache scope:
{
"tools": [{ "name": "search", "inputSchema": { "type": "object" } }],
"ttlMs": 0,
"cacheScope": ""
}
On current main this does not parse as ListToolsResult.
Expected behavior
Treat an exact empty cacheScope the same as an omitted field (None). Unknown values such as "shared" or " " should still fail.
Additional context
I hit this against a hosted server that emits cacheScope: "" on an otherwise valid tools/list body. The tools were present on the wire and disappeared after decode.
- Lenguaje dominante
- Rust
- Estrellas
- 3.9k
- Forks
- 645
- Merge medio
- 4 d 22 h
- PR fusionados (30 d)
- 37
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/rust-sdk
-
streamable-http server: a supplied Mcp-Method contradicting an initialize body is silently accepted Abiertobug P1 ready for work T-transport
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
modelcontextprotocol/rust-sdk#1271 ·
-
P3 question T-documentation T-enhancement
Dificultad 1/5 Menos de una hora Aptitud para principiantes 86/100
modelcontextprotocol/rust-sdk#1155 ·
-
bug P1 ready for work T-model T-service
Dificultad 3/5 1-2 días Aptitud para principiantes 72/100
modelcontextprotocol/rust-sdk#1283 · 1 comentario ·
-
bug P0 ready for work T-security T-transport
modelcontextprotocol/rust-sdk#1272 · 1 asignado ·
-
bug P1 ready for work T-security T-transport
modelcontextprotocol/rust-sdk#1268 · 1 reacción · 1 asignado ·
Todos los issues de modelcontextprotocol/rust-sdk
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
TheLarkInn/aipm#2413 ·
-
documentation
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
alexgorbatchev/simple-ptt#15 ·
-
tooling
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
todo:ticket
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
taikoxyz/taiko-mono#22168 · 1 comentario ·