Workday Studio MCP
A local MCP server that gives Claude direct access to a Workday Studio workspace, enabling reading, writing, planning, and validating integration assemblies without copy-pasting XML.
README
Workday Studio MCP
A local MCP (Model Context Protocol) server that gives Claude direct access to your Workday Studio workspace. Read, write, plan, and validate integration assemblies without copy-pasting XML back and forth.
Everything runs locally on your machine — no network calls, no tenant credentials, no shared state. The server only sees the Studio Workspace folder you point it at.
What you get
26 tools across these categories:
| Category | What it does |
|---|---|
| Navigation | list_studio_projects, list_project_files, read_integration_file, search_studio_files, get_workspace_structure |
| File management | write_integration_file, copy_file_from_project, rename_file, delete_file, validate_xml_file |
| Project setup | create_studio_project, create_xsl_transform |
| Assembly editing | list_assembly_steps, list_integration_params, add_assembly_step, update_sub_flow, rename_steps, delete_assembly_step, validate_assembly |
| Planning | plan_integration — design elicitation + skeleton generator; get_workflow — where an integration stands and what to do next |
| Reference | get_step_type_reference — confirmed step type docs with production XML examples; lookup_soap_operations — WWS service/operation lookup with WSDL links; get_patterns — the curated cross-integration knowledge base (diagram rules, MVEL/XSLT/RAAS idioms) by section or search |
| Diagnostics | parse_server_log — parse a Workday integration server log from ~/Downloads |
| Knowledge capture | log_learning — append a discovered pattern/gotcha to the shared intake log (learnings.md) |
A growing knowledge base lives at docs/studio-integration-patterns.md — hard-won lessons captured from real Studio debugging sessions.
For a single-page digest of the tools, the plan_integration design brief, validator rule codes, the SOAP catalog, and the highest-value patterns, see docs/quick-reference.md.
Quick install
One line:
curl -fsSL https://raw.githubusercontent.com/krishnagutta/Workday-studio-mcp/main/bin/quickstart.sh | bash
This clones the repo to ~/Workday-studio-mcp, installs dependencies, and prints the exact claude mcp add command for your machine.
Or do it manually — see Manual setup below.
Prerequisites
- Node.js 18+ — check with
node --version - Workday Studio installed with at least one project in your workspace
- Claude Desktop or Claude Code (CLI) — both work
Manual setup
1. Clone and install
git clone https://github.com/krishnagutta/Workday-studio-mcp.git
cd Workday-studio-mcp
npm install
2. Configure your workspace path
cp config.json.example config.json
Open config.json and set workspace_path to the folder containing your Studio projects (the same one Eclipse opens):
{
"workspace_path": "/Users/yourname/Documents/Studio Workspace",
"max_file_size_kb": 500,
"backup_on_write": true,
"excluded_dirs": [".git", ".settings", "bin", "build", "node_modules", ".metadata", ".plugins"],
"excluded_extensions": [".class", ".jar", ".zip", ".bak"]
}
Or skip config.json entirely and use an env var:
export STUDIO_WORKSPACE_PATH="/Users/yourname/Documents/Studio Workspace"
3. Verify it starts
node src/index.mjs
You should see:
[studio-mcp] Server started. Workspace: /Users/yourname/Documents/Studio Workspace
Press Ctrl+C to stop — Claude will spawn it on demand.
Connect to Claude
Option A — Claude Code (CLI)
claude mcp add studio-mcp node /absolute/path/to/Workday-studio-mcp/src/index.mjs
Confirm:
claude mcp list
Option B — Claude Desktop
Edit the config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Add inside mcpServers:
{
"mcpServers": {
"studio-mcp": {
"command": "node",
"args": ["/absolute/path/to/Workday-studio-mcp/src/index.mjs"]
}
}
}
Save and restart Claude Desktop.
Tip: Use
which nodeto get your full node path if Claude can't find it.
Use it
List projects
"List my Studio projects"
Read a file
"Read the assembly.xml from INT145"
Plan a new integration
"I need to build a new integration"
Claude asks design questions (data source, destination, trigger, record volume, auth, error handling) before generating anything. Then it writes a skeleton assembly.xml + assembly-diagram.xml you can open in Studio immediately.
It also writes an aidlc-docs/ folder at the project root, so the design rationale outlives the conversation:
<your project>/aidlc-docs/
├── plan.md # design brief, per-sub-flow prop contracts, open gaps, tenant handoff checklist
└── state.json # lifecycle state — sub-flow status, decisions log
Commit these with your integration: they are the record of why it is shaped this way. Regenerating the scaffold refreshes both files but preserves the created date and the decisions log. Attribute names are recorded, never credential values.
Pick up where you left off
"What's the status of INT999_Employee_Sync?"
get_workflow reads aidlc-docs/state.json and reports the phase, which sub-flows are built vs still TODO stubs, the last validation result, and the single next recommended action — without reading the XML. For a project that predates aidlc-docs/, call it with retrofit=true to derive state from the existing assembly.
Fill in a sub-flow
"Fill in the GetWorkers sub-flow — here's the RAAS sample: [paste XML]"
update_sub_flow surgically replaces the TODO stub with real steps and validates the result.
Search across integrations
"Find all uses of integrationMapLookup"
Validate
"Validate the assembly for INT145"
Returns errors (broken routes, illegal comments, missing attributes) and warnings (missing XSL files, unresolved sub-flow endpoints).
Look up a step type
"Show me the cc:http-out reference"
Returns confirmed XML examples, schema rules, and gotchas.
Rename a step safely
"Rename AsyncMediation3 to SetTransactionProps"
rename_steps updates the step ID in assembly.xml and every href in assembly-diagram.xml atomically — renaming in only one file crashes Studio's diagram view.
Find a SOAP operation
"Which WWS service has Put_Applicant?"
lookup_soap_operations searches the Workday Web Services catalog and returns the service, common operations, and WSDL link.
Pull curated guidance before hand-editing a diagram
"Show me the diagram rules before I edit assembly-diagram.xml"
get_patterns serves the curated knowledge base — the cross-integration rules that span step types (EMF @mixed index math, swimlane layout, the three-entry add/remove rule, MVEL/XSLT/RAAS idioms). Call it with no args for an index, topic="Diagram Rules" for a section, or search="swimlane" to find by keyword. These are the same lessons in docs/studio-integration-patterns.md, now reachable from any MCP session.
Capture a discovery
When Claude hits an undocumented Studio behavior during a session, it logs the pattern to learnings.md via log_learning — entries are reviewed and promoted into the curated knowledge base.
Parse a server log
After downloading a server-{wid}.log from Workday (View Integration Events → expand documents → click the server-*.log):
"Parse my latest server log"
Returns structured timeline, unique errors, and XSLT messages. The parser auto-finds the most recent server-*.log in ~/Downloads.
Project structure
Workday-studio-mcp/
├── src/
│ ├── index.mjs # Entry — registers tools, starts server
│ ├── config.mjs # Loads workspace path
│ ├── fs.mjs # FS helpers + path traversal protection
│ ├── xml.mjs # XML validation wrapper
│ ├── assembly-validator.mjs # Studio-specific assembly rules
│ ├── aidlc-docs.mjs # Persists the integration plan + lifecycle state
│ └── tools/
│ ├── list-projects.mjs
│ ├── list-files.mjs
│ ├── read-file.mjs
│ ├── write-file.mjs
│ ├── search-files.mjs
│ ├── workspace-tree.mjs
│ ├── validate-xml.mjs
│ ├── create-project.mjs
│ ├── list-assembly-steps.mjs
│ ├── list-integration-params.mjs
│ ├── add-assembly-step.mjs
│ ├── create-xsl-transform.mjs
│ ├── copy-file-from-project.mjs
│ ├── rename-file.mjs
│ ├── delete-file.mjs
│ ├── get-step-type-reference.mjs # Step type docs
│ ├── lookup-soap-operations.mjs # WWS service/operation catalog
│ ├── get-patterns.mjs # Serves the curated knowledge base
│ ├── plan-integration.mjs # Design elicitation
│ ├── get-workflow.mjs # Lifecycle status + next action
│ ├── update-sub-flow.mjs # Surgical sub-flow replacement
│ ├── rename-steps.mjs # Atomic step rename (assembly + diagram)
│ ├── delete-assembly-step.mjs # Atomic step delete (assembly + diagram)
│ ├── validate-assembly.mjs # Studio rules engine
│ ├── log-learning.mjs # Knowledge-capture intake
│ └── parse-server-log.mjs # Local log parser
├── docs/
│ └── studio-integration-patterns.md # Shared knowledge base
├── learnings.md # Append-only learnings intake queue
├── bin/
│ ├── install.sh
│ └── quickstart.sh
├── test/ # `npm test` — node:test, no dependencies
│ ├── fixtures/
│ └── *.test.mjs
├── config.json.example
├── CLAUDE.md # Instructions for Claude when working in this repo
├── package.json
└── .gitignore
Security
- The server only sees files inside your configured
workspace_path— path traversal attempts are blocked. - No credentials, API keys, or Workday tenant details are stored or transmitted.
config.json(which contains your local workspace path) is gitignored.- The server runs over stdio — no network ports are opened.
Contributing patterns back
When you discover a new Studio quirk, schema rule, or assembly pattern, add it to docs/studio-integration-patterns.md and open a PR. See CLAUDE.md for guidance on what kinds of learnings belong there. The goal is a collective memory across the team — every debugging session that finds a new gotcha makes the next one cheaper.
Troubleshooting
workspace_path not configured
Run cp config.json.example config.json and set the path.
Workspace path does not exist
Check the path in config.json matches your Studio workspace folder.
Tools don't appear in Claude Ensure the path in your Claude config is absolute, not relative. Restart Claude Desktop after editing.
node: command not found in Claude
Use the full node path:
/usr/local/bin/node /full/path/to/src/index.mjs
Find it with which node.
License
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。