Skip to main content
Glama
hyperdrift-io

Deputy Workforce Operations MCP

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.

Related MCP server: Slack MCP Server

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.

  • Standard MCP analytics are disabled unless the deployment owner provides a PostHog project token; the privacy allowlist is documented in PRIVACY.md.

  • V1 is single-tenant by deployment: one Deputy installation and one MCP bearer token per instance.

  • Authentication, bounded HTTP transport, rate limiting, structured results, and stdio lifecycle use MCP Maker's shared @hyperdrift-io/mcp-service-kit; Deputy keeps its provider and workflow logic.

See SECURITY.md and PRIVACY.md for the complete contracts.

Local installation

Node.js 22 and pnpm are required. The quickest safe inspection uses the public package and fictional fixture data:

DEPUTY_MODE=fixture pnpm dlx @hyperdrift-io/deputy-workforce-mcp@latest

For a visible tool-list and tool-call proof, see the fixture demonstration. The package is also distributed through the official MCP Registry and as a one-file MCP Bundle on Smithery. Maintainers can reproduce the local bundle with:

pnpm mcpb:pack

To work from source:

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.

Available Tools

5 tools
find_availability_conflictsFind availability conflictsB
Read-onlyIdempotent

Find rosters overlapping recorded unavailability or approved leave.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast local calendar date, YYYY-MM-DD, inclusive.
timezoneYesIANA timezone used to group operational days.
start_dateYesFirst local calendar date, YYYY-MM-DD.
location_idsNo

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only and idempotent behavior. The description adds only that the tool finds overlapping rosters, which is already clear from the name. No additional behavioral traits like return format or performance implications are disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, concise sentence that is front-loaded with the core purpose. No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description does not explain the return value or output format. Given no output schema, this is a significant gap. The tool has 4 parameters and no output schema, so the description should clarify what the result looks like.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75% (three of four parameters have schema descriptions). The tool description does not add meaning for parameters beyond the schema. Baseline of 3 is appropriate as schema does most of the work, but location_ids lacks schema description and tool description does not compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool finds rosters overlapping recorded unavailability or approved leave. The verb 'Find' and resources are specific. It distinguishes from siblings like find_coverage_gaps (coverage gaps) and flag_overtime_risk (overtime risks).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for detecting conflicts between rosters and unavailability/leave, but does not explicitly state when to use this tool versus alternatives. No when-not or exclusion criteria are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_coverage_gapsFind coverage gapsB
Read-onlyIdempotent

Find open shifts and optional minimum-staffing shortfalls without changing Deputy data.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast local calendar date, YYYY-MM-DD, inclusive.
timezoneYesIANA timezone used to group operational days.
start_dateYesFirst local calendar date, YYYY-MM-DD.
location_idsNo
minimum_peopleNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description restates 'without changing Deputy data' but adds no new behavioral traits. With annotations present, this is adequate but not enriched.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single clear sentence with no redundant words. It is front-loaded with the core action and resources, making it efficient for an agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema and 5 parameters, the description provides no details on return format, examples, or interpretation of 'shortfalls'. It relies entirely on the schema and annotations, leaving gaps for an agent to guess.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 60% (3 of 5 parameters have descriptions). The tool description adds no parameter-specific information, leaving location_ids and minimum_people unexplained. It does not compensate for the missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it finds open shifts and minimum-staffing shortfalls, specifying the verb 'find' and the resources. It does not explicitly differentiate from sibling tools, but the purpose is distinct enough to avoid confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like flag_overtime_risk or list_timesheet_exceptions. The only context is that it does not change data, which is already covered by annotations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

flag_overtime_riskFlag workload thresholdA
Read-onlyIdempotent

Compare completed and remaining rostered hours with a configured operational threshold.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast local calendar date, YYYY-MM-DD, inclusive.
timezoneYesIANA timezone used to group operational days.
start_dateYesFirst local calendar date, YYYY-MM-DD.
location_idsNo
threshold_hoursNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description is consistent. It adds minimal behavioral context beyond the threshold concept, which is already hinted by the name. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded and free of unnecessary words. Every word earns its place, achieving maximum conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and a moderately complex task (5 parameters), the description omits what the output looks like (e.g., a boolean flag, a list of flagged items). It also fails to clarify the 'compare' operation details, leaving room for ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 60% schema coverage, the description does not elaborate on parameter meanings beyond the schema. For example, 'location_ids' lacks a schema description and the tool description does not compensate. The only parameter indirectly explained is 'threshold_hours' via 'configured operational threshold.'

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'compare' and a clear resource ('completed and remaining rostered hours with a configured operational threshold'). It distinguishes the tool from siblings like 'find_coverage_gaps' or 'list_timesheet_exceptions' by focusing on threshold-based risk flagging.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for flagging overtime risk but does not provide explicit guidance on when to use or avoid this tool, nor does it mention alternatives among siblings. The context is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_timesheet_exceptionsList timesheet exceptionsB
Read-onlyIdempotent

