php-sdk/mkdocs.yml
Christopher Hertel 1e9520e731
[Docs] Deprecation policy, SDK tier target, and CONTRIBUTING.md (#472)
* [Docs] Add deprecation policy doc (SEP-2596)

Formalizes the Active -> Deprecated -> Removed lifecycle and the
twelve-month deprecation window the SDK already applies via SEP-2577,
and states the SDK's own BC promise ahead of 1.0.

* [Docs] Add SDK Tier 2 gap analysis (SEP-1730)

* [Docs] Wire deprecation policy and SDK tier docs into the guide nav

Adds both pages under a new Project section in mkdocs.yml, links them
from index.md's "Where to go next", and points their repo-root
references at GitHub URLs instead of paths escaping docs/ (dead under
Zensical's --strict build).

* [Docs] Add CONTRIBUTING.md

Root-level contribution guide: dev setup, the make ci checks to run
before a PR, coding standards, testing expectations, the docs-guide
link-resolution rule Zensical enforces, and licensing terms. Linked
from README's existing Contributing section.

* [Docs] Trim deprecation policy per review

Drop the worked SEP-2577 example and the "relationship to the
protocol lifecycle" section; both were redundant restating of detail
that lives in the code/CHANGELOG and protocol-versions.md already.

* [Docs] Cite the Tier 3 audit and add a versioning policy (SEP-1730)

Replace our own hand-rolled conformance numbers with the authoritative
audit in modelcontextprotocol/modelcontextprotocol#3274: SDK is
currently Tier 3, blocked from Tier 2 by client OAuth conformance
(20%) and no stable 1.0.0+ release. Add the Versioning section the
audit found missing — SemVer commitment pre-1.0, Symfony's BC promise
after — and point CONTRIBUTING.md at it.

* [Docs] Link Symfony's BC promise from the deprecation policy

Was plain text; sdk-tier.md's Versioning section already links it.

* [Docs] Drop the "process gaps addressed" aside from sdk-tier.md

* Apply suggestion from @chr-hertel

* Apply suggestion from @chr-hertel
2026-08-24 01:23:52 +02:00

172 lines
5.5 KiB
YAML

site_name: MCP PHP SDK
site_description: The official PHP SDK for the Model Context Protocol
site_url: https://php.sdk.modelcontextprotocol.io/
repo_name: modelcontextprotocol/php-sdk
repo_url: https://github.com/modelcontextprotocol/php-sdk
edit_uri: edit/main/docs/
# The class-level API reference is still generated by phpDocumentor and copied
# into `site/api/` by `make docs`; Zensical owns everything under `docs/`.
# A relative nav entry would have to resolve to a page in this build, so the
# reference is linked by its absolute URL.
nav:
- MCP PHP SDK: index.md
- Get started:
- get-started/index.md
- Installation: get-started/installation.md
- First server: get-started/first-server.md
- Try it with the Inspector: get-started/inspector.md
- Servers:
- servers/index.md
- Tools: servers/tools.md
- Resources: servers/resources.md
- Resource templates: servers/resource-templates.md
- Prompts: servers/prompts.md
- Completions: servers/completions.md
- Schema generation: servers/schemas.md
- Registering elements: servers/registration.md
- Inside your handler:
- handlers/index.md
- Talking back to the client: handlers/client-communication.md
- Asking for input: handlers/input-required.md
- Logging: handlers/logging.md
- Running your server:
- run/index.md
- Server builder: run/server-builder.md
- STDIO transport: run/stdio.md
- HTTP transport: run/http.md
- Framework integration: run/framework-integration.md
- Sessions: run/sessions.md
- Serving both eras: run/protocol-eras.md
- Caching: run/caching.md
- Subscriptions: run/subscriptions.md
- Authorization: run/authorization.md
- Clients:
- client/index.md
- Connecting to a server: client/connecting.md
- Transports: client/transports.md
- "Tools, resources & prompts": client/capabilities.md
- Server-initiated requests: client/server-requests.md
- Error handling: client/errors.md
- Protocol versions: protocol-versions.md
- Advanced:
- advanced/index.md
- Events: advanced/events.md
- Protocol extensions: advanced/extensions.md
- Custom message handlers: advanced/custom-handlers.md
- Project:
- Deprecation policy: deprecation-policy.md
- SDK tier target: sdk-tier.md
- Examples: examples.md
- API Reference: https://php.sdk.modelcontextprotocol.io/api/
# Look and feel is kept in sync with the Python SDK's documentation
# (https://py.sdk.modelcontextprotocol.io/) so the language SDKs read as one
# set of docs: same MCP mark, same black/slate palette, same navigation.
theme:
name: material
# Zensical's own look, and its default; `classic` renders the older
# Material for MkDocs styling instead.
variant: modern
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
# Zensical natively re-implements `search`; it does not run arbitrary MkDocs
# plugins or hooks.
plugins:
- search
markdown_extensions:
- tables
- abbr
- admonition
- attr_list
- def_list
- footnotes
- md_in_html
- sane_lists # this means you can start a list from any number
- pymdownx.betterem
- pymdownx.caret
- pymdownx.details
- pymdownx.inlinehilite
- pymdownx.mark
- pymdownx.tilde
- pymdownx.highlight:
pygments_lang_class: true
# Pygments' PHP lexer only starts highlighting after a `<?php` tag, and the
# snippets in these docs are fragments — without this they render as one
# flat run of plain text.
extend_pygments_lang:
- name: php
lang: php
options:
startinline: true
# …which in turn mis-tokenizes a literal `<?php`, so the few blocks that
# are complete files rather than fragments use `php-file`.
- name: php-file
lang: php
options:
startinline: false
- 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