Skip to content

hyperdrift-io/deputy-workforce-mcp

Repository files navigation

Deputy Workforce Operations MCP

A read-only Model Context Protocol server that turns Deputy workforce records into five grounded, operational workflows for AI assistants.

What a Deputy manager can ask

  • “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.

Representative results

The examples below use fictional records and compact the structured response to the fields a manager can act on.

Coverage gaps

{
  "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": []
}

Overtime risk

{ "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": [] }

Timesheet exceptions

{ "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": [] }

Availability conflicts

{ "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": [] }

Staffing summary

{ "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.

Safety and data handling

  • 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.

Local installation

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.js

Fixture 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" }
    }
  }
}

Remote deployment

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.

Tool reference

The server registers exactly five tools:

  • find_coverage_gaps
  • flag_overtime_risk
  • list_timesheet_exceptions
  • find_availability_conflicts
  • summarise_staffing

Inputs, rules, and output limits are documented in docs/TOOLS.md.

Status

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.

Built as MCP Maker delivery 001

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.

About

Read-only workforce operations MCP for Deputy — MCP Maker delivery 001

Topics

Resources

License

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors