modelcontextprotocol / modelcontextprotocol/python-sdk

Define and document the public Python SDK API surface

Đang mở
#1,701 4 bình luận 2 reaction 1 người được giao Xem trên GitHub

@felixweinberger đang làm issue này rồi.

Từ ngày 16/1/2026.

breaking change enhancement P1 ready for work v2
Ngôn ngữ chính
Python
Star
24.3k
Fork
4k
Merge trung bình
1 ngày 1 giờ
Pull request đã merge (30 ngày)
31

Mô tả

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

  1. Define an explicit public API

    • Use __all__ and/or a mcp.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”.
  2. Mark internals clearly

    • Move clearly internal modules into an _internal subpackage where possible.
    • Use leading underscores and documentation to indicate non-public attributes.
  3. 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., _internal packages) 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

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.