SchemaValidator rejects nested empty JSON objects as arrays
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- Une demi-journée
- Accessibilité débutants
- 60/100
Piste de recherche
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.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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.
- Langage dominant
- PHP
- Étoiles
- 1.6k
- Forks
- 177
- Merge moyen
- 2 j 16 h
- PR mergées (30 j)
- 36
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de modelcontextprotocol/php-sdk
-
[Server] Handler type uses bare Closure, hard to decorate RegistryInterface under strict PHPStanOuverteServer
Difficulté 1/5 Moins d'une heure Accessibilité débutants 78/100
modelcontextprotocol/php-sdk#468 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Builder::build() silently skips configured file-based discovery when symfony/finder is missing — should fail loudlyPeut-être pris @ousamabenyounes l’a pris il y a 54 jours. Ouverteneeds confirmation needs maintainer action Server
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
modelcontextprotocol/php-sdk#398 · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
modelcontextprotocol/php-sdk#370 ·
Les mainteneurs répondent en général sous 1 jour
-
enhancement
Difficulté 4/5 3-5 jours Accessibilité débutants 52/100
modelcontextprotocol/php-sdk#587 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 18/100
modelcontextprotocol/php-sdk#583 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de modelcontextprotocol/php-sdk
Issues similaires
-
sync-en
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Les mainteneurs répondent en général sous 1 jour
-
sync-en
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 4 jours
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
ProfessionalWiki/NeoWiki#1637 ·
Les mainteneurs répondent en général sous 1 jour
-
Перевод устарел
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
-
bug
Difficulté 2/5 Une demi-journée Accessibilité débutants 76/100
m3ue/m3u-editor#1604 ·
Les mainteneurs répondent en général sous 1 jour