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.2.tar.gz (21.0 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.2-py3-none-any.whl (31.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: create_mcp-0.1.2.tar.gz
  • Upload date:
  • Size: 21.0 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.2.tar.gz
Algorithm Hash digest
SHA256 e6604d2d16a4037165bf790950777b65beb2452ffff507f3b37243b20226b67e
MD5 83503aee57ce5d7793821f42ea93d1c4
BLAKE2b-256 746ed29c20ceb14e296c0e481d161e7f6648b4614e58e29b8bcb42ce38381c50

See more details on using hashes here.

File details

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

File metadata

  • Download URL: create_mcp-0.1.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 863965986a25ac52ce995d748887e2a4a833a89b43ff6edca8c65717caee3253
MD5 7a8fab764f02299a721c0c84035920b2
BLAKE2b-256 e111a49f258b5d16bbacee000212bafe22c8d3104ff2415fa367d8e6e604651b

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