Are you the author? Sign in to claim
MCP server for PeopleForce HR — Claude, Cursor, and any LLM client. 27 read-only tools by Empat.
A Model Context Protocol (MCP) server that connects Claude, Cursor, Claude Desktop, and any MCP-compatible LLM client to the PeopleForce HRIS / ATS.
27 read-only tools cover the PeopleForce v3 REST API — employees, time-off, recruitment, and all reference data — so your AI assistant can answer HR questions grounded in live company data without bouncing you back to the web app.
Built and maintained by Empat — a Ukrainian custom software development company. We ship this connector as open source to make AI-assisted HR automation a commodity for every PeopleForce customer.
PeopleForce is one of the fastest-growing HRIS platforms in Eastern Europe, but as of 2026 it has no official MCP connector. That means Claude, Cursor, and other LLM agents can't answer questions like:
jane.doe@example.com have left this quarter?"peopleforce-mcp fixes that. It is a minimal, read-only, fetch-based TypeScript server that lives on GitHub and plugs into any MCP client in a couple of commands.
find_employee_by_email workflow tool that paginates for you.api_request lets your agent hit any v3 GET endpoint not yet modelled.PeopleForce → Settings → Open API keys → Generate.
Pick the Company API key (full read access to employee data). Optionally restrict it to your IP range on the PeopleForce allow-list.
Requires Node.js 18 or newer and git.
git clone https://github.com/EmpatDevelopment/peopleforce-mcp.git ~/peopleforce-mcp
cd ~/peopleforce-mcp
npm install
npm run build
That produces ~/peopleforce-mcp/dist/index.js, which is the only file your MCP client needs to launch.
Claude Code
claude mcp add peopleforce --scope user \
--env PEOPLEFORCE_API_KEY=your_key_here \
-- node "$HOME/peopleforce-mcp/dist/index.js"
Claude Desktop — edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"peopleforce": {
"command": "node",
"args": ["/absolute/path/to/peopleforce-mcp/dist/index.js"],
"env": { "PEOPLEFORCE_API_KEY": "your_key_here" }
}
}
}
Cursor — paste the same JSON into ~/.cursor/mcp.json under mcpServers.
Detailed per-client guides with screenshots-friendly JSON snippets are in examples/.
All configuration is passed via environment variables.
| Variable | Default | Purpose |
|---|---|---|
PEOPLEFORCE_API_KEY | required | Your PeopleForce Company API key. |
PEOPLEFORCE_BASE_URL | https://app.peopleforce.io/api/public/v3 | Override if PeopleForce hosts you on a non-default endpoint. |
PEOPLEFORCE_TIMEOUT_MS | 15000 | Per-request timeout. Slow PeopleForce responses are aborted and retried. |
PEOPLEFORCE_MAX_RETRIES | 3 | Max automatic retries for 429 / 5xx / network timeouts. Set to 0 to disable. |
PEOPLEFORCE_RETRY_BASE_MS | 500 | Base for exponential backoff with full jitter. Retry-After headers are honoured. |
cd ~/peopleforce-mcp && git pull && npm install && npm run build
Restart your MCP client after each update.
"How many people are on probation right now, and which departments are they in?"
The model will call peopleforce_list_employees with status=probation, paginate through the results, and summarise.
Every tool is prefixed with peopleforce_ and is read-only. All list tools accept page (≥ 1) and per_page (≤ 100).
| Tool | Purpose |
|---|---|
list_employees | Paginated roster; filter by status (employed / probation / dismissed / …). |
get_employee | Full profile by numeric id. |
find_employee_by_email | Looks up an employee by work or personal email; paginates internally. |
list_employee_positions | Position / role history for one employee. |
list_employee_documents | Documents attached to one employee. |
list_employee_assets | Assets assigned to one employee. |
| Tool | Purpose |
|---|---|
list_leave_requests | Filter by employee_id, state (pending / approved / rejected / cancelled), leave_type_id. |
list_leave_types | Vacation, sick, optional holiday, etc. |
list_holidays | Official company holidays. |
| Tool | Purpose |
|---|---|
list_recruitment_vacancies | Open & closed jobs. |
list_recruitment_candidates | Candidates in the pipeline. |
list_recruitment_pipelines | Pipelines and their stages. |
list_recruitment_sources | Where candidates came from. |
list_departments, list_positions, list_locations, list_divisions, list_teams, list_job_levels, list_job_profiles, list_legal_entities, list_employment_types, list_genders, list_skills, list_competencies, list_assets, list_tasks.
api_request — raw GET against any /api/public/v3/<path> with an optional query object. Use it when the endpoint you need isn't modelled above, and consider opening a PR to promote it to a first-class tool.
This server requires a PeopleForce Company API key, which is effectively read access to your entire employee database. Read SECURITY.md for full guidance — tl;dr:
PEOPLEFORCE_API_KEY (env var or your MCP client's encrypted config).git clone https://github.com/EmpatDevelopment/peopleforce-mcp.git
cd peopleforce-mcp
npm install
npm test # unit + stdio smoke tests (no PeopleForce account required)
npm run build
PEOPLEFORCE_API_KEY=xxx node dist/index.js # run locally
Full contribution guide: CONTRIBUTING.md.
Does it write to PeopleForce? No. 0.x is read-only by design. Mutating tools would be opt-in via a future feature flag.
Does it store my data anywhere? No. The server is a stateless stdio proxy between your MCP client and the PeopleForce API. Requests never leave the process.
Is it rate-limited? PeopleForce rate-limits the API itself. The server surfaces any 429 responses as actionable errors; it does not retry automatically.
Which PeopleForce plans are supported? Any plan that exposes the v3 API. The Career key has a narrower scope (vacancies only) and will 404 on most tools — use a Company key.
Can I self-host it? Yes — it's pure Node.js 18+. Run node dist/index.js inside any container with the env var set.
Empat is a product-focused custom software development company based in Lviv, Ukraine. Since 2013 we have delivered 300+ projects across 23 markets — including fintech software development, AI software development, SaaS development, and custom mobile app development for Y Combinator alumni, Fortune 500 companies, and 19 Forbes 30 Under 30 founders.
Ways we work with clients:
Industries we serve: healthcare (remote monitoring, tele-consultations), fintech (payments, banking, commissions), social networks, education, entertainment & gaming, e-commerce.
5.0 on Clutch · Top 100 Fastest Growth 2026 · 300+ delivered products · $380M raised by clients in 2023.
👉 empat.tech — tell us what you're building.
MIT © 2026 Empat.
Run analytics queries on ClickHouse — explore schemas, execute SQL, fetch results
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
Google's universal MCP server supporting PostgreSQL, MySQL, MongoDB, Redis, and 10+ databases