site_name: MCP Python SDK site_description: The official Python SDK for the Model Context Protocol strict: true repo_name: modelcontextprotocol/python-sdk repo_url: https://github.com/modelcontextprotocol/python-sdk edit_uri: edit/main/docs/ site_url: https://py.sdk.modelcontextprotocol.io/v2/ # TODO(Marcelo): Add Anthropic copyright? # copyright: © Model Context Protocol 2025 to present nav: - MCP Python SDK: index.md - Installation: installation.md - Tutorial - User Guide: - tutorial/index.md - First steps: tutorial/first-steps.md - Tools: tutorial/tools.md - Structured Output: tutorial/structured-output.md - Resources: tutorial/resources.md - Prompts: tutorial/prompts.md - The Context: tutorial/context.md - Dependencies: tutorial/dependencies.md - Handling errors: tutorial/handling-errors.md - Lifespan: tutorial/lifespan.md - Media: tutorial/media.md - Completions: tutorial/completions.md - Elicitation: tutorial/elicitation.md - Progress: tutorial/progress.md - Logging: tutorial/logging.md - Testing: tutorial/testing.md - Running your server: - run/index.md - ASGI: run/asgi.md - The Client: - client/index.md - Client callbacks: client/callbacks.md - Client transports: client/transports.md - Protocol versions: client/protocol-versions.md - Advanced: - Multi-round-trip requests: advanced/multi-round-trip.md - The low-level Server: advanced/low-level-server.md - URI templates: advanced/uri-templates.md - Pagination: advanced/pagination.md - Caching hints: advanced/caching.md - Subscriptions: advanced/subscriptions.md - Middleware: advanced/middleware.md - Extensions: advanced/extensions.md - MCP Apps: advanced/apps.md - OpenTelemetry: advanced/opentelemetry.md - Authorization: advanced/authorization.md - OAuth clients: advanced/oauth-clients.md - Identity assertion: advanced/identity-assertion.md - Session groups: advanced/session-groups.md - Deprecated features: advanced/deprecated.md - Migration Guide: migration.md - API Reference: api/ theme: name: "material" palette: - media: "(prefers-color-scheme)" scheme: default primary: black accent: black toggle: icon: material/lightbulb name: "Switch to light mode" - media: "(prefers-color-scheme: light)" scheme: default primary: black accent: black toggle: icon: material/lightbulb-outline name: "Switch to dark mode" - media: "(prefers-color-scheme: dark)" scheme: slate primary: white accent: white toggle: icon: material/lightbulb-auto-outline name: "Switch to system preference" features: - search.suggest - search.highlight - content.tabs.link - content.code.annotate - content.code.copy - content.code.select - navigation.path - navigation.indexes - navigation.sections - navigation.tracking - toc.follow # logo: "img/logo-white.svg" # TODO(Marcelo): Add a favicon. # favicon: "favicon.ico" # https://www.mkdocs.org/user-guide/configuration/#validation validation: omitted_files: warn absolute_links: warn unrecognized_links: warn anchors: warn markdown_extensions: - tables - admonition - attr_list - md_in_html - pymdownx.details - pymdownx.caret - pymdownx.critic - pymdownx.mark - pymdownx.superfences # Code examples live as complete, importable, tested files under `docs_src/` # and are included into pages with `--8<-- "docs_src//tutorialNNN.py"` # (resolved against the repo root regardless of the build's working # directory; the extension's default base_path is the CWD). # `check_paths: true` + `strict: true` turn a renamed/deleted example into a # build failure instead of a silently empty code block. - pymdownx.snippets: base_path: !relative $config_dir check_paths: true - pymdownx.tilde - pymdownx.inlinehilite - pymdownx.highlight: pygments_lang_class: true - pymdownx.extra: pymdownx.superfences: custom_fences: - name: mermaid class: mermaid format: !!python/name:pymdownx.superfences.fence_code_format - pymdownx.emoji: emoji_index: !!python/name:material.extensions.emoji.twemoji emoji_generator: !!python/name:material.extensions.emoji.to_svg options: custom_icons: - docs/.overrides/.icons - pymdownx.tabbed: alternate_style: true - pymdownx.tasklist: custom_checkbox: true - sane_lists # this means you can start a list from any number watch: - src - docs_src hooks: - docs/hooks/llms_txt.py plugins: - search - social: enabled: !ENV [ENABLE_SOCIAL_CARDS, false] - glightbox - gen-files: scripts: - docs/hooks/gen_ref_pages.py - literate-nav: nav_file: SUMMARY.md - mkdocstrings: handlers: python: paths: [src, src/mcp-types] options: relative_crossrefs: true members_order: source separate_signature: true show_signature_annotations: true signature_crossrefs: true group_by_category: false inventories: - url: https://docs.python.org/3/objects.inv - url: https://docs.pydantic.dev/latest/objects.inv - url: https://typing-extensions.readthedocs.io/en/latest/objects.inv