Find missing or materially different timesheets using an explicit tolerance.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast local calendar date, YYYY-MM-DD, inclusive.
timezoneYesIANA timezone used to group operational days.
start_dateYesFirst local calendar date, YYYY-MM-DD.
location_idsNo
tolerance_minutesNo

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description doesn't need to repeat safety info. However, it adds no extra behavioral context such as pagination, number of results, or side effects beyond what annotations imply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded and contains no filler. Every word earns its place, achieving maximum conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there is no output schema and parameters are partially described, the description should cover return value shape or behavior. It does not mention what the output looks like, pagination, or error conditions, leaving gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 60% (3 of 5 parameters have descriptions). The description mentions 'using an explicit tolerance' which hints at tolerance_minutes but doesn't explain it or other parameters like location_ids. It adds minimal clarification beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Find' and resource 'missing or materially different timesheets', clearly distinguishing from sibling tools like find_coverage_gaps or flag_overtime_risk. It succinctly captures the tool's core purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, no prerequisites, and no context like expected use cases or limitations. The description only states what it does, not when to invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

summarise_staffingSummarise staffingA
Read-onlyIdempotent

Summarise rostered and completed staffing by location and local day.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast local calendar date, YYYY-MM-DD, inclusive.
timezoneYesIANA timezone used to group operational days.
start_dateYesFirst local calendar date, YYYY-MM-DD.
location_idsNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows the tool is safe and non-destructive. The description adds specific behavioral context by stating that it summarises rostered vs completed staffing, which is beyond what annotations provide. There is no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence (9 words) that effectively communicates the tool's purpose without any wasted words or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, no output schema, and clear annotations, the description sufficiently conveys the core functionality. It is complete enough for an AI agent to understand what the tool does, though it does not elaborate on the return format or precise meaning of 'rostered and completed'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds the context of grouping by 'location and local day', which corresponds to location_ids and the date parameters, but does not detail each parameter. Since schema description coverage is 75% and the schema descriptions for required parameters are already informative, the description provides moderate additional semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'summarise' and the resource 'rostered and completed staffing' with dimensions 'by location and local day'. However, it does not explicitly differentiate from sibling tools, though the siblings have distinct purposes such as 'find_coverage_gaps' or 'flag_overtime_risk', making the purpose distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives or any prerequisites. The sibling tools are listed in context but the description itself does not mention them or any conditions for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 5 tool updatesv0.1.0
    • First observedfind_availability_conflicts
    • First observedfind_coverage_gaps
    • First observedflag_overtime_risk
    • First observedlist_timesheet_exceptions
    • First observedsummarise_staffing

TDQS

A3.7/5.0
Disambiguation5/5

Each tool targets a distinct operational concern: coverage gaps, overtime risk, timesheet exceptions, staffing summary, and availability conflicts. No overlap or ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (find_, flag_, list_, summarise_, find_), making them predictable and clear.

Tool Count5/5

5 tools is well-scoped for a read-only workforce analysis server, covering key monitoring areas without bloat or deficiency.

Completeness4/5

The set covers main operational needs (gaps, overtime, exceptions, summary, conflicts). A minor gap is the absence of a tool to list all shifts or employees directly, but the summary and gap tools partially address this.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A read-only MCP server that enables AI assistants to access Slack workspace data, including channels, messages, threads, and user information.
    24,316
    3
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Read-only MCP server that proxies deepHR's API to MCP clients, enabling interaction with deepHR modules such as payroll and employees through natural language.
    -
  • F
    license
    A
    quality
    B
    maintenance
    An MCP server that exposes governed CXone WFM Intraday tools to an AI assistant, enabling real-time analyst workflows like risk assessment and SLA recovery using synthetic data.
    10
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hyperdrift-io/deputy-workforce-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server