simcpi
Build MCP-powered APIs with a single decorator.
simcpi combines FastAPI, MCP tools, LLM tool-calling, and an interactive playground into one framework.
Features Single decorator → REST endpoint + MCP tool Built-in Swagger docs MCP streamable-http transport Interactive MCP playground (/mcpark) OpenAI and Anthropic support Claude Desktop integration In-process MCP client support .mcpb export support Installation pip install simcpi Quick Start from simcpi import MCPApi import uvicorn
app = MCPApi( title="Math API", provider="openai", api_key="your-api-key" )
@app.create_tool_api("/add", method="POST") def add(a: int, b: int) -> int: """ Add two numbers together. Use this when the user asks for sums or totals. """ return a + b
if name == "main": uvicorn.run(app, host="0.0.0.0", port=8000)
Run:
python app.py Automatic Routes Route Purpose /docs Swagger UI /mcpark MCP playground /mcp/mcp MCP streamable-http endpoint MCPark
MCPark is the built-in interface for testing MCP tools with LLMs.
Open:
http://localhost:8000/mcpark
Capabilities:
View registered tools Run prompts against tools Inspect tool calls and outputs Switch between OpenAI and Anthropic Configure custom base URLs and headers Generate Claude Desktop config snippets MCP Client from simcpi import MCPApi import asyncio
app = MCPApi( provider="openai", api_key="your-api-key" )
@app.create_tool_api("/multiply") def multiply(a: int, b: int) -> int: """Multiply two numbers.""" return a * b
async def main(): client = app.get_client()
result = await client.run(
"What is 12 times 9?"
)
print(result.answer)
print(result.tools_called)
asyncio.run(main()) Claude Desktop Integration app.connect_claude()
Restart Claude Desktop after running the command.
Export .mcpb app.export_mcpb()
Generates a Claude Desktop installable bundle.
Custom LLM Endpoints app = MCPApi( provider="openai", api_key="your-api-key", base_url="https://your-provider.com/v1" )
Custom headers are also supported.
Supported Providers OpenAI Anthropic Requirements Python 3.10+ fastmcp==3.2.4 Why simcpi?
Traditional MCP setups often require:
separate MCP servers separate API frameworks manual tool registration transport setup additional orchestration code
simcpi unifies these into a single workflow.
Write a function once:
it becomes an API endpoint it becomes an MCP tool it becomes callable by LLMs Example Tool @app.create_tool_api("/weather") def weather(city: str) -> str: """ Get weather for a city. Use this when the user asks about weather conditions. """ return f"Sunny in {city}" Roadmap Streaming responses Additional MCP transports OAuth support Multi-agent orchestration Tool analytics Deployment helpers License
License will be added in a future release.
Metadata
Release files for simcipi 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| simcipi-0.2.0.tar.gz | 11.2 kB | Without provenance | Details for simcipi-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| simcipi-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for simcipi-0.2.0-py3-none-any.whl |
Total release size: 23.7 kB
Release files / simcipi-0.2.0.tar.gz
| Download URL | simcipi-0.2.0.tar.gz |
|---|---|
| Size | 11.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
eefd836381ca1225b170d718f1b62a355ed4fa57816d0bc41c1ca60b7b636f2b
|
|
BLAKE2b-256 checksum How to use checksums |
eb6f89294670c825b5516c93e7a12cbc3d3a96179ddd82854dc99b329d5279c5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Release files / simcipi-0.2.0-py3-none-any.whl
| Download URL | simcipi-0.2.0-py3-none-any.whl |
|---|---|
| Size | 12.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
02829b6adb72c68e492eaa9adba26a3c8c60ebcf520c8bbdad7c13bfb685b0c8
|
|
BLAKE2b-256 checksum How to use checksums |
dc5877841466efe09f0142402c0785b44c42d89614541cbca031d39639e1fb4c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Security for simcipi 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.