Skip to content

Python CLI, API, and MCP Interface Framework

TYPED PYTHON INTERFACES

One typed definition. Three interfaces.

Define typed tools once for CLI, HTTP, or MCP. Convert apps between Typer, FastAPI, and FastMCP.

Intpot turns typed Python tools into CLI, HTTP API, or MCP interfaces.

GET STARTED

Install Intpot

pip install "intpot[all]"Quick start guide

EXPLORE THE MECHANISM

One definition, three ways in.

Inspect how one typed greeting maps to CLI, HTTP, and MCP request shapes, then edit a bounded request and view its local result.

Open the playground

Browser-local preview. A bounded JavaScript preview—not Python execution, a live Intpot server, or a model call.

Conversion and ejection use the immutable ApplicationSchema with ToolSchema records. Inspectors and registrations retain ToolInfo compatibility metadata; live serving keeps the registered callables. The overview is conceptual, not a literal execution trace. These interfaces can be used by people or by agents when their host supports them; CLI, HTTP, and MCP are not reserved for a particular kind of user.

Two Intpot workflows meet at the canonical ApplicationSchema: registered Python tools are served or ejected as CLI, API, or MCP interfaces; existing Typer, FastAPI, or FastMCP apps are inspected and converted to standalone code.
Intpot’s shared schema connects app registration and framework conversion. Open the full-size diagram.

Register typed Python functions with @app.tool(). Intpot keeps behavior in one place and serves it through a Typer CLI, FastAPI, or FastMCP interface. Existing apps can also be converted across all six Typer, FastAPI, and FastMCP directions.

from intpot import App
app = App("my-app")
@app.tool()
def add(a: int, b: int) -> int:
"""Add two numbers."""
return a + b
Terminal window
intpot serve app.py --cli
intpot serve app.py --api
intpot serve app.py --mcp
Intpot inspects an application, checks bindings per target, and either generates supported standalone code or reports a missing name before any output writes.
Conceptual converter flow. Inspection remains available; scaffold permission cannot bypass missing-binding refusal. Open the full-size assessment diagram.

The supported subset produces standalone framework code. Known missing body, eager-definition or string/postponed annotation bindings refuse before output writes. Static name checks do not evaluate types or recover arbitrary classes; source detection imports trusted code. Live App serving is a separate path. Read the boundaries and runnable example.

See how one typed definition maps to CLI, HTTP, and MCP entry points. The focused playground lets you edit one bounded request at a time and inspect its locally computed result.

Open the interface playground → · Read the quick start · Explore capabilities and boundaries

Built by ModePot.