Skip to main content

Generate complete, runnable FastMCP 3.x MCP servers from plain-English descriptions

Project description

mcpforge

PyPI Python CI License: MIT

Describe an MCP server in one sentence. Get a tested, runnable one back.

mcpforge turns a plain-English description into a complete FastMCP 3.x MCP server — tools, Pydantic input validation, error handling, a pytest suite, run config, and client setup docs — all wired together and ready to inspect, validate, and install. You write the sentence; Claude writes the implementation; mcpforge validates it before you ever run it.

⚡ 60-second start

You need Python 3.12+, uv, and an Anthropic API key.

uv tool install fastmcp-builder
export ANTHROPIC_API_KEY="your_anthropic_api_key"

mcpforge generate "A weather server that returns today's forecast for a city" -o weather-server

That's the whole loop. mcpforge plans the tools, generates the code, then runs syntax, security, lint, import, and pytest checks against the result — so what lands in ./weather-server/ is already validated:

# weather-server/server.py  (excerpt)
"""Weather forecast MCP server."""

from fastmcp import FastMCP

mcp = FastMCP("Weather")

# Illustrative lookup — describe a real source and mcpforge wires the call for you.
_FORECASTS: dict[str, dict] = {
    "san francisco": {"high_c": 18, "low_c": 12, "summary": "Foggy"},
    "denver": {"high_c": 24, "low_c": 9, "summary": "Clear"},
}


@mcp.tool
async def get_forecast(city: str) -> dict:
    """Return today's forecast for a city."""
    key = city.strip().lower()
    if key not in _FORECASTS:
        raise ValueError(f"No forecast available for {city!r}")
    return {"city": city, **_FORECASTS[key]}


if __name__ == "__main__":
    mcp.run(transport="streamable-http")

Every generation also produces test_server.py (a real pytest suite), pyproject.toml, a README.md, and an MCP client config.json — a complete project, not a snippet. Run it with:

cd weather-server
uv run server.py            # start the server (streamable-http)
uv run pytest -v            # run the generated tests
mcpforge validate .         # re-run the full validation suite anytime

The snippet above is an illustrative toy ("weather") for the docs. Real generations match your description — see examples/ for live generated servers (todo, file reader, database query, Slack notifier, TypeScript).

Build, then audit — the MCP toolkit

mcpforge has a sibling: mcp-audit (mcp-permission-audit on PyPI). They're two halves of one workflow — forge a server, then audit what your agents can actually touch before you trust it.

Stage Tool What it does
Build mcpforge Generate a complete, tested MCP server from one sentence.
Audit mcp-audit Scan every MCP server wired into your machine and risk-score what each one can reach.
# build
mcpforge generate "A weather server that returns today's forecast for a city" -o weather-server

# audit everything your agents can reach (read-only, no install needed)
uvx --from mcp-permission-audit mcp-audit scan --ssrf-check

mcp-audit is read-only by default — it never edits a config and reports env-var key names only, never values. Build with confidence, then verify your blast radius.

Features

  • Plain-English generation — describe your server in natural language; Claude writes the implementation
  • Complete project scaffold — tools, Pydantic input models, error handling, pyproject.toml, and a pytest suite generated together
  • FastMCP 3.x native — output uses modern FastMCP decorators and transport configuration, not raw MCP protocol boilerplate
  • Validate before runningmcpforge validate runs syntax, security, lint, import, and pytest checks against generated servers
  • Iterate safelymcpforge update modifies an existing generated server and backs up changed files before writing
  • Discover generated serversmcpforge list finds mcpforge-generated projects in a workspace
  • Inspect and diagnosemcpforge inspect summarizes generated server shape, while mcpforge doctor checks local readiness
  • Machine-readable output — status-like commands expose --json for agent workflows
  • OpenAPI curation controls — include/exclude tags, operation allowlists, and operation limits keep generated integrations focused
  • Scaffold without an LLMmcpforge init creates a minimal FastMCP server skeleton for local iteration
  • MCP server modemcpforge-server exposes generation, planning, validation, inspection, doctor, and discovery tools so AI assistants can build safely

More commands

The PyPI distribution is fastmcp-builder; the installed commands are mcpforge and mcpforge-server. Beyond generate:

