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//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