modelcontextprotocol / modelcontextprotocol/python-sdk

Prompt validation errors are logged with an unnecessary traceback

Ouverte Adaptée aux débutants
#3,342 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

v1 v2
Langage dominant
Python
Étoiles
24.3k
Forks
4k
Merge moyen
1 j 1 h
PR mergées (30 j)
31

Description

Initial Checks
Release line

2.x (current stable)

Description

Description

When a prompt is called without a required argument, the request is correctly rejected, but the Python SDK logs the validation error with a full traceback.

To Reproduce

Steps to reproduce the behavior:

  1. Create a prompt with a required argument:

    @mcp.prompt()
    def diagnose_cluster(problem: str) -> str:
        return f"Diagnose: {problem}"
    
  2. Call prompts/list and confirm that problem is marked as required.

  3. Call prompts/get without providing the required argument:

    {
      "method": "prompts/get",
      "params": {
        "name": "diagnose_cluster"
      }
    }
    
  4. The request is rejected, but the server logs a full traceback:

    Error getting prompt diagnose_cluster
    Traceback (most recent call last):
      ...
      File ".../mcp/server/mcpserver/server.py", line 1285, in get_prompt
        rendered = await prompt.render(arguments, context)
      File ".../mcp/server/mcpserver/prompts/base.py", line 160, in render
        raise ValueError(f"Missing required arguments: {missing}")
    ValueError: Missing required arguments: {'problem'}
    
    handler for 'prompts/get' raised
    
Example Code

Python & MCP Python SDK
## Environment

- MCP Python SDK: v2
- Python: 3.x
- Server: `MCPServer`
- Prompt transport: Streamable HTTP

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 par get_prompt dans mcp/server/mcpserver/server.py et suivez son appel à render dans mcp/server/mcpserver/prompts/base.py. Reproduisez prompts/get pour diagnose_cluster sans l’argument problem requis, puis examinez comment l’erreur de validation est journalisée. C’est terminé lorsque la requête reste rejetée et que l’erreur de validation attendue est journalisée sans traceback complet.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
api, backend
Type d'issue
Bug
Difficulté
2/5
Temps estimé
1-3 heures
Activité
Calme
Clarté
Plutôt claire
Accessibilité débutants
72/100

Recevez les nouvelles issues par e-mail

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