Skip to main content
Glama
Senzii-App

Senzii MCP Server

Official
by Senzii-App
README.md
# Senzii Scheduling App & MCP Server

## Stack

- **Web framework**: FastAPI
- **Database**: asyncpg (PostgreSQL, same schema as Rust)
- **Sessions**: Cookie-based, PostgreSQL-backed (same `sessions` table)
- **Email**: Resend API
- **Geocoding**: Nominatim (OpenStreetMap)
- **MCP Server**: Python MCP SDK

## Quick Start

```bash
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env  # fill in DATABASE_URL, SESSION_SECRET, etc.
uvicorn app.main:app --host 0.0.0.0 --port 3000 --reload
```

MCP server:
```bash
python -m mcp_server.main
```

## Architecture

```
app/
  main.py          — FastAPI app, all routers wired
  config.py        — Environment configuration
  db/              — Database layer (asyncpg pool, migrations, queries)
  models/          — Pydantic schemas
  middleware/      — Auth session extraction, rate limiting
  routes/          — FastAPI routers (1:1 with Rust routes)
  services/        — Email (Resend), Geocoding (Nominatim)
mcp_server/       — MCP server (Python MCP SDK)
static/           — App HTML/CSS/JS (login, dashboards, portals, SEO pages)
```

The marketing/landing site is a separate repo (`Senzii-App/site`) served from
Vercel at senzii.com. `app.senzii.com` serves only the app: `GET /` is the
sign-in page.

## Deployment

Two targets, one CLI (see `infra/README.md` for full docs):

```bash
./infra/deploy.sh azure   <flags...>   # deploy to Azure (VMSS / staging VM)
./infra/deploy.sh linode  <flags...>   # deploy to Linode backends
./infra/deploy.sh help                 # list providers & flags
```

## License

Open-source. See LICENSE.