Provides deterministic tools for California wage-hour compliance, attendance audits, and shift rostering via MCP.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent ā or use 1-click editor setup below.
š” Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Attendance Engine MCP.
resolve_dayResolve a single duty day from raw clock punches and a shift definition. Returns a structured DayResult with status, worked minutes, lateness, early-out, overtime, overnight handling, breaks-deducted minutes, data-integrity flags, and the resolved in/out segments.
resolve_periodResolve a sequence of duty days (a week, a pay period, a month). Returns per-day DayResult entries; optionally include an aggregated PeriodSummary with attendance rate and flag counts.
evaluate_break_complianceAnalyse meal & rest period compliance for a duty day under a jurisdiction rule pack. v0.1 ships the California pack (Labor Code §§ 226.7, 512; IWC wage orders). Returns per-meal/rest analysis, premium hours owed at the regular rate, waiver issues, and rebuttable-presumption risk per Donohue v. AMN.
apply_roundingProduce a rounded view of a resolved day's worked & overtime minutes without losing the exact-minute result. Useful for the California-style 'exact-minute is the baseline; rounding must be provably neutral' pattern ā keep both views and compare across populations.
generate_rosterGenerate a rotating roster from a built-in pattern ('2-2-3', '4-on-4-off', 'dupont', 'pitman') or a custom day cycle. Returns one assignment per calendar date with shift label and HH:MM window, or null on rest days.
list_rule_packsList bundled jurisdiction rule packs (meal/rest compliance). Returns each pack with id, human label, citation source, and full rule definitions.
Ask Claude "Did anyone miss a meal break last Tuesday?" ā and have it actually be right.
Every HR / payroll / time-tracking team eventually asks Claude (or Cursor, or Windsurf) something like:
"Rahim's punches yesterday were 09:00, 13:00, 14:00, and 18:00. Did he get his meal break under California rules?"
And the LLM does what LLMs do: it eyeballs the timestamps, mumbles something about "yes probably, his lunch looks fine," and moves on. Sometimes it's right. Sometimes it forgets that California requires the meal to start before the end of the 5th hour. Sometimes it counts a 25-minute break as compliant. Sometimes, for an overnight shift that crosses midnight, it just gives up.
You can't put that in front of an auditor. You can't ship it inside a payroll product. You can't trust it with overtime calculations that turn into back-pay liability if they're wrong.
A small Model Context Protocol server that gives your AI agent deterministic, tested, fixture-backed tools for:
The math lives in @attendance-engine/core ā a pure-function, zero-deps TypeScript library with 100% test coverage. This MCP server is the thin agent surface on top.
Two important properties:
Pick the MCP host you're already using. Same one-liner everywhere:
Edit ~/Library/Application Support/Claude/claude_desktop_config.json on macOS or %APPDATA%\Claude\claude_desktop_config.json on Windows:
Fully quit and relaunch Claude Desktop (Cmd-Q on macOS ā closing the window isn't enough).
~/.cursor/mcp.json:
~/.codeium/windsurf/mcp_config.json:
Launch the stdio binary directly:
The server speaks JSON-RPC over stdin/stdout ā that's the whole contract.
š¼ļø Scenario cards below are publish-ready SVG mockups (render inline on GitHub, npm, LinkedIn). Real-product screenshots can replace them when you capture them ā see
docs/screenshots/README.md.
You: "Sara was on the 22:00ā06:00 shift on June 1st. Punches: 21:54, 02:00, 02:30, 06:18. Apply California rules."
Claude (calls
evaluate_break_compliance): "Sara worked 7h54m on her duty date of June 1st (her clock-out fell on June 2nd but belongs to this shift). She took a 30-minute meal beginning at her 4-hour mark, which is compliant under California's mandate to start the first meal before the end of the 5th hour. Worked time spans midnight; flagged accordingly. She left 18 minutes past schedule ā that 18m counts as overtime."
You: "Run an
audit_period_compliancefor employee EMP-007 across June 2026. Here are 30 days of punches and shifts. Use California."Claude: "3 days at high presumption risk ā June 4, June 12, June 22. All three are late meals (started past the 5th hour). Total meal-period premium hours owed: 3. June 22 also drops below the 12-hour second-meal threshold. No rest-period violations detected."
You: "I have punches 09:00, 13:00, 14:00 for June 1st. Can I trust these?"
Claude (calls
diagnose_punches): "Recommendation: reject. The punch count is odd ā one in or out is missing. Without that, worked-time and overtime would be guesses. Also: every punch falls on a 5-minute boundary, which often indicates manual entry rather than a device read. Worth verifying with the source system before resolving."
You: "Build me a 4-on-4-off roster for July 2026."
Claude (calls
generate_roster): "31 days ā work days on July 1ā4, 9ā12, 17ā20, 25ā28 (12h day shifts, 07:00ā19:00). Rest days fill the gaps. Want me to assign team rotations across this pattern?"
| Tool | When you'd use it |
|---|---|
resolve_day | "What happened on this single day? Lateness, OT, segments, flags." |
resolve_period | "Roll up a week or a month: per-day results plus an aggregated summary." |
evaluate_break_compliance | "Did this person get their meal/rest breaks under California law? Is any premium owed?" |
audit_period_compliance | "Audit a whole pay period. Show me total premium hours, high-risk days, and the flag heatmap." |
apply_rounding | "Round worked/OT minutes to a unit ā and keep the exact view alongside it so I can prove neutrality." |
diagnose_punches | "Triage this raw punch stream. Should I trust it?" |
generate_roster | "Build a 2-2-3 / 4-on-4-off / DuPont / Pitman / custom rotation." |
list_rule_packs | "What jurisdictions are supported?" (currently CA; more arrive in minor releases) |
Resources you can paste into a chat:
| URI | What it is |
|---|---|
attendance://docs/overview | One-pager about the engine, time-zone rules, and how the tools compose. |
attendance://docs/api | Compact field-by-field API reference. |
attendance://rules/CA | The California rule pack as JSON ā meal/rest thresholds, waiver limits, premium caps, the citation source. |
Guided prompts (the host's / menu, or prompts/get):
analyse_timecard ā walks the model through the right tool calls to analyse a single duty day.roster_planner ā generates a roster and renders it as a Markdown table.Every ISO timestamp must carry its own offset:
2026-06-01T08:57:00+06:002026-06-01T08:57:00Z2026-06-01T08:57:00 (rejected ā the engine won't guess)The engine reduces everything to absolute instants on a single timeline. DST works because the offsets are explicit. The duty date and shift HH:MM are worksite local wall-clock ā match them to your business calendar, not to UTC.
For days with no punches (an absence, a holiday), pass policy.tzOffsetMinutes explicitly so the engine has something to anchor the shift window to.
Building your own host? Skip the CLI:
Factual signals from GitHub, npm, and our automated checks ā not a rating.
No reviews yet ā be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/arifur9993-attendance-engine-mcp)<a href="https://allmcps.com/mcp/arifur9993-attendance-engine-mcp"><img src="https://allmcps.com/api/badge/arifur9993-attendance-engine-mcp?style=directory" alt="Attendance Engine MCP on AllMCPs" /></a>