modelcontextprotocol / modelcontextprotocol/python-sdk
Inline $ref in tool inputSchema for LLM consumption (parity with typescript-sdk)
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 24.3k
- Forks
- 4k
- Merge moyen
- 1 j 1 h
- PR mergées (30 j)
- 31
Description
tools/base.py:76 uses raw model_json_schema() which emits $ref/$defs for nested Pydantic models. LLM clients consuming tools/list often can't resolve $ref, leading to params being passed as stringified JSON instead of structured objects.
Repro / demand: anthropics/claude-code#18260 (Notion MCP server, $ref params get stringified by the model).
typescript-sdk addresses this in modelcontextprotocol/typescript-sdk#1563 by adding a dereferenceLocalRefs() step that inlines local $ref and throws on cycles (matching go-sdk precedent). Python should do the equivalent in the tool schema pipeline so all SDKs emit LLM-consumable schemas.
Relevant file: src/mcp/server/mcpserver/tools/base.py:76
Guide de contribution
Ouvrir 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.
Piste de recherche
Commencez à src/mcp/server/mcpserver/tools/base.py:76, où model_json_schema() alimente le pipeline des schémas d’outils. Comparez l’approche dereferenceLocalRefs du SDK TypeScript avec le précédent indiqué du SDK Go. C’est terminé lorsque les $ref/$defs locaux sont intégrés aux schémas d’outils et que les cycles produisent une erreur.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- api
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- Calme
- Clarté
- Plutôt claire
- Accessibilité débutants
- 68/100