Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

SchemaValidator rejects nested empty JSON objects as arrays

Ouverte
#586 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

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
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Active
Stack technique
php
Domaine
backend

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

bug

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

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de modelcontextprotocol/php-sdk

Toutes les issues de modelcontextprotocol/php-sdk

Issues similaires

Plus d'issues PHP

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.