[Schema] SEP-2106: Support JSON Schema 2020-12 vocabulary in SchemaGenerator (oneOf/anyOf/allOf/if-then-else/$ref)

Offen
#356 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Anfängerfreundlichkeit
35/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Ruhig
Tech-Stack
php

Rechercherichtung

Beginne mit dem übergeordneten Issue #337 und SEP-2106 und untersuche anschließend src/Capability/Discovery/SchemaGenerator.php und SchemaValidator.php sowie das #[Schema]-Attribut und die hier erwähnten Reflection-/DocBlock-Pfade. Bilde den bestehenden einfachen Schema-Ablauf ab, bevor du bewertest, wie Komposition, Bedingungen, Referenzen und Union-Typen sichtbar gemacht und validiert werden sollten. Als abgeschlossen gilt die Unterstützung des aufgeführten JSON-Schema-2020-12-Vokabulars über diese Pfade hinweg, ohne die Standardwerte für same-document $ref abzuschwächen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

2026-07-28 enhancement improves spec compliance needs design Schema

Implements the vocabulary portion of SEP-2106 for the MCP Spec 2026-07-28 release.

Tracked by umbrella #337.

Spec summary

inputSchema keeps type: "object" required but accepts any JSON Schema 2020-12 vocabulary (oneOf/anyOf/allOf/not, if/then/else, $ref/$defs/$anchor).

PHP SDK changes

  • src/Capability/Discovery/SchemaGenerator.php and SchemaValidator.php need to emit/validate full JSON Schema 2020-12 composition, conditionals, $ref (same-document only by default).
  • #[Schema] attribute should accept composition keywords.
  • Reflection/DocBlock paths today produce simple {type, properties} only — extend to surface union types as oneOf/anyOf.

Related

  • Umbrella #337
  • Companion sub-issues: non-object outputSchema, $ref hardening
Vorherrschende Sprache
PHP
Sterne
1.6k
Forks
173
Ø Merge
2 T. 49 Min.
Gemergte PRs (30 T.)
23

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus modelcontextprotocol/php-sdk

Alle Issues in modelcontextprotocol/php-sdk

Ähnliche Issues

Weitere Issues zu PHP

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.