MCP server: One MCP server.

Senzii Scheduling

@senziiMCP server · External

Open-source staff scheduling: skills matching, shifts, certifications. Self-hostable, MCP-native.

Self-hosting & homelabv1.0.1Apache-2.0HTML
Freeno charge per call

Runs on your machine from its package; the steps are below.

What it does

  1. Reads
  2. Writes
  3. High impact

At most: moves money, runs code or commands, deletes data, or sends messages for you.

What it costs

Free

Odel charges nothing per call. The publisher may charge for its own service.

Runs locally

This server runs on your machine over stdio, but its source registry didn't list a distribution package. Check the source repository for setup instructions.

README3 min read

Senzii Scheduling App & MCP Server

Staff scheduling your AI agent can operate directly. Senzii is an open-source (Apache-2.0) scheduling platform: tag-based skills matching, shift assignment with conflict detection, certification tracking, proximity ranking, and client staffing requests — exposed as MCP tools for Claude, ChatGPT, or any MCP-compatible client.

The MCP server ships inside this repo and shares the app's PostgreSQL schema — it is the scheduling engine's agent interface, not a generic database connector.

MCP tools

28 tools covering the full scheduling workflow:

AreaTools
Stafflist_staff get_staff create_staff delete_staff set_staff_availability add_staff_certification
Matchingfind_candidates — rank staff for a shift by tags/certifications, proximity, availability
Shifts & assignmentslist_shifts create_assignment unassign_assignment list_assignments delete_shift
Clientslist_clients create_client send_client_magic_link send_staff_magic_link
Staffing requestslist_staffing_requests create_staffing_request convert_staffing_request cancel_staffing_request
Certificationslist_certifications create_certification update_certification delete_certification
Work siteslist_work_sites create_work_site
Adminget_org_metrics run_sql (platform-operator / super-only, SELECT-only)

Every tool is scoped to the authenticated organization — the org ID is injected server-side into every query, so cross-org data access is impossible. Assignments are created pending by design: the agent proposes, a human confirms before the schedule goes live. That is a deliberate safety choice for regulated industries, not a limitation.

Stack

  • Web framework: FastAPI
  • Database: asyncpg (PostgreSQL)
  • Sessions: Cookie-based, PostgreSQL-backed
  • Email: Resend API (optional — only for notification features; the app runs fine without a key)
  • Geocoding: Nominatim (OpenStreetMap) — free public endpoint, no API key
  • MCP Server: Python MCP SDK (Streamable HTTP)

Requirements

ComponentRequired?Notes
PostgreSQLYesAny instance works — Neon free tier is fine
GeocodingFree by defaultPublic OpenStreetMap/Nominatim, no key (set a User-Agent per their usage policy)
Email (Resend)OptionalAPI key only if you want email notifications

Quick Start

bash
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env  # set DATABASE_URL and SESSION_SECRET (generate: python -c "import secrets; print(secrets.token_urlsafe(48))"); add RESEND_API_KEY only for email features
uvicorn app.main:app --host 0.0.0.0 --port 3000 --reload

MCP server:

bash
python -m mcp_server.main

Tool definitions live in mcp_server/tools/tools.toml — add or modify tools by editing the TOML and their handlers under mcp_server/tools/.

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), tools defined in tools.toml
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.

Similar modules

Browse Self-hosting & homelab