modelcontextprotocol / modelcontextprotocol/python-sdk

Inline $ref in tool inputSchema for LLM consumption (parity with typescript-sdk)

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

Personne n'a encore pris cette issue.

enhancement needs decision P2
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

  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.

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

Recevez les nouvelles issues par e-mail

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