A minimal CRUD API for βitems,β built with FastAPI and exposed as MCP tools via FastAPI-MCP. Includes a scenario-driven client harness using PydanticAI and Rich.
- FastAPI: high-performance HTTP API
- SQLAlchemy + Pydantic: ORM models + input/output schemas
- FastAPI-MCP: auto-expose your endpoints as MCP tools (
/mcp/tools,/mcp/events) - Rich CLI: beautiful, colored terminal output for scenario runs
- Scenario Runner: client harness that drives and validates your API via PydanticAI agents
- SQLite backend for demo; easily swap to PostgreSQL, MySQL, etc.
.
βββ backend
β βββ server
β β βββ main.py # FastAPI + FastAPI-MCP wiring
β β βββ models.py # SQLAlchemy + Pydantic schemas
β β βββ routes.py # CRUD endpoints
β β βββ crud.py # DB operations
β β βββ db.py # session & engine
β β βββ logger.py # stdlib logging setup
β βββ client
β βββ scenarios.py # Scenario definitions
β βββ main.py # run\_scenarios.py harness
βββ .env # example environment variables
βββ pyproject.toml # Project dependencies
βββ README.md # this file
-
Clone & enter directory
git clone https://github.com/yourusername/fastapi-crud-mcp.git cd fastapi-crud-mcp -
Create & activate a virtualenv
uv venv source .venv/bin/activate -
Install dependencies
uv sync
-
Environment variables Copy the example and adjust if needed:
cp .env.example .env
MCP_HOST_URL='http://127.0.0.1:8000/mcp' LLM_PROVIDER='openai' LLM_MODEL_NAME='gpt-4o-mini' LLM_MODEL=${LLM_PROVIDER}:${LLM_MODEL_NAME} OPENAI_API_KEY=sk-proj-your-api-key-here
docker compose up -d --build- API docs β
http://localhost:8000/docs - OpenAPI JSON β
http://localhost:8000/openapi.json
python3 -m backend.client.mainThis harness will:
- Load your
.envsettings - Spin up a PydanticAI agent against
MCP_HOST_URL - Execute each scenario (create/list/get/update/delete)
- Display rich panels for prompts & outputs
- Switch DB: edit
backend/server/db.pyfor PostgreSQL or MySQL. - Add auth: protect
/mcpor/apivia FastAPI dependencies. - Extend scenarios: drop new entries into
backend/client/scenarios.py. - Production: add Alembic for migrations, and monitor with Prometheus.
-
Fork π±
-
Create a feature branch:
git checkout -b feature/my-feature
-
Commit & push:
git commit -am "Add awesome feature" git push origin feature/my-feature -
Open a PR and weβll review!
This project is MIT-licensedβsee the LICENSE file for details.