Skip to main content
Glama

mcp-leave

MCP server for a staff leave and PTO tracker: requests, approvals, balances, who is out and a calendar export. Employee leave and PTO: balances, approvals, calendars, and who-is-out summaries.

Works with Claude Desktop, Claude Code, Cursor and any Model Context Protocol client. Runs on your own machine, or hosted with no install.

Product page: https://mcp.zovo.one/s/leave — what it does, the tools it exposes, and a live token endpoint.

Install

Hosted, nothing to install. Get a token from https://mcp.zovo.one/mcp/connect (the connect page) or https://mcp.zovo.one/mcp/token (the same token as JSON); a free anonymous one is issued on the spot and a Pro key works the same way. Then point an MCP client at https://mcp.zovo.one/mcp/leave over streamable-http and send the token as Authorization: Bearer <token>.

If your client cannot set headers, put the token in the path instead: https://mcp.zovo.one/mcp/leave/t/<token>. Both forms work. The bare URL with no token answers 401 on tools/call, so the token is not optional.

Claude Desktop, one click. Download leave.mcpb from the latest release and double-click it.

From source. The mirror is self-contained: every @theluckystrike/* dependency is vendored, so a fresh clone builds with no extra setup.

git clone https://github.com/theluckystrike/mcp-leave.git
cd mcp-leave
npm install && npm run build

Then point your client at the built entry point:

{
  "mcpServers": {
    "leave": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-leave/dist/index.js"]
    }
  }
}

@theluckystrike/mcp-leave is not published on npm yet, so an npx -y @theluckystrike/mcp-leave command will fail. The three paths above are the working ones and each is exercised by CI.

leave demo

Read-only mirror of mcp-servers/servers/leave. See MIRROR.md.

theluckystrike/mcp-leave MCP server

In the official MCP Registry (io.github.theluckystrike/leave). Employee leave/PTO tracking for solopreneurs and small studios: who is off, when, and how many days each person has left. Add employees with an annual allowance and any carried-over days, log vacation/sick/personal requests (including half-days), approve or reject them, and read balances, conflicts and who-is-out calendars directly from your MCP client — Claude Desktop, Cursor, or any MCP host.

Related MCP server: Employee Leave Management MCP Server

Tools

  • "leave_employee_add" — add an employee with annualAllowance (and optional carriedOver).

  • "leave_request" — log a leave request (employee, type, start, end, optional halfDay, reason).

  • "leave_approve" / "leave_reject" — decide a request; decisions are recorded with dates.

  • "leave_cancel" — cancel a pending or approved request (keeps the audit trail).

  • "leave_balance" — allowance, carried, approved, pending, committed and remaining days per employee.

  • "leave_out_range" — who is out in a date range: day-by-day calendar rows plus person-days.

  • "leave_list" — all employees and requests, filterable by employee and status.

  • "leave_import" (Pro) — bulk-create requests from CSV; conflicting rows are rejected one by one, valid rows still apply.

  • "leave_export_ics" (Pro) — export approved leave as an RFC5545 .ics calendar.

The one rule that decides everything else

A day is committed when the request that spends it is approved or pending. Balance is allowance + carried − approved − pending. Cancelling returns the days immediately; rejecting never charged them.

Overlapping requests for the same person are refused at creation time — both pending and approved count — so the calendar never contains two requests claiming the same day.

Free vs Pro

The free tier is the full CRUD surface: employees, requests, approvals, balances, calendars — watermark-free, no request limits. Pro (an MCP_LICENSE_KEY, activate with "license_activate") adds bulk CSV import and ICS calendar export. Run "license_status" to see the current tier.

Quick start

{
  "mcpServers": {
    "leave": { "command": "npx", "args": ["-y", "@theluckystrike/mcp-leave"] }
  }
}

Data lives in a single JSON store (~/.mcp-leave/store.json, or $XDG_DATA_HOME/mcp-servers/leave/store.json when set), written atomically under a file lock, so two clients on one machine never interleave writes.

Use these docs as an MCP server

Any MCP client (Claude, Cursor, Windsurf, VS Code) can read this repository's documentation directly via GitMCP — no install:

Available Tools

12 tools
leave_approveApprove leaveA

Approve a pending leave request by id. Also used to re-open a rejected one. Nothing to approve on an already-approved request.

Inputs: request (required), comment.

leave_balanceLeave balanceA

Show one employee's leave balance: allowance + carried-over, minus approved and pending, as whole days plus a possible half day. Remaining is rounded down to whole days on the report.

Inputs: employee (required).

leave_cancelCancel leaveA

Cancel a pending or approved request by id, keeping its record with status cancelled. Differs from leave_reject in intent (voluntary withdrawal). Nothing happened if already cancelled.

Inputs: request (required), reason.

leave_employee_addAdd an employeeA

Add an employee to the leave tracker and return their EMP-NNNN id. Give their annual paid-leave allowance in whole days and any days carried over from last year. Balances charge approved plus pending leave against allowance + carried-over. Free tier: unlimited.

Inputs: name (required), annualAllowance (required), email, carriedOver.

leave_export_icsExport calendar (Pro)A
Read-onlyIdempotent

Pro. Export all APPROVED leave as an .ics calendar (RFC5545). Returns the calendar text; pass path to also write it to a local file. watermark-free.

Inputs: path.

leave_importBulk import requests (Pro)A

Pro. Bulk-create leave requests from a CSV/TSV. First row is a header: employee,type,start,end,halfDay,status,reason. status may be omitted (defaults to pending) or be approved/rejected. Each request is still checked for overlap conflicts; a conflicting row is reported, not applied. watermark-free, full CRUD.

Inputs: csv (required).

leave_listList employees or requestsB
Read-onlyIdempotent

List all employees, or all leave requests (optionally filtered by employee and/or status). Omit the filter to list requests.

Inputs: status, employee.

leave_out_rangeWho is out?A

Who is out in a date range: start and end are inclusive YYYY-MM-DD. Each employee appears once per day; pending requests count as a plan. Use for coverage, calendars and absence summaries. Free tier: unlimited.

Inputs: end (required), start (required).

leave_rejectReject leaveA

Reject or cancel a leave request by id. A pending or approved request becomes rejected; a rejected one can be reopened via leave_approve. Use leave_cancel (via reject with reason) for voluntary withdrawal.

Inputs: request (required), reason.

leave_requestRequest leaveA

Create a leave or PTO request and return its LV-NNNN id. type is vacation, sick, unpaid or parental. start and end are inclusive YYYY-MM-DD dates; halfDay charges half a day for the whole span. A pending request is refussed if it would overlap another approved or pending request of the same employee. Free tier: unlimited requests.

Inputs: end (required), type (required), start (required), employee (required), +2 more.

license_activateActivate licenseA

Activate a Pro key (MCPL1.xxx.yyy) from checkout: verified offline against a built-in public key, saved to your config file. A wrong, malformed or expired key is refused, unsaved. license_status reads it back.

Inputs: key (required).

license_statusLicense statusA

Report this server's licence state: product, tier free or pro, licence id, expiry, the key source and the upgrade URL. No arguments, no network. Explains a free-tier refusal; license_activate installs a key.

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 12 tools

    Disambiguation3/5

    Most tools target distinct actions, but the approve/reject/cancel trio blurs together: leave_approve also reopens rejected requests, and leave_reject's description says voluntary withdrawal should use leave_cancel 'via reject with reason', which contradicts the stated separation. The descriptions work hard to disambiguate, but an agent could still misselect between reject and cancel.

    Naming Consistency3/5

    The leave_* family mostly follows verb-first verb_noun (leave_approve, leave_list, leave_import), but leave_employee_add inverts the order and leave_export_ics adds a suffix. The license_status/license_activate pair uses noun_verb, opposite of the dominant pattern.

    Tool Count4/5

    Twelve tools is well-scoped for a leave tracker, with each operation (request, approve, reject, cancel, list, balance, coverage, import/export) earning a place. The two license tools are peripheral but justified by the free/pro tier model.

    Completeness3/5

    Core lifecycle is covered (create, approve, reject, cancel, list, balance, coverage, import/export), but there is no way to edit an existing request's dates or type, no get-single-request tool, and no employee management beyond add (no list/update/remove of employees).

    Maintenance

    ActivitySlowing
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables natural-language-based employee leave management including leave balance checks, leave applications, approvals, and history retrieval through an MCP-compatible client.
      -
    • F
      license
      B
      quality
      D
      maintenance
      Enables managing employee leave requests including checking balance, applying for leave, and viewing history.
      3
      -