Define and document the public Python SDK API surface
@felixweinberger ya está trabajando en esto.
Desde el 16/1/2026.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Description
Summary
The Python SDK exposes a variety of classes and functions across packages and submodules. Some are clearly meant to be public, others are internal but not marked as such. Tests and user code sometimes rely on internals (e.g. private attributes).
This makes it hard for users to know what is safe to depend on and hard for maintainers to evolve internals without risking breakage.
Problems
- Ambiguous boundaries: It’s not always clear which symbols in
mcp.*and subpackages are part of the supported public API. - Private attribute usage: Some tests/examples access internal attributes (e.g.
_mcp_server), which blurs the line between public and internal. - Versioning risk: Changes to internal structures can accidentally turn into breaking changes for users who imported them directly.
Proposal
-
Define an explicit public API
- Use
__all__and/or amcp.public(or similar) module to list what is considered stable public API. - Document the intended public surface in the README or a dedicated “API Reference”.
- Use
-
Mark internals clearly
- Move clearly internal modules into an
_internalsubpackage where possible. - Use leading underscores and documentation to indicate non-public attributes.
- Move clearly internal modules into an
-
Gradual tightening
- Update examples and tests to use only public APIs where feasible.
- Where users are expected to interact with lower-level constructs, expose them via documented, stable paths.
Why this matters
- Stability: Users can rely on documented APIs without fear of accidental breakage.
- Refactorability: Internal changes become safer when the public surface is well-defined.
- Onboarding: New users can quickly see which APIs are meant for them.
Acceptance criteria
- A documented list of public, supported APIs for the Python SDK.
- Internal modules/types are clearly marked (e.g.,
_internalpackages) where appropriate. - Examples and tests avoid relying on private attributes when a public alternative exists.
- Future changes can be evaluated against this public surface for compatibility.
References
No response
- Lenguaje dominante
- Python
- Estrellas
- 24.3k
- Forks
- 4k
- Merge medio
- 1 d 19 min
- PR fusionados (30 d)
- 29
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de modelcontextprotocol/python-sdk
-
Streamable HTTP client logs a WARNING for valid 202 Accepted on session termination (DELETE) Abiertov1 v2
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
modelcontextprotocol/python-sdk#3546 · 5 comentarios ·
-
v1 v2
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
modelcontextprotocol/python-sdk#3545 · 1 comentario ·
-
v1 v2
Dificultad 1/5 Menos de una hora Aptitud para principiantes 91/100
modelcontextprotocol/python-sdk#3508 · 2 comentarios ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
modelcontextprotocol/python-sdk#3504 ·
-
v1 v2
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
modelcontextprotocol/python-sdk#3492 · 1 comentario ·
Todos los issues de modelcontextprotocol/python-sdk
Issues similares
-
fix: inaccuracy ⚠️
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
uabrc/uabrc.github.io#1255 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
ethereum-optimism/factory#64 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
duckdb/duckdb-python#627 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
-
Add link for tutorial Abiertodocumentation
Dificultad 1/5 Menos de una hora Aptitud para principiantes 78/100
Qiskit/qiskit-addon-sqd#376 ·