SchemaValidator rejects nested empty JSON objects as arrays
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- Mezza giornata
- Idoneità per principianti
- 60/100
Direzione di ricerca
Start in the SchemaValidator class at its validateAgainstJsonSchema method, and find where it converts an empty root value to stdClass. Run the reproduction from the issue, which decodes '{"parameters":{}}' with the parameters property typed as object, and confirm the nested empty array is rejected. Done means the nested empty value is cast to stdClass when the schema says object, with a regression test for that case and the existing root-level behaviour still passing.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Describe the bug
Nested empty objects in tool arguments are rejected as arrays.
To Reproduce
use Mcp\Capability\Discovery\SchemaValidator;
$data = json_decode(
'{"parameters":{}}',
true,
flags: JSON_THROW_ON_ERROR,
);
$schema = [
'type' => 'object',
'properties' => [
'parameters' => ['type' => 'object'],
],
];
// Invalid type. Expected `object`, but received `array`.
var_dump((new SchemaValidator())->validateAgainstJsonSchema($data, $schema));
Expected behavior
No validation errors. The original JSON value is an object.
Additional context
json_decode($foo, true) converts both {} and [] to an empty PHP array. The SchemaValidator converts an empty root value to stdClass, but nested empty values remain arrays. The empty arrays should probably be converted recursively according to the schema.
- Lingua principale
- PHP
- Stelle
- 1.6k
- Fork
- 180
- Merge medio
- 2g 16h
- PR unite (30g)
- 36
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di modelcontextprotocol/php-sdk
-
[Server] Handler type uses bare Closure, hard to decorate RegistryInterface under strict PHPStanApertaServer
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
modelcontextprotocol/php-sdk#468 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Builder::build() silently skips configured file-based discovery when symfony/finder is missing — should fail loudlyForse già presa @ousamabenyounes l’ha presa 56 giorni fa. Apertaneeds confirmation needs maintainer action Server
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
modelcontextprotocol/php-sdk#398 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
modelcontextprotocol/php-sdk#370 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
modelcontextprotocol/php-sdk#587 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 18/100
modelcontextprotocol/php-sdk#583 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di modelcontextprotocol/php-sdk
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
-
cloning objets from planningAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
glpi-project/glpi#25922 ·
I maintainer di solito rispondono entro 1 giorno
-
Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
Automattic/safe-publish#726 ·
I maintainer di solito rispondono entro 1 giorno
-
Translation TwigBridge
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
symfony/symfony-docs#23308 ·
I maintainer di solito rispondono entro 3 giorni
-
sync-en
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno