A read-only Model Context Protocol server that turns Deputy workforce records into five grounded, operational workflows for AI assistants.
- “Where are the coverage gaps from 20 to 26 July, using a minimum of two people?”
- “Which combined completed and rostered workloads cross our 40-hour planning threshold?”
- “Show timesheet exceptions above a 15-minute tolerance.”
- “Which rosters overlap recorded unavailability or approved leave?”
- “Summarise staffing by location and day for this week.”
The tools answer those questions directly instead of exposing Deputy's endpoint catalogue.
The examples below use fictional records and compact the structured response to the fields a manager can act on.
{
"period": { "start": "2026-07-20", "end": "2026-07-26", "timezone": "Europe/London" },
"findings": [{ "kind": "coverage_gap", "sources": [{ "resource": "Roster", "id": 1001 }], "rule": "active roster has fewer than 2 people" }],
"limits": []
}{ "period": { "start": "2026-07-20", "end": "2026-07-26", "timezone": "Europe/London" }, "findings": [{ "worker_id": 7, "planned_hours": 43.5, "threshold_hours": 40, "sources": [{ "resource": "Timesheet", "id": 2007 }, { "resource": "Roster", "id": 1007 }], "rule": "completed plus remaining rostered hours exceeds threshold" }], "limits": [] }{ "period": { "start": "2026-07-20", "end": "2026-07-26", "timezone": "Europe/London" }, "findings": [{ "kind": "start_time_variance", "roster_id": 1002, "minutes": 22, "tolerance_minutes": 15, "sources": [{ "resource": "Roster", "id": 1002 }, { "resource": "Timesheet", "id": 2002 }], "rule": "timesheet start differs from roster beyond tolerance" }], "limits": [] }{ "period": { "start": "2026-07-20", "end": "2026-07-26", "timezone": "Europe/London" }, "findings": [{ "kind": "recorded_unavailability_conflict", "sources": [{ "resource": "Roster", "id": 1002 }, { "resource": "EmployeeAvailability", "id": 4001 }], "rule": "roster interval overlaps recorded unavailability" }], "limits": [] }{ "period": { "start": "2026-07-20", "end": "2026-07-26", "timezone": "Europe/London" }, "findings": [{ "location": "North", "day": "2026-07-21", "rostered_hours": 16, "completed_hours": 12, "assigned": 3, "unassigned": 1, "sources": [{ "resource": "Roster", "id": 1008 }, { "resource": "Timesheet", "id": 2008 }], "rule": "group roster and timesheet hours by location and local day" }], "limits": [] }Every finding names its period, source record identifiers, and the rule or threshold that produced it. Empty data gives a confidence limit rather than a false all-clear.
- Every tool is read-only, idempotent, and non-destructive.
- The server never creates or changes shifts, timesheets, leave, payroll, or employee data.
- Workload thresholds are operational planning signals, not payroll, employment, or legal advice.
- Telemetry excludes tool arguments, employee and location IDs, dates, result content, and tokens.
- V1 is single-tenant by deployment: one Deputy installation and one MCP bearer token per instance.
See SECURITY.md and PRIVACY.md for the complete contracts.
Node.js 22 and pnpm are required.
git clone https://github.com/hyperdrift-io/deputy-workforce-mcp.git
cd deputy-workforce-mcp
pnpm install
pnpm build
DEPUTY_MODE=fixture node dist/stdio.jsFixture mode contains fictional Worker 01-style records and is safe for evaluation. To connect a
Deputy installation, copy .env.example to .env.local, choose DEPUTY_MODE=live, and provide a
customer-owned base URL and OAuth access token. Live resource shapes still require the first
sandbox verification recorded in docs/DEPUTY_API.md.
Example client configuration:
{
"mcpServers": {
"deputy-workforce": {
"command": "node",
"args": ["/absolute/path/to/deputy-workforce-mcp/dist/stdio.js"],
"env": { "DEPUTY_MODE": "fixture" }
}
}
}The same five tools can run over authenticated streamable HTTP. Remote mode requires an MCP bearer token of at least 32 bytes, authenticates before parsing requests, limits bodies to 1 MiB, and uses bounded in-memory rate protection.
DEPUTY_MODE=fixture \
MCP_BEARER_TOKEN="replace-with-at-least-32-random-bytes" \
PORT=3013 \
pnpm start- Health:
GET /health - MCP: authenticated
POST /mcp
See docs/DEPLOYMENT.md before operating a remote instance.
The server registers exactly five tools:
find_coverage_gapsflag_overtime_risklist_timesheet_exceptionsfind_availability_conflictssummarise_staffing
Inputs, rules, and output limits are documented in docs/TOOLS.md.
Fixture mode, stdio, and authenticated streamable HTTP are operational. Live Deputy mode remains explicitly pending a customer-owned sandbox token and field-shape verification. The public API is still in prototype discovery and may evolve from real workflow feedback.
Deputy Workforce Operations MCP is the flagship public implementation from MCP Maker: Hyperdrift turns established SaaS APIs into secure, production-ready AI integrations.
The open-source core remains useful on its own. MCP Maker offers managed deployment, security hardening, custom workflows, and operational support for organisations that want a production integration tailored to their environment.