# FastMCP Docs

Writes and revises pages for the FastMCP docs site with its checks.

- Repository: https://github.com/PrefectHQ/fastmcp (28267 stars)
- Category: Documents
- License: Apache-2.0
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add PrefectHQ/fastmcp --skill docs -g -a claude-code -y`
Codex: `npx skills add PrefectHQ/fastmcp --skill docs -g -a codex -y`
Cursor: `npx skills add PrefectHQ/fastmcp --skill docs -g -a cursor -y`
Gemini CLI: `npx skills add PrefectHQ/fastmcp --skill docs -g -a gemini-cli -y`

## Description

Write or revise a page under docs/ for gofastmcp.com. Use when adding a feature's documentation, fixing a docs issue, reworking a page, or auditing pages for accessibility and consistency. Covers the page shape, the voice, the checks that run in CI, and how a merged page reaches the live site.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# FastMCP docs

The docs are a Mintlify site built from `docs/`. A page exists only when `docs/docs.json` lists it, and a feature exists only when a page documents it. `docs/python-sdk/**` is generated from docstrings by a bot; edit the docstring, not the page.

## Procedure

1. Find the owning page before creating one. `rg -l "<feature>" docs --glob '!docs/python-sdk/**' --glob '!docs/v2/**' --glob '!docs/v3/**'`. Extend it when the feature belongs to that page's subject; add a page when it has its own.
2. Read two neighboring pages in the same `docs.json` group and match their section order and heading depth.
3. Write the page with the template below. Explain why the feature exists before showing how, and keep the first code block small enough to read without scrolling.
4. Make every code block runnable: imports present, names defined, one idea per block. Pull intermediate values into named variables instead of nesting calls.
5. Run the checks in **Verify** and fix what they report.
6. When the change is ready to ship, open a PR against `main`. Merged is not live: the site serves `published-docs`. A stable release from `main` opens a `Publish FastMCP v<version> docs` PR against `published-docs` that a maintainer merges; for a docs-only change between releases, follow "Publishing docs by hand" in `.agents/skills/release/SKILL.md`. Either way, the `Deploy docs` run's verdict is what says the site changed.

## Template

````mdx
---
title: Feature Name
sidebarTitle: Feature
description: One sentence a search result can show.
icon: some-fontawesome-icon
---

import { VersionBadge } from '/snippets/version-badge.mdx'

<VersionBadge version="<version that introduces the feature>" />

One paragraph on the problem this solves and when to reach for it.

## Basic usage

Explain what the example does, then show it.

```python
from fastmcp import FastMCP

mcp = FastMCP("Demo")


@mcp.tool
def greet(name: str) -> str:
    return f"Hello, {name}!"
```

## Configuration

The rest: https://github.com/PrefectHQ/fastmcp/blob/HEAD/.agents/skills/docs/SKILL.md
