Skip to main content

The create-next-app for production MCP servers — scaffold a typed, tested, auth-ready Python MCP server in one command.

Project description

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.

CI PyPI Python License: MIT

uvx create-mcp my-server

create-mcp — scaffold a production MCP server in one command, with tests green out of the box

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.
  • 🐍 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

Then:

cd pay-tools
uv sync
uv run pay_tools     # start the server
uv run pytest        # green ✓

Options

Flag Values Default Description
--preset -p minimal, api-wrapper, db, agent-tools minimal Starting set of tools/resources/prompts
--transport -t streamable-http, stdio streamable-http MCP transport
--auth -a none, oauth none OAuth 2.1 resource server (RFC 9728)
--package-name identifier derived Override the Python package name
--output-dir -o path . Where to create the project
--no-git / --git --git Initialise a git repo + first commit
--no-install / --install --install Run uv sync after scaffolding
--no-precommit / --precommit --precommit Install pre-commit hooks
--force off Overwrite a non-empty target directory
--yes -y off Accept all defaults; never prompt (CI)

Presets

Preset What you get
minimal A clean typed server: one tool (structured output), a resource, a prompt.
api-wrapper Wrap an HTTP/JSON API as MCP tools, with the network call isolated for easy mocking.
db A SQLite-backed store exposed as CRUD tools (swap in your real DB).
agent-tools A toolbox for agents: safe calculator, scratchpad memory, clock.

What the generated project looks like

my-server/
├── src/my_server/
│   ├── server.py      # FastMCP instance (+ /health, + auth when enabled)
│   ├── tools.py       # your tools, resources, prompts
│   ├── settings.py    # typed config (pydantic-settings)
│   ├── app.py         # FastAPI host mounting MCP at /mcp
│   ├── auth.py        # OAuth 2.1 resource server  (only with --auth oauth)
│   └── __main__.py    # `uv run my_server`
├── tests/             # in-memory tests, green out of the box
├── Dockerfile         # uv-based image
├── .github/workflows/ci.yml
├── .pre-commit-config.yaml
├── .env.example
└── pyproject.toml

Requirements

  • uv (for uvx and the generated projects)
  • Python 3.11+

Contributing

See CONTRIBUTING.md. Every release runs the full matrix — generating a project for each preset × auth mode, then installing, linting, type-checking and testing it — so the templates can't rot silently.

License

MIT © Shaxzodbek Qambaraliyev / Blaze

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

create_mcp-0.1.1.tar.gz (20.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

create_mcp-0.1.1-py3-none-any.whl (31.6 kB view details)

Uploaded Python 3

File details

Details for the file create_mcp-0.1.1.tar.gz.

File metadata

  • Download URL: create_mcp-0.1.1.tar.gz
  • Upload date:
  • Size: 20.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for create_mcp-0.1.1.tar.gz
Algorithm Hash digest
SHA256 6da7bc91e4026244f0af15cf30bf86bac9e456800911faf89697266460f19a44
MD5 62b62ff30ddcd1946f60b1beb4df77c8
BLAKE2b-256 7308d4519523cc4f926cb685e3faeff9b0081b230d6a6202edded86f0e15f12a

See more details on using hashes here.

File details

Details for the file create_mcp-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: create_mcp-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 31.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for create_mcp-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 04b726250a5a2551387017d4f1ad1ad058986efe1a00386c6dfb028603484f92
MD5 b30653d5336b4eef65f5166251c11a80
BLAKE2b-256 dbe05a1e9ef665aac602920076a7bb049877bf352d85d855a20c23105895d3d2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page