mcp-server-personio
Integrates with the Personio HR API, providing employee self-service tools (profile, absences, attendances, documents) and HR workbench tools (persons, employments, absences, attendances, projects, compensation, documents, org data, recruiting) with per-user scoping and two profiles.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-server-personio show my upcoming absences"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-server-personio
MCP server for the Personio HR API with two profiles and per-user scoping.
Profiles
One image, selected by PERSONIO_PROFILE:
employee— self-service, hard-scoped to the requesting user:personio_get_my_profile,personio_get_my_absences(+ balances),personio_request_absence,personio_get_my_attendances,personio_record_attendance(WORK/BREAK periods, project tagging),personio_get_my_documents(incl. e-signature status + download),personio_list_absence_types,personio_list_projects,personio_whoami. The gateway forwards the verified user email (X-MCP-User, honored whenPERSONIO_TRUST_FORWARDED_USER=true); the server resolves it to a person id and pins every call to it — Personio has no on-behalf-of mechanism, so this scoping is enforced here. Unknown emails fail closed.hr— the HR workbench: persons + employments (list/get/update), absences and attendances for anyone (list/create/delete), projects (full CRUD + members), compensation entries/types/jobs/salary bands (read-only — API-created compensation can never be corrected, so creation is deliberately not exposed), documents (list/download/upload), org data (legal entities, departments, teams, cost centers, workplaces), custom reports, recruiting reads (applications/candidates/jobs/categories), and an attribute-whitelist diagnostic. Write tools additionally requirePERSONIO_ENABLE_WRITES=true.
Related MCP server: MCP Employee Identity Server
Guarantees
skip_approvalis never sent — absence/attendance writes always enter Personio's normal approval workflow (the v2 default; v1's silent-bypass default is one reason this server is v2-first).No delete-person tool. Employee-profile tools never accept foreign person ids.
Legal-entity scope (
PERSONIO_HR_LEGAL_ENTITY=<id>, HR profile): every person-addressed tool is confined to employees of that entity. Tools addressed by another id resolve the owning person first and fail closed when it cannot be determined: absence/attendance periods are fetched to read their person,balanceForEmailis resolved to a person,personio_upload_document's v1employeeIdis mapped to a person via its email, project membership changes checkpersonId, andpersonio_manage_documentrequiresownerId(verified against the owner-filtered document list) on a scoped instance.Email lookups require exactly one person whose email matches case-insensitively; ambiguous or non-matching results fail closed.
Caller-supplied ids used in URL paths are rejected if empty,
./.., or contain/,\,?,#or their percent-encoded forms.HTTP transport:
MCP_HTTP_TOKENis compared in constant time. WithPERSONIO_TRUST_FORWARDED_USER=truethe HTTP server refuses to start unlessMCP_HTTP_TOKENis set, since the forwardedX-MCP-Userheader would otherwise be accepted from any caller.Only credential-whitelisted attributes are returned by Personio —
personio_list_attributesshows what your credential can see (missing attributes are omitted silently, not errored).
Not possible via Personio's public API
Performance, surveys, whistleblowing, onboarding checklists, workflow automations (beyond outbound webhooks), e-signature initiation, and approving pending absence requests have no public API — those remain in the Personio UI.
Auth
One client_id/client_secret pair (Settings → Integrations → API credentials) drives both API generations: OAuth2 client-credentials against /v2/auth/token (form-encoded) for v2, and the stable 24h papi- token from /v1/auth for the two v1-only flows (absence balances, document upload).
Run
npm install
npm run dev # stdio
npm run dev:http # streamable HTTP on :3000/mcp (stateless)
npm testDocker images: ghcr.io/borgels/mcp-server-personio (published on push to main).
Available Tools
10 toolspersonio_get_my_absencesMy Absences (Personio)BRead-onlyIdempotent
Your absence periods; includeBalance=true also returns your remaining balance per absence type.
Inputs: limit, cursor, endsBefore, startsAfter, +1 more.
personio_get_my_attendancesMy Attendances (Personio)CRead-onlyIdempotent
Your tracked work and break periods.
Inputs: limit, cursor, endsBefore, startsAfter.
personio_get_my_documentsMy Documents (Personio)BRead-onlyIdempotent
Your HR documents with e-signature status; set documentId+download=true to fetch content.
Inputs: limit, cursor, download, maxBytes, +2 more.
personio_get_my_profileMy Profile (Personio)ARead-onlyIdempotent
Your own HR master data and employment. Only credential-whitelisted attributes are returned.
Inputs: no named parameters.
personio_list_absence_typesList Absence Types (Personio)ARead-onlyIdempotent
Available absence types and their ids (needed for absence requests).
Inputs: limit, cursor.
personio_list_projectsList Projects (Personio)BRead-onlyIdempotent
Time-tracking projects (for tagging attendance).
Inputs: limit, cursor.
personio_record_attendanceRecord Attendance (Personio)A
Record a WORK or BREAK period for yourself (breaks are separate periods). WORK periods can be tagged with a projectId. Goes through the approval workflow; max 24h per period.
Inputs: end (required), type (required), start (required), comment, +1 more.
personio_request_absenceRequest Absence (Personio)A
Submit an absence request for yourself (vacation etc.). Half days via startHalf/endHalf; omit endDate for open-ended. Always goes through the normal approval workflow.
Inputs: startDate (required), absenceTypeId (required), comment, endDate, +2 more.
personio_search_capabilitiesSearch Personio CapabilitiesARead-onlyIdempotent
Search the Personio MCP server capabilities and examples. Use this first when deciding which tool to call.
Inputs: limit, query.
personio_whoamiWho Am I (Personio)ARead-onlyIdempotent
Show which Personio person this session is scoped to.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Each tool has a clearly distinct purpose: viewing vs. requesting absences, listing reference data, recording attendance, etc. No two tools overlap in functionality.
All tools follow a consistent 'personio_verb_noun' snake_case pattern, with verbs like 'get_my', 'list', 'record', 'request', 'search', and 'whoami'.
With 10 tools, the set is well-scoped for an HR self-service MCP server, covering common employee actions without being overwhelming.
The tools cover core HR self-service operations (view/request absences, view/record attendances, view documents/profile, list reference data). Missing cancellation or update actions, but the domain is adequately covered for typical use.
Maintenance
Related MCP Connectors
MCP server for SmartHR — employees, departments, dependents and employee invitations.
MCP server for Talenta — read employee, attendance, leave, payroll and recruitment data.
MCP server for MOCO business software: time tracking, projects, budgets, and invoicing via API
isolved and ApplicantPro jobs, tenant discovery, and change detection as an MCP server.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP Server that provides access to Personio's HR and personnel data through the Personnel API, allowing interaction with employee records, HR systems, and personnel management functions.-
- AlicenseNot gradedqualityDmaintenanceThis MCP server enables AI-assisted professional profile generation by connecting to verified employee work data (skills, career history, certifications, projects) from employer HCM systems.MIT
- FlicenseAqualityDmaintenanceMCP server for the Keka HRM API, enabling HR operations like employee management, leave, attendance, payroll, recruitment, and PSA.17-
- AlicenseNot gradedqualityDmaintenanceMCP server for the HR platform 'МояКоманда' that enables AI assistants to access and interact with HR data like employees, teams, calendar, absences, requests, knowledge base, surveys, and more via its REST API.MIT