# Generate a new MCP server
mcpforge generate "A todo list manager with create, read, update, and delete operations"

# Validate an existing generated server
mcpforge validate ./my-server

# Modify an existing generated server
mcpforge update ./my-server "Add a tool to export todos as CSV"

# Find generated servers in the current workspace
mcpforge list . --recursive

# Inspect a generated server without executing it
mcpforge inspect ./my-server

# Check local prerequisites and provider readiness
mcpforge doctor

Useful generation flags:

  • --dry-run displays the structured plan without writing files.
  • --no-execute writes files but skips import and test execution.
  • --strict treats lint errors as hard validation failures.
  • --from-openapi FILE generates from an OpenAPI 3.x spec.
  • --openapi-include-tag TAG, --openapi-exclude-tag TAG, --openapi-operation ID, and --openapi-limit N curate OpenAPI conversion.
  • --language python|typescript chooses the target server language.
  • --auth-profile none|api-key|jwt adds optional Python auth profile metadata and env docs.
  • --middleware-profile logging|timing|rate-limit adds optional Python middleware profiles; repeat it to combine profiles.
  • --provider anthropic|openai selects the generation provider. OpenAI remains gated by default; set MCPFORGE_ENABLE_OPENAI_PROVIDER=1 only for opt-in smoke testing after OPENAI_API_KEY is available.

Useful status flags:

  • mcpforge list --json
  • mcpforge inspect PATH --json
  • mcpforge validate PATH --json
  • mcpforge doctor --json
  • mcpforge version --json

Tech Stack

Layer Technology
Language Python 3.12+
Generation Anthropic Claude via anthropic SDK; OpenAI provider support is gated behind hosted smokes
MCP framework FastMCP 3.x
CLI Click 8
Templates Jinja2
Validation Pydantic v2
Output Rich

Architecture

The generate command sends the user's description to Claude with a structured prompt that includes FastMCP 3.x idioms and a tool-schema contract. Claude returns a JSON plan (tool names, signatures, and descriptions) that mcpforge validates against a Pydantic model before rendering through Jinja2 templates into a complete project directory. The generated project is then validated with syntax checks, security scanning, ruff linting, import checks, and pytest execution. The update command reads an existing generated server, asks Claude for a targeted modification, writes backups for changed files, and validates the result.

Current Status

mcpforge is published to PyPI as the fastmcp-builder distribution. The v0.3 builder lane expands mcpforge from runnable-server generation into a production integration builder with inspection, doctor checks, richer generated scaffolds, OpenAPI curation, MCP server parity, provider abstraction, remote MCP readiness docs, and live generated fixture examples for REST API, filesystem, database, authenticated OpenAPI, and TypeScript profiles. See docs/CURRENT-STATE.md and docs/ROADMAP-v0.3.md.

License

MIT

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

fastmcp_builder-0.3.1.tar.gz (53.9 kB view details)

Uploaded Source

Built Distribution

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

fastmcp_builder-0.3.1-py3-none-any.whl (72.7 kB view details)

Uploaded Python 3

File details

Details for the file fastmcp_builder-0.3.1.tar.gz.

File metadata

  • Download URL: fastmcp_builder-0.3.1.tar.gz
  • Upload date:
  • Size: 53.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fastmcp_builder-0.3.1.tar.gz
Algorithm Hash digest
SHA256 140538518f3621b824d405cd79e30099ade6c09b7415712960eb34120c0d2e16
MD5 9f086e33a0ae94e36d3f1ba80244e002
BLAKE2b-256 460ac5f9279b5f29788f4580ea7125d647c8a0cc8bf79311f7228472f5b111b2

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmcp_builder-0.3.1.tar.gz:

Publisher: publish.yml on saagpatel/mcpforge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastmcp_builder-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: fastmcp_builder-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 72.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fastmcp_builder-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e4fb0adb4d371416105a3e214f58fbf6bdb8524d8e72553dcf6a27e77b25cbbf
MD5 0858e4d451d7c5d200520006f33721b3
BLAKE2b-256 d15f4440622389966b940981f2c6c8f3aeae80566fdf010771578a35bb4a1f74

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastmcp_builder-0.3.1-py3-none-any.whl:

Publisher: publish.yml on saagpatel/mcpforge

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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