<div align="center"
create-mcp
The create-next-app for production MCP servers.
One command scaffolds a typed, tested, auth-ready Python MCP server you can ship — not just run.
</div
uvx create-mcp my-server<p align="center" <img src="docs/demo.svg" alt="create-mcp — scaffold a production MCP server in one command, with tests green out of the box" width="760" </p
Why
The official MCP SDK quickstart and create-mcp-server hand you a single hello-world tool and stop. You still have to add tests, typing, linting, CI, a Dockerfile, config, and — the hard one — spec-compliant OAuth 2.1. Most MCP servers in the wild are hello-world demos that never reach production.
create-mcp generates the whole repo, green on the first run:
- ⚡ uvx create-mcp — zero install. Same ergonomics as create-next-app.
- 🧱 Production defaults, not a toy. Tests, CI, Docker, ruff, mypy, pre-commit, .env, a real README.
- 🔐 OAuth 2.1 in one flag. --auth oauth scaffolds an RFC 9728 resource server (Protected Resource Metadata + 401/WWW-Authenticate discovery + JWT validation). Timed for the 2026 MCP authorization spec.
- 🌊 Streamable HTTP first. The modern transport (SSE is deprecated), plus a stdio preset for Claude Desktop / Cursor.
- 🧪 Tests pass out of the box. Generated tests use FastMCP's in-memory client — no network, milliseconds.
- 🎯 Presets, not questionnaires. Scaffold a use case: minimal, api-wrapper, db, agent-tools.
- 📄 --from-openapi. Point it at a spec and get one typed tool per operation — enums as Literal, request bodies flattened into named arguments, descriptions carried into the docstrings.
- 🐍 Typed end-to-end. Pydantic models for tool I/O; ruff- and mypy-clean.
Built on FastMCP + uv.
Usage
# Interactive
uvx create-mcp
# Scripted / non-interactive
uvx create-mcp pay-tools --preset api-wrapper --auth oauth --yes
# From an OpenAPI document — one typed tool per operation
uvx create-mcp stripe-tools --from-openapi ./openapi.json --yesThen:
cd pay-tools
uv sync
uv run pay_tools # start the server
uv run pytest # green ✓