site_name: MCP Python SDK
site_description: The official Python SDK for the Model Context Protocol

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

# The "API Reference" entry is a placeholder: `scripts/docs/gen_ref_pages.py`
# generates the `docs/api/` tree and `scripts/docs/build_config.py` splices the
# real nested nav in before the build. See `scripts/docs/build.sh`.
nav:
  - MCP Python SDK: index.md
  - "What's new in v2": whats-new.md
  - Get started:
      - get-started/index.md
      - Installation: get-started/installation.md
      - First steps: get-started/first-steps.md
      - Connect to a real host: get-started/real-host.md
      - Testing: get-started/testing.md
  - Servers:
      - servers/index.md
      - Tools: servers/tools.md
      - Structured Output: servers/structured-output.md
      - Resources: servers/resources.md
      - URI templates: servers/uri-templates.md
      - Prompts: servers/prompts.md
      - Completions: servers/completions.md
      - "Images, audio & icons": servers/media.md
      - Handling errors: servers/handling-errors.md
  - Inside your handler:
      - handlers/index.md
      - The Context: handlers/context.md
      - Dependencies: handlers/dependencies.md
      - Lifespan: handlers/lifespan.md
      - Elicitation: handlers/elicitation.md
      - Multi-round-trip requests: handlers/multi-round-trip.md
      - Sampling and roots: handlers/sampling-and-roots.md
      - Progress: handlers/progress.md
      - Logging: handlers/logging.md
      - Subscriptions: handlers/subscriptions.md
  - Running your server:
      - run/index.md
      - Add to an existing app: run/asgi.md
      - Deploy & scale: run/deploy.md
      - Authorization: run/authorization.md
      - OpenTelemetry: run/opentelemetry.md
      - Serving legacy clients: run/legacy-clients.md
  - Clients:
      - client/index.md
      - Callbacks: client/callbacks.md
      - Transports: client/transports.md
      - OAuth: client/oauth-clients.md
      - Identity assertion: client/identity-assertion.md
      - Multiple servers: client/session-groups.md
      - Subscriptions: client/subscriptions.md
      - Caching: client/caching.md
  - Protocol versions: protocol-versions.md
  - Deprecated features: deprecated.md
  - Advanced:
      - advanced/index.md
      - The low-level Server: advanced/low-level-server.md
      - Pagination: advanced/pagination.md
      - Middleware: advanced/middleware.md
      - Extensions: advanced/extensions.md
      - MCP Apps: advanced/apps.md
  - Troubleshooting: troubleshooting.md
  - Migration Guide: migration.md
  - API Reference: api/

theme:
  name: "material"
  custom_dir: docs/.overrides
  font:
    text: Inter
    code: JetBrains Mono
  icon:
    logo: mcp
  favicon: favicon.svg
  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: black
      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.footer
    - navigation.indexes
    - navigation.instant
    - navigation.instant.prefetch
    - navigation.instant.progress
    - navigation.path
    - navigation.prune
    - navigation.sections
    - navigation.top
    - navigation.tracking
    - toc.follow

extra_css:
  - extra.css

markdown_extensions:
  - tables
  - abbr
  - admonition
  - attr_list
  - def_list
  - footnotes
  - md_in_html
  - pymdownx.betterem
  - pymdownx.details
  - pymdownx.caret
  - pymdownx.critic
  - pymdownx.mark
  # Code examples live as complete, importable, tested files under `docs_src/`
  # and are included into pages with `--8<-- "docs_src/<chapter>/tutorialNNN.py"`
  # (resolved against the repo root, which is the build's working directory).
  # `check_paths: true` turns a renamed/deleted example into a build failure
  # instead of a silently empty code block.
  - pymdownx.snippets:
      base_path: [.]
      check_paths: true
  - pymdownx.tilde
  - pymdownx.inlinehilite
  - pymdownx.highlight:
      pygments_lang_class: true
  - pymdownx.superfences:
      custom_fences:
        - name: mermaid
          class: mermaid
          format: pymdownx.superfences.fence_code_format
  # Zensical re-implements the emoji extension; the generator/index functions
  # live under `zensical.extensions.emoji`, not `material.extensions.emoji`.
  - pymdownx.emoji:
      emoji_index: zensical.extensions.emoji.twemoji
      emoji_generator: zensical.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

# Zensical natively watches these beyond docs/: page content is assembled
# from src/ (mkdocstrings) and docs_src/ (snippet includes), so serve
# live-reload must react to both.
watch:
  - src
  - docs_src

# Zensical natively re-implements `search`, `glightbox` and `mkdocstrings`; it
# does not run arbitrary MkDocs plugins or hooks. The former `gen-files`,
# `literate-nav` and `llms_txt` hook are handled by the standalone scripts
# under `scripts/docs/` (see scripts/docs/build.sh). The `social` plugin was
# dropped: Zensical has no social-card support, and the cards were gated on
# ENABLE_SOCIAL_CARDS, which no workflow ever set.
plugins:
  - search
  - glightbox
  - 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
