Tanda Workforce MCP Server
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Tanda Workforce MCP Server v4.0.1
A read-only MCP (Model Context Protocol) server for the Tanda / Workforce.com API. It exposes 12 consolidated tools. Every tool is privacy-filtered and returns at most 25 KB, so assistants like Claude can answer workforce questions without overflowing their context.
Security
Auth on every MCP route.
POST /mcp,GET /mcpandPOST /require an OAuth JWT orAuthorization: Bearer <MCP_SHARED_SECRET>. Unauthenticated calls get401.Read-only. The Tanda client refuses any non-GET request.
Least-privilege scopes. The server requests
me roster timesheet department user cost leave. It never requestsfinancialorpersonal.unavailabilityis off by default because Workforce.com's OAuth fails when it is requested; add it toTANDA_SCOPESonly if your OAuth app supports it.Privacy by default. User records are whitelisted, and
date_of_birth,phone,email,legal_*andhourly_rateare returned only when thefieldsparameter names them.passcode,tax_*,bank_*andsuper_*are never returned.
See docs/SECURITY.md.
Related MCP server: Keka MCP Server
Tools (12)
Every list tool returns { summary, rows, page }. rows holds at most 50 entries and the whole response is at most 25 KB. When rows are cut, the response sets truncated: true and includes page.next_offset and a how_to_page hint. Time fields come as unix seconds plus *_iso strings in America/New_York, and hours is a decimal. from/to ranges up to 62 days are split into 7-day Tanda calls internally.
Tool | Returns / when to use |
| Locations with departments nested, staff counts, bookkeeping and Supervisor flags. Use it first to resolve names to ids. Cached for 24h, then revalidated with ETag. |
| Privacy-filtered staff, filtered by department, site, status or name. |
| Rostered shifts ( |
| Worked time from |
| Who is clocked in now ( |
|
|
| Scheduled vs actual hours and cost, with variance, grouped by |
| Supervisor coverage. |
| Checks proposed shifts against rosters, leave, unavailability, the 12h shift limit, the 40h week and double-booking. Each check fails soft: a missing scope skips that check and adds |
| Audit list: shifts open more than 12h, zero-length shifts, pending leave already in the past, unapproved timesheet $ by site, active staff with no award template, calendar workweeks over 40h, and |
| Payroll export preview with |
| Version history from |
A supervisor is any user rostered to a department named Supervisor or Supervisors (case-insensitive). The bookkeeping sites 281737 (One Time Projects), 301754 (Floater) and 396358 (MCP Test) are flagged, and analytics tools exclude them by default.
Deprecated names (one release)
The v3 tool names (for example tanda_get_daily_stats, tanda_get_staff_by_department, tanda_get_timesheets) and the interim action-based names (tanda_users, tanda_reference, …) still work. They are translated to the new tools, and the response carries a deprecation notice. Each use is logged, and the counts appear under deprecated_alias_usage in GET /stats. Aliases are not listed in tools/list unless MCP_LIST_ALIASES=true.
tanda_get_shift_limits is removed: Tanda's endpoint returns first/last shifts, not limits. Use tanda_exceptions instead.
Quick Start
git clone https://github.com/hakeemrabiuDFW/Tanda-Workforce-MCP-Server.git
cd Tanda-Workforce-MCP-Server
npm install
cp .env.example .env # fill in values
npm run build && npm startEnvironment
Variable | Required | Purpose |
| yes | Tanda OAuth app |
| prod | OAuth callback (auto-detected on Railway) |
| yes | ≥ 32 chars |
| no | Default |
| no | Bearer-secret auth for server-to-server, Claude Desktop and the smoke test |
| for export preview | Payroll export format name |
| no | Default |
| no | Comma-separated user ids never counted or suggested as supervisors (e.g. bookkeeping and admin-only users) |
| no | Default |
| no | Sites one roving supervisor covers at once. Default 5 |
| no | First day of the overtime workweek ( |
| no | How far back |
| no | Default |
| no | Client-side limit, default 80 (Tanda allows 100/min shared across password tokens) |
| no |
|
Connecting to Claude
Claude.ai: add https://your-domain.com/mcp as a connector. The 401 response with WWW-Authenticate: Bearer resource_metadata=… starts the OAuth flow (discovery, dynamic registration, PKCE).
Claude Desktop / scripts:
{
"mcpServers": {
"tanda-workforce": {
"url": "https://your-domain.com/mcp",
"headers": { "Authorization": "Bearer <MCP_SHARED_SECRET or JWT from /auth/login>" }
}
}
}Development
npm test # unit + integration tests (Tanda stubbed; includes an 84-site / 70-user size check)
npm run build
MCP_URL=https://your-domain.com/mcp MCP_TOKEN=<secret> npm run smoke [from] [to]npm run smoke calls all 12 tools against a running server and prints only the shape and size of each response (no row values). It exits non-zero if a tool errors, exceeds 25 KB, or returns date_of_birth/passcode.
Releasing
Changes reach production through staging first:
Open a pull request into
staging. CI runs typecheck, tests and build.Merge it. Build and deploy (
.github/workflows/deploy.yml) tests again, pushes the image as:stagingand:<commit>, redeploys thetanda-mcp-stageRailway service, and waits until its/healthreports the new commit.Check staging (
https://tanda-mcp-stage-production.up.railway.app), for example withnpm run smoke.Merge the release pull request from
stagingintomain. The Release PR workflow (.github/workflows/release-pr.yml) opens it as soon asstaginghas changesmainlacks, lists the change PRs it carries, and keeps it updated; each release gets its own PR. Merging it ships:productionto the production service.
The deploy step needs a Railway project token as the RAILWAY_TOKEN repository secret; without it the image is pushed but not deployed. To require approval for production, add reviewers to the production environment in the repository's settings. To roll back, redeploy an earlier deployment in Railway, or point the service at an earlier :<commit> image.
Project Structure
src/
auth/ OAuth + MCP route auth (JWT or shared secret)
config/ environment, scopes
mcp/
handler.ts JSON-RPC (initialize, tools/*, resources/*, prompts/*)
tools/ one file per tool + aliases.ts + index.ts
guard.ts 50-row / 25 KB response guard
privacy.ts user field whitelist + recursive redaction
context.ts cached org/people lookups
tanda/ read-only client (ETag cache, rate limiter, 7-day chunking)
utils/ logger, time (unix seconds <-> America/New_York)
scripts/smoke.mjsSee CHANGELOG-v4.0.md and DEPLOYMENT.md.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Connect AI assistants to Talentflake for time, attendance, leave, and expenses.
1Connects AI assistants to TrackingTime for querying time entries, projects, tasks, customers, and team data using natural language.
Connect AI assistants to Edusign attendance, courses, learners, documents, and API docs via OAuth.
Calendars, tasks, contacts, bookings and agent inboxes for your assistant. EU-hosted, OAuth.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with BambooHR's API through natural language queries. Provides access to employee data, time off management, company files, and HR operations with comprehensive tools for workforce management.108 npm1MIT
- AlicenseNot gradedqualityDmaintenanceIntegrates with Keka HR platform to manage employee profiles, attendance, leave applications, payslips, and holidays through OAuth2-authenticated API tools.2,203 npm1MIT

TrackingTime MCPofficial
AlicenseNot gradedqualityBmaintenanceConnects AI assistants to TrackingTime for querying time entries, projects, tasks, customers, and team data using natural language.16 npmMIT- AlicenseNot gradedqualityCmaintenanceEnables natural-language interaction with the full Planday API, including all 125 operations, composed timesheet reporting, staff cost summaries, and safe write access controls.MIT