Workday Managed MCP Server
The Workday managed MCP server lets agents drive Workday Human Resources business processes (multi-step, approval-driven workflows like onboarding, hiring, and personal-info changes) through Workday’s Human_Resources SOAP API.
After reading this page, you will be able to:
-
Configure the Workday managed MCP server with an Integration System User (ISU) refresh token
-
Choose the right WSDL version and tenant settings
-
Run a Change_Personal_Information business process from the Inspector or an agent
What this MCP server does
Workday is a SaaS HR and payroll platform. Customer mutations land through business processes: multi-step, approval-driven workflows. Workday’s REST API covers a partial read-side surface, but the business processes themselves live behind the SOAP Human_Resources WSDL. This MCP wraps the SOAP surface so an LLM can drive a business process the same way it would call any other tool.
It is not a generic Workday browser. There is no SQL/RaaS access, no report execution, and no general "search the tenant" tool. Each MCP tool maps 1:1 to one business process.
The current build exposes a single tool, change_personal_information, with more business processes landing as customers ask for them.
Authentication model
Workday’s Human_Resources SOAP API authenticates with the OAuth 2.0 refresh-token grant plus HTTP Basic on the token endpoint. Unlike most managed MCPs, this is a vendor-specific auth shape that doesn’t fit the shared static_key, service_account_oauth, or user_delegated_oauth modes; Workday uses an oauth_refresh_token variant.
The MCP exchanges the refresh token (in the request body) plus username:password (HTTP Basic) for a short-lived access token at https://<host>/ccx/oauth2/<tenant>/token, then sends Authorization: Bearer <access_token> on every SOAP call.
Authentication is one ISU per MCP instance, not per end-user. Customers that need per-user-delegated access mount multiple MCP instances (one per ISU/scope), not multiple users behind one MCP.
Prerequisites
Before you create the server, make sure you have:
-
A Workday tenant where you can create an Integration System User and register an API client
-
Admin access to Workday > Create Integration System User and Workday > Register API Client for Integrations
-
Two Redpanda ADP secret-store entries:
-
WORKDAY_PASSWORD: The ISU password. -
WORKDAY_REFRESH_TOKEN: The non-expiring refresh token.
Get Workday credentials
Set up authentication on the Workday side before configuring the MCP:
-
Create an Integration System User (ISU) under Workday > Create Integration System User. Note the username; it usually ends up as
<isu_name>@<tenant>. -
Register an API Client for Integrations under Workday > Register API Client for Integrations:
-
Grant types: Include both
Refresh Token(required) andAuthorization Code. Workday’s UX requires both to be checked even when only the refresh-token grant is used at runtime. -
Non-Expiring Refresh Tokens: Tick this option. Required for static-credential MCP usage; if Workday rotates the refresh token on every exchange, the cached value goes stale and authentication breaks.
-
Scope: Include
Human Resources(and any other functional areas your business processes touch).
-
-
Issue a refresh token to the ISU by completing the one-time authorization-code flow Workday walks you through, or by using View API Clients > Manage Refresh Tokens for Integrations to mint one directly.
-
Save four values: the
tenant, thehost(the Workday data-center hostname, for examplewd2-impl-services1.workday.com), the ISUusername, and the ISUpassword. Save therefresh_tokenseparately.
Configure
Create a new Workday MCP server in ADP:
-
Open MCP Servers > Create Server.
-
Pick Workday from the marketplace picker.
-
Fill in identity fields (
name,description). -
In the Workday configuration form:
Field Notes TenantYour Workday tenant identifier, for example
acme.HostThe Workday data-center hostname, for example
wd2-impl-services1.workday.com. The MCP exchanges credentials athttps://<host>/ccx/oauth2/<tenant>/token.WSDL versionOptional; defaults to
v46.0. Older tenants onv44.xorv45.xmust set this explicitly to match the WSDL surface their tenant has enabled.UsernameThe ISU username (typically
<isu_name>@<tenant>).Password refSecret-store reference for the ISU password (
UPPER_SNAKE_CASE). Example:WORKDAY_PASSWORD.Refresh token refSecret-store reference for the non-expiring refresh token (
UPPER_SNAKE_CASE). Example:WORKDAY_REFRESH_TOKEN. -
Click Create.
Configure from the CLI
rpk ai mcp create --name workday-hr --managed-config '{
"@type": "type.googleapis.com/redpanda.mcps.workday.v1.WorkdayMCPConfig",
"tenant": "acme",
"host": "wd2-impl-services1.workday.com",
"wsdl_version": "v46.0",
"oauth_refresh_token": {
"username": "isu_user@acme",
"password_secret_ref": "${secrets.WORKDAY_PASSWORD}",
"refresh_token_secret_ref": "${secrets.WORKDAY_REFRESH_TOKEN}"
}
}'
Tools
The Workday MCP exposes the following tools:
| Tool | Description |
|---|---|
|
Kicks off the |
Example: Change a worker’s date of birth and marital status
curl -s https://aigw.<cluster-id>.clusters.rdpa.co/mcp/v1/workday-hr \
-H 'Content-Type: application/json' -d '{
"jsonrpc":"2.0","method":"tools/call","id":1,
"params":{
"name":"change_personal_information",
"arguments":{
"worker_id":"E1001",
"worker_id_type":"Employee_ID",
"effective_date":{"year":2026,"month":5,"day":1},
"date_of_birth":{"year":1990,"month":5,"day":20},
"marital_status":"Married"
}
}
}'
Dates use the google.type.Date shape ({year, month, day}); a missing field, or one with year: 0, is treated as "unset" and Workday applies its own default (today, for effective_date).
A successful response surfaces the Workday Event WID and confirms the worker WID:
{
"result": {
"content": [{
"type": "text",
"text": "{\"event_wid\":\"ev-wid-001\",\"worker_wid\":\"worker-wid-002\",\"version\":\"v46.0\"}"
}]
}
}
If Workday returns a SOAP Fault (validation error, missing permissions, worker not found), the MCP surfaces the faultstring as a structured tool error so the LLM can decide whether to retry or ask the user.
Tenant-specific values
gender, marital_status, and citizenship_status_ids accept Workday IDs from the customer’s tenant configuration. Common defaults like Single / Married and ISO country codes work in most tenants, but check Workday’s "Maintain Marital Status" and "Maintain Citizenship Status" reports if a value is rejected.
Troubleshooting
Common symptoms and fixes:
| Symptom | What to check |
|---|---|
|
ISU credentials wrong, or the refresh token has been rotated. Confirm |
|
|
SOAP fault: |
A tenant-specific field ID (marital status, citizenship status, ethnicity) doesn’t match what your tenant accepts. Check the corresponding "Maintain …" report in Workday for the exact IDs. |
SOAP fault: |
The ISU lacks rights for the business process you’re invoking. Grant the relevant security domain on the ISU’s security group. |
SOAP fault: |
The |
Limitations
This page does not cover:
-
Per-user-delegated access: Workday authentication is one shared ISU per MCP. For per-user identities, mount multiple MCP instances (one per ISU/scope).
-
Custom report execution: This MCP wraps SOAP business processes, not reports. Use Workday RaaS or the report API for custom reports.
-
Read-side data exploration: There is no general search Workday tool. Add specific business-process tools as needed.