Shift Scheduler
Server Details
Builds optimal 24/7 staff rosters with a real MILP solver: rest rules, skills, nights, fairness.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- Shift Scheduler
TDQS
Scored across 5 tools
Each tool occupies a distinct slot in the workflow: capability probing (check_request), example discovery (list_shift_examples), example retrieval (get_shift_example), solving (build_shift_roster) and async result polling (get_shift_roster_result). The one plausible pair, list_shift_examples vs get_shift_example, is clearly separated by their descriptions (enumerate names vs return full input JSON).
Four of five tools follow a clean verb_noun pattern with a consistent 'shift' domain prefix (build_shift_roster, get_shift_example, get_shift_roster_result, list_shift_examples). Only check_request breaks the pattern by omitting the domain prefix, a minor deviation that stays readable.
Five tools is well-scoped for a solver-backed scheduling service: one entry point for solving, one for async results, two for examples, and one for capability checks. Nothing feels padded or missing at the count level.
The full lifecycle is covered: discover examples, build a roster, poll for async results, and pre-check feasibility, including documented handling of too_large/busy/running states. Minor gaps exist around job control (no cancel/abort for long 5-60 s solves) and no way to tweak or re-solve an existing roster, but agents can work around both.
Available Tools
5 toolsbuild_shift_rosterBuild an optimized shift rosterARead-onlyIdempotentInspect
Solve a staff rostering problem to optimality with a MILP solver and return who works which shift each day, coverage, unfilled posts, hours per person and warnings. Solves take 5-60 s. Pass either example (to solve a built-in example as-is) or the roster input fields. If the result has status 'running', call get_shift_roster_result with its job_id. If it has status 'too_large', shorten the horizon or reduce people/shift types and retry. If it has status 'busy', wait the retry_after_seconds it gives and call again -- one call at a time, never in parallel. Safe defaults (e.g. the next 7 days when days is omitted) are listed in the result's assumptions; tell the user about them. Roster input. Minimal example: {"days": ["2026-10-05", "2026-10-06"], "shifts": [{"shift": "Day", "start": "07:00", "end": "19:00"}, {"shift": "Night", "start": "19:00", "end": "07:00", "night": "yes"}], "demands": [{"name": "RN", "penalty": 500}], "people": [{"name": "Ana", "cost": 40, "max_hw": 48}, ...], "grids": {"RN": {"2026-10-05|Day": 2, "2026-10-05|Night": 1}}, "parameters": {"MinRestHours": 11}}. Call get_shift_example for complete, realistic inputs.
Inputs: days, goal, grids, people, +6 more.
check_requestCheck whether a request fitsARead-onlyIdempotentInspect
Describe what the user wants in plain words and get back whether this server can do it, which limits it would hit, and the closest thing it CAN do. Instant, no solve. Use it when unsure the tool fits (shift swaps, payroll, time clocks, very large teams or long horizons).
Inputs: description (required).
get_shift_exampleGet an example roster inputARead-onlyInspect
Return the full input JSON of one example, in exactly the shape build_shift_roster accepts. Edit it (names, days, headcounts, rules) to match the user's situation.
Inputs: name (required), lang.
get_shift_roster_resultGet a roster resultARead-onlyInspect
Fetch the result of a build_shift_roster job that returned status 'running'. Waits up to wait_seconds; call again while status is 'running'. Jobs expire 15 minutes after they finish.
Inputs: job_id (required), wait_seconds.
list_shift_examplesList example rostersARead-onlyInspect
List the built-in example rostering problems (hospital ward, 3-shift plant, security post, fire station, 24/7 help desk). Use one as a starting point for the user's own roster.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
Generate optimized work shift schedules from staffing demand, availability and fairness rules.
Staff shift scheduler: fills the week fairly, flags clashes, finds cover, gives staff one link.
Optimize crew and workforce schedules, resource allocation, and routing with linear and mixed-inte…
Solve production, blending, transport and scheduling problems with LP and MIP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceGenerates legally-compliant weekly shift schedules for Korean workplaces through conversation, using OR-Tools CP-SAT to enforce labor laws such as the 52-hour weekly cap and minor worker protections.MIT
- AlicenseAqualityDmaintenanceEnables solving complex combinatorial optimization problems with logical and numerical constraints through multiple solvers (Z3, CVXPY, HiGHS, OR-Tools). Specializes in portfolio optimization, scheduling, resource allocation, and constraint satisfaction problems.55Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables MCP-capable agents to solve scheduling and integer optimization problems using Google OR-Tools, return proven-optimal or valid solutions, independently verify proposed solutions, and explain infeasible rule sets.MIT
- FlicenseNot gradedqualityDmaintenanceNegotiation math engine for AI agents. Computes Pareto frontiers, generates iso-utility counteroffers, and infers counterpart priorities. 9 tools for any multi-issue negotiation. Zero LLM tokens — pure MILP optimization.-
Glama MCP Gateway
Add one secure layer between your agents and this server.