io.github.chrischall/workday-mcp
Read-only Workday for Claude — fetch tasks, pay, benefits via your signed-in session
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
workday-mcpclaude mcp add workday-mcp -e 'WORKDAY_TENANT=<WORKDAY_TENANT>' -e 'WORKDAY_HOST=<WORKDAY_HOST>' -e 'WORKDAY_WS_PORT=<WORKDAY_WS_PORT>' -e 'WORKDAY_DEBUG=<WORKDAY_DEBUG>' -- npx -y workday-mcp@1.2.0
{
"mcpServers": {
"workday-mcp": {
"command": "npx",
"args": [
"-y",
"workday-mcp@1.2.0"
],
"env": {
"WORKDAY_TENANT": "<WORKDAY_TENANT>",
"WORKDAY_HOST": "<WORKDAY_HOST>",
"WORKDAY_WS_PORT": "<WORKDAY_WS_PORT>",
"WORKDAY_DEBUG": "<WORKDAY_DEBUG>"
}
}
}
}
Environment variables
WORKDAY_TENANTrequired Workday tenant slug, e.g. `acme` for https://wd5.myworkday.com/acme.WORKDAY_HOSTWorkday data-center host (default wd5.myworkday.com).WORKDAY_WS_PORTOverride the fetchproxy WebSocket port (default 37149).WORKDAY_DEBUGSet to 1 to log verbose request detail to stderr.
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
workday-mcp
Read-only MCP server for Workday. Reads your
Workday org chart, worker profiles, pay, benefits, performance, and any task or
data card, and returns them as structured JSON. Every request routes through your own signed-in
*.myworkday.com tab via the ContextMint Bridge
browser extension, reusing your existing SSO-authenticated session.
⚠️ Workday gives employees no personal API. This server reads the same internal
*.htmldendpoints the Workday web app calls, dispatched through your own signed-in browser tab. It is read-only and touches only your own data. Check your employer's acceptable-use policy. Use at your own discretion.🤖 This project was developed and is maintained by AI (Claude Code).
Why a bridge instead of the official API?
The official Workday REST/SOAP API requires a tenant administrator to register an OAuth API client + Integration System User — an employee can't self-provision it. Tenants also sit behind corporate SSO (Ping/Okta/Entra) with MFA, so there's no server-side login. The only surface an employee can reach for their own data is their live browser session, which is what this server relays.
Install
See SKILL.md for full setup. In brief:
{
"mcpServers": {
"workday": {
"command": "npx",
"args": ["-y", "workday-mcp"],
"env": { "WORKDAY_TENANT": "your-tenant-slug" }
}
}
}
Then install ContextMint Bridge from its
releases page
(Chrome: unzip the chrome zip and load it unpacked in chrome://extensions;
Safari is not available yet — it will ship inside the ContextMint app, which has
no public download link, so use Chrome for now) and sign into Workday in your browser.
ContextMint Bridge is the fetchproxy browser extension under its new name, from
the same maintainer — fetchproxy's own
README points to it. Its
source is public at https://github.com/nullnet-app/contextmint-bridge: build it
yourself, or check a release zip against the .sha256 file published beside it
(shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256).
Tools
| Tool | What it does |
|---|---|
workday_get_apps | List your Workday apps with launchable task ids — the discovery entry point |
workday_open_app | Open an app by name ("Talent and Performance", "Absence") and follow it down to the child cards holding its real content |
workday_get_task | Read any task/data card by id or path → fields, full table rows, references, related tasks, export links. expand: true crawls hub pages |
workday_get_org_chart | Your reporting chain — each person with title, location, report count, and a profileUri to drill into |
workday_get_worker | A worker's profile: the catalog of everything readable about them (9 sections, ~40 named tasks) |
workday_get_worker_task | Open one named item from that catalog — "Compensation", "Performance Reviews", "Management Chain" |
workday_get_my_profile | The same catalog, for yourself |
workday_fetch | Raw .htmld read with secrets redacted — the escape hatch for pages the parser doesn't model yet |
workday_graphql | Read-only GraphQL against Workday's PEX surface (mutations refused). The only route to Inbox / search |
workday_healthcheck | Verify the bridge + session end-to-end with an actionable hint |
The parser understands seven Workday page families — data cards, grids
(real tables, with chunking and export links), form-style detail pages, worker
profiles, org charts, app hubs, and report prompt forms — and labels each page
with its kind. See docs/WORKDAY-API.md.
Manager quick start
workday_get_org_chart → who reports where, with profileUris
workday_get_worker { worker: "<profileUri>" } → that person's full catalog
workday_get_worker_task { worker: "…", task: "Compensation" }
workday_open_app { app: "talent" } → a whole app hub, crawled
All ids are discovered at runtime from your own app menu and org chart — nothing tenant-specific is hardcoded, so this works on any Workday tenant.
Development
npm install
npm test # vitest
npm run build # tsc --noEmit + esbuild bundle → dist/bundle.js
The widget-tree parser (src/parse.ts) is the durable core; see
docs/WORKDAY-API.md for the captured endpoint shapes and
schema. License: MIT.
Frequently asked questions
What is io.github.chrischall/workday-mcp?
Read-only Workday for Claude — fetch tasks, pay, benefits via your signed-in session
How do I install io.github.chrischall/workday-mcp?
It runs on your machine. In Claude Code: claude mcp add workday-mcp -e 'WORKDAY_TENANT=<WORKDAY_TENANT>' -e 'WORKDAY_HOST=<WORKDAY_HOST>' -e 'WORKDAY_WS_PORT=<WORKDAY_WS_PORT>' -e 'WORKDAY_DEBUG=<WORKDAY_DEBUG>' -- npx -y workday-mcp@1.2.0. For other clients, paste the JSON configuration from this page into their MCP settings.
Does io.github.chrischall/workday-mcp need an API key?
Yes. It expects WORKDAY_TENANT, which you set in its configuration.
Is io.github.chrischall/workday-mcp open source?
Yes. Its code is on GitHub under the MIT license.
Who maintains io.github.chrischall/workday-mcp?
It is published by chrischall. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.