modelcontextprotocol / modelcontextprotocol/python-sdk
Improve exception tracebacks for easier debugging
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
Summary
Make exception tracebacks clearer and easier to understand by reducing asyncio/anyio wrapper noise.
Problem
- Exceptions are often wrapped in multiple layers of asyncio/anyio task group machinery
- Tracebacks are hard to read and don't clearly point to the root cause
- The
raise_exceptionflag is not consistently respected - Errors from deep inside task groups obscure the actual failure point
Goal
- Cleaner tracebacks that point to user code, not SDK internals
- Raise exceptions from the main context where possible
- Reduce nesting of exception wrappers
Related
- #743 - RuntimeError but the actual root cause is not logged correctly
- #396 - MCP Server: Inconsistent Exception Handling in @app.call_tool
- #1401 - ClientSession Error Handling
- #1742 - Introduce typed error classes with metadata
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
Aucun fichier ni test n’est identifié dans l’issue. Commencez par retracer les chemins des groupes de tâches asyncio/anyio et chaque utilisation du flag raise_exception, puis examinez les issues liées à la gestion des exceptions. Le travail sera considéré comme terminé lorsque les tracebacks exposeront l’échec au niveau utilisateur, que l’imbrication des wrappers sera réduite et que raise_exception sera respecté de manière cohérente.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- backend-api-design
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- Active
- Clarté
- À clarifier
- Accessibilité débutants
- 35/100