Skip to main content

Unified production framework for both REST APIs and MCP servers. Drop-in replacement for FastAPI and FastMCP with schema validation, security, middleware, and OpenMCP spec generation.

Project description

ProdMCP

PyPI version Python versions License: MIT FOSSA Status Coverage

Unified production framework for both REST APIs and MCP servers. Drop-in replacement for FastAPI and FastMCP with schema validation, security, middleware, dependency injection, and OpenMCP spec generation.

🛡️ Enterprise Compliance & Security

ProdMCP is engineered for highly-regulated enterprise environments.

  • FOSSA: 100% License Compliant, 0 Security/Dependency Vulnerabilities.
  • SonarCloud SAST: Grade A (0 Bugs, 0 Vulnerabilities, 0 Security Hotspots, >80% Test Coverage).
  • GitHub Advanced Security: Active CodeQL tracking.

Installation

pip install prodmcp              # Core (MCP tools, prompts, resources)
pip install prodmcp[rest]        # + FastAPI + Uvicorn for the unified server

Quick Start

from pydantic import BaseModel
from prodmcp import ProdMCP

app = ProdMCP("MyServer", version="1.0.0")


# --- Define Schemas ---

class UserInput(BaseModel):
    user_id: str

class UserOutput(BaseModel):
    name: str
    email: str


# --- Unified: Same handler as both MCP tool AND REST endpoint ---

@app.common(input_schema=UserInput, output_schema=UserOutput)
@app.tool(name="get_user", security=[{"type": "bearer", "scopes": ["user"]}])
@app.get("/users/{user_id}")
def get_user(user_id: str) -> dict:
    return {"name": "Alice", "email": "alice@example.com"}


# --- MCP-only Prompt ---

@app.prompt(name="summarize", input_schema=UserInput)
def summarize(user_id: str) -> str:
    return f"Please summarize data for user {user_id}"


# --- MCP-only Resource ---

@app.resource(uri="data://users", name="user_db", output_schema=UserOutput)
def fetch_users() -> list:
    return [{"name": "Alice", "email": "alice@example.com"}]


# --- Export OpenMCP Spec ---

spec = app.export_openmcp()
print(spec)

# --- Run the unified server ---

if __name__ == "__main__":
    app.run()  # REST at / (Swagger at /docs) + MCP SSE at /mcp/sse

Features

  • Unified Framework — One ProdMCP instance replaces both FastAPI and FastMCP
  • Decorator Stacking@app.tool() + @app.get() on the same handler with @app.common() for shared config
  • HTTP Methods@app.get(), @app.post(), @app.put(), @app.delete(), @app.patch() (FastAPI-identical)
  • MCP Primitives@app.tool(), @app.prompt(), @app.resource() (FastMCP-identical)
  • Schema-First — Pydantic models or raw JSON Schema for input/output definitions
  • Validation Engine — Automatic input/output validation with structured error reporting
  • Security Layer — Bearer, Basic, Digest, API keys, OAuth2, OpenID Connect
  • Middleware System — Global before/after hooks (logging, rate limiting, tracing)
  • Dependency Injection — Composable dependencies injected into handlers
  • OpenMCP Spec — Auto-generated, machine-readable specification from code
  • Unified Server — REST + MCP SSE on a single HTTP server (app.run())

License

MIT


Release Notes

Version 0.3.0 — Unified Framework Release

One framework. Both worlds. ProdMCP 0.3.0 makes ProdMCP a true drop-in replacement for FastAPI and FastMCP.

Key changes:

  • Unified Architecture — FastAPI-style HTTP decorators + FastMCP-style MCP decorators on a single class
  • @app.common() — Define schemas, security, and middleware once for stacked decorators
  • app.run(transport="unified") — REST at / + MCP SSE at /mcp/sse on one server (new default)
  • Expanded SecurityHTTPBasicAuth, HTTPDigestAuth, APIKeyHeader/Query/Cookie, OAuth2PasswordBearer, OAuth2AuthorizationCodeBearer, OAuth2ClientCredentialsBearer, OpenIdConnect
  • Migration Examplesfastapi_migration.py, fastmcp_migration.py, unified_example.py
  • Bug Fixes — Fixed $ref paths in OpenMCP spec, security config propagation, and API key scheme naming

See CHANGELOG.md for the full changelog.

Version 0.2.0 — Initial Public API Release

  • Decorator API: @app.tool(), @app.prompt(), @app.resource() with schema, security, and middleware support.
  • Schema-First Validation: Pydantic BaseModel input/output validation with strict_output toggle.
  • Security Manager: BearerAuth, ApiKeyAuth, CustomAuth with shorthand inline definitions.
  • Dependency Injection: Depends() for async context resolution.
  • Middleware Hooks: Global and entity-specific before/after lifecycle hooks.
  • OpenMCP Spec Engine: app.export_openmcp() generates machine-readable specs.
  • REST Bridge: app.as_fastapi() for MCP-to-REST testing.

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

prodmcp-0.3.3.tar.gz (46.7 kB view details)

Uploaded Source

Built Distribution

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

prodmcp-0.3.3-py3-none-any.whl (30.8 kB view details)

Uploaded Python 3

File details

Details for the file prodmcp-0.3.3.tar.gz.

File metadata

  • Download URL: prodmcp-0.3.3.tar.gz
  • Upload date:
  • Size: 46.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for prodmcp-0.3.3.tar.gz
Algorithm Hash digest
SHA256 42f3d273b9f9044e365cf2f9bd7f88d46c77980fd1cb7eca45e83b2ce812c0a8
MD5 9d97dd890f581883e7d28728f4d101ca
BLAKE2b-256 4b611ece32c966342f28c1aecc490f30b8b9ad71a1dec18155e4e252abf4bc2d

See more details on using hashes here.

File details

Details for the file prodmcp-0.3.3-py3-none-any.whl.

File metadata

  • Download URL: prodmcp-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 30.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for prodmcp-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 783707ed3cffccee01f24345d093cbe2d0beab5a5c1041fec2a1525e68f49fa4
MD5 638d2230905dbbbfb1f0a72ce017846e
BLAKE2b-256 976070362c658cdf66f0f24b299279d0919258a16748af5a694f5ca0da7c77c6

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