Back to Guides

HR WORKS MCP Server — Personalverwaltung & Lohn für KI-Agenten

HR WORKS via MCP an jeden KI-Agenten anbinden. 31 vorgefertigte Tools auf der v2 REST API: Mitarbeiter, Abwesenheiten, Krankheit, Arbeitszeiten, Projekte, Bewerber. Die Freiburger HR-Plattform, KI-tauglich.

Pre-built adapter available on AnythingMCP Cloud

Skip the self-hosted setup — install this adapter in one click with a free trial. No credit card required.

Install on Cloud — Free Trial

HR WORKS für KI-Agenten

HR WORKS (vormals HRworks) ist die SaaS-HR-/Lohnplattform aus Freiburg, eingesetzt von ~20.000 KMU im DACH-Raum. Die v2 REST API legt den vollen operativen Datenbestand offen — Mitarbeiter, Abwesenheiten, Krankheiten, Arbeitszeiten, Homeoffice, Projekte, Bewerber, Organisationseinheiten, Feiertage, Kostenstellen — und AnythingMCP packt alles in einen drop-in MCP-Adapter mit 31 vorgefertigten Tools.

Warum ein MCP-Adapter für HR WORKS

HR WORKS bietet keinen langlebigen API-Key. Stattdessen wird {accessKey, secretAccessKey} an /v2/authentication gepostet und ein 15-minütiger JWT zurückgegeben, der dann als Authorization: Bearer <token> auf jeden weiteren Aufruf gesetzt wird. Diese kurze Token-Lebensdauer in Kombination mit per-Tenant-Rate-Limits und dem Dual-Identifier-Muster (Personalnummer oder Username auf den meisten Endpunkten) bringt fast jede DIY-Integration zum Stolpern.

Der AnythingMCP-Adapter erledigt:

  • Den Bearer-Token-Vertrag (Sie liefern den Token, der Adapter sendet ihn auf jedem Aufruf)
  • Sowohl Produktion als auch die api.demo-hrworks.de-Sandbox über HRWORKS_BASE_URL
  • Die optionalen personIdentifierType-/usePersonnelNumbers-Parameter, wo zutreffend
  • Die 1-Jahres-Maximalintervall-Regel auf Listing-Endpunkten
  • Einen Live-Integrationstest, der beweist, dass der Bearer-Header wirklich injiziert wird (InvalidBearerTokenError statt MissingAuthorizationHeaderError)

Schnelleinrichtung

Schritt 1: AnythingMCP deployen

git clone https://github.com/HelpCode-ai/anythingmcp.git
cd anythingmcp && docker compose up -d

Schritt 2: JWT aus HR WORKS holen

In der HR-WORKS-Verwaltung: Einstellungen → API → Access Key erzeugen für accessKey + secretAccessKey. Dann Token tauschen:

curl -X POST https://api.hrworks.de/v2/authentication \
  -H 'Content-Type: application/json' \
  -d '{"accessKey":"YOUR_ACCESS_KEY","secretAccessKey":"YOUR_SECRET_ACCESS_KEY"}'

Antwort: {"token": "eyJ..."}. Token-Lebensdauer ~15 Minuten — für Kurz-Workflows reicht der gleiche Token; für lang laufende Agenten diesen Adapter in einen Proxy mit automatischem Refresh wickeln.

Schritt 3: Adapter importieren

http://localhost:3000/connectors/store öffnen, HR WORKS importieren und JWT in HRWORKS_TOKEN einfügen.

Für Sandbox zusätzlich HRWORKS_BASE_URL=https://api.demo-hrworks.de setzen und Sandbox-Credentials nutzen.

Schritt 4: KI-Agent verbinden

{
  "mcpServers": {
    "hrworks": {
      "url": "http://localhost:4000/mcp"
    }
  }
}

Verfügbare Tools (31)

Konnektivität & Konfiguration

| Tool | Was es zurückgibt | |------|-------------------| | hrworks_health_check | API-Erreichbarkeit — keine Auth nötig | | hrworks_list_organization_units | Alle aktiven Organisationseinheiten | | hrworks_get_organization_unit | Vollständiger Org-Unit-Datensatz | | hrworks_list_permanent_establishments | Betriebsstätten | | hrworks_list_holidays | Feiertage pro Region/Jahr | | hrworks_list_cost_centers | Im Mandanten konfigurierte Kostenstellen |

Personen

| Tool | Was es zurückgibt | |------|-------------------| | hrworks_list_persons | Mitarbeiter-Verzeichnis mit Filtern | | hrworks_get_person | Vollständiger Mitarbeiter-Datensatz | | hrworks_list_persons_master_data | Stammdaten (HR-relevante Attribute) | | hrworks_get_persons_today | Snapshot der heute Aktiven | | hrworks_list_present_persons | Aktuell anwesende Personen (Büro/Remote) | | hrworks_get_leave_account | Urlaubskonto-Stand pro Person |

Abwesenheiten & Zeit

| Tool | Was es zurückgibt | |------|-------------------| | hrworks_list_absences | Abwesenheiten über ein Datumsintervall | | hrworks_list_absence_types | Konfigurierte Abwesenheitsarten | | hrworks_list_vacation_types | Urlaubsarten-Katalog | | hrworks_list_sick_leaves | Krankmeldungen über ein Datumsintervall | | hrworks_list_sick_leave_types | Krankheitskategorien | | hrworks_list_remote_work | Homeoffice-/Remote-Einträge | | hrworks_list_working_times | Arbeitszeiteinträge (max. 1 Jahr / 31 Tage bei interval=days) | | hrworks_list_time_recording_regulations | Geltende Zeiterfassungs-Regelungen |

Projekte & Recruiting

| Tool | Was es zurückgibt | |------|-------------------| | hrworks_list_projects | Projekte mit Status | | hrworks_get_project | Vollständiger Projekt-Datensatz | | hrworks_list_project_customers | An Projekte gehängte Kunden | | hrworks_list_job_applications | Offene Bewerbungen | | hrworks_list_posts | Stellenanzeigen | | hrworks_get_post | Vollständige Anzeige inkl. Beschreibung | | hrworks_list_applicants | Bewerber in der Pipeline | | hrworks_get_applicant | Vollständiger Bewerber-Datensatz |

KI-Agent Anwendungsfälle

  • „Wer ist nächste Woche im Engineering im Urlaub?" — Manager-Selfservice für Abwesenheiten
  • „Wie viele Krankheitstage hatte das Lager in Q1?" — HR-Analytik
  • „Zeige Arbeitszeit-Summen für Jane Doe im März 2026" — Überstunden / Lohn-Vorbereitung
  • „Liste aktive Bewerber für die Berliner Frontend-Stelle" — Recruiter-Handoff
  • „Welche Mitarbeiter waren heute im Freiburger Büro anwesend?" — Facility-/Sicherheits-Sicht

Identifier-Konventionen

Die meisten personenbezogenen Endpunkte akzeptieren entweder die HR-WORKS-Personalnummer oder den Username. Nutzen Sie die optionalen personIdentifierType-/usePersonnelNumbers-Parameter, wenn der vorhandene Identifier nicht der Default ist — der Adapter reicht sie durch.

Datumsintervalle: 1-Jahres-Maximum

hrworks_list_absences, hrworks_list_sick_leaves, hrworks_list_remote_work und hrworks_list_working_times benötigen ISO beginDate/endDate (YYYY-MM-DD). Die HR-WORKS-API begrenzt die Spanne auf 1 Jahr (oder 31 Tage bei interval=days). Für längere Zeiträume jahresweise paginieren und client-seitig aggregieren.

Token-Refresh — bekannte Limitierung

Dieser Adapter sendet einen einzigen statischen Bearer-Token. Wenn der JWT abläuft (~15 Min), antwortet die API mit 401 und Sie müssen einen frischen Token re-importieren. Für lang laufende Workflows einen Cron einrichten, der per /v2/authentication einen neuen Token holt und die HRWORKS_TOKEN-Env-Var des Konnektors über die AnythingMCP-Admin-API aktualisiert.

Nächste Schritte