workday-docs-mcp

workday-docs-mcp

Enables AI coding agents to search, read, and cite official Workday developer documentation, grounding their answers in real docs instead of hallucinating. Particularly useful for building Workday Extend apps.

Category
访问服务器

README

workday-docs-mcp

An MCP server that grounds an AI coding agent in the Workday developer documentation — so it answers from the real docs and helps build Workday Extend apps correctly, instead of guessing.

Point your IDE agent (Claude Code, Cursor, etc.) at this server and it can search, read, and cite the official Workday docs on demand. With the included Extend builder skill, a developer with no Workday Extend experience can build apps that are grounded in the actual PMD components, functions, and APIs — not plausible-looking hallucinations.

It's a thin, cached layer over the documentation behind developer.workday.com. No login, no API keys, no Workday account required — it reads the public docs.


Why it exists

A general-purpose LLM has almost no Workday Extend in its training data, so it confidently writes invalid PMD (Workday's declarative page metadata) and invents endpoints that don't exist. This server replaces those guesses with retrieved, authoritative reference — and gives the agent the canonical doc link so a human can verify.

What it looks like in use

You: "I'm building a Workday Extend app and want a page that shows a list of expense reports in a table. How do I do that?"

Agent: (calls lookup_extend_reference → grounds on the real grid widget docs) "You'll use the grid widget bound to an inbound endpoint. Here's the PMD, with the real attributes (rows, columns, cellTemplate)… [cites developer.workday.com/wcp_docs/…]"

The agent reaches for the tools on its own (especially with the skill installed), grounds the answer, and links the source.

Tools

Tool Purpose
search_workday_docs Find docs by concept / widget / API / task → lightweight pointers (title, breadcrumb, doc_id, link).
get_workday_doc Fetch a full page as markdown by doc_id or a pasted wcp_docs/<id>.html link. Always returns the canonical link.
browse_workday_toc Walk the documentation hierarchy when keyword search misses.
lookup_extend_reference Build-focused. Given an intent ("sortable grid", "format a date"), returns the best Extend component / PMD-function / scripting reference page with its content inline + alternatives. Scope with kind.

All four tools declare an outputSchema (clients receive validated structuredContent, not just text) and annotations (readOnlyHint, idempotentHint, openWorldHint — none are destructive).

Typical flow: search → pick a doc_idget → answer & cite the html_url. When building an Extend app, reach for lookup_extend_reference first.

Requirements

  • Node 22+ — runs the TypeScript sources directly, no build step (verified on Node 25).
  • An MCP-capable client (Claude Code, Cursor, Claude Desktop, …).

Quick start

git clone https://github.com/philippesimard00/workday-docs-mcp.git
cd workday-docs-mcp
npm install
npm run build-index      # one-time, ~1 min: builds the Tier-2 full-text index (recommended)

Connect it to Claude Code (user scope = available in every project):

claude mcp add workday-docs --scope user -- node "$(pwd)/src/server.ts"
claude mcp list          # expect: workday-docs ✓ Connected

Or add it to any MCP client's config manually (use the absolute path to src/server.ts on your machine):

{
  "mcpServers": {
    "workday-docs": {
      "command": "node",
      "args": ["/absolute/path/to/workday-docs-mcp/src/server.ts"]
    }
  }
}

Skipping build-index still works — search just falls back to title-only matching. See Search modes.

The Extend builder skill

skills/workday-extend-builder/ is a Claude Code Skill that teaches the agent Workday Extend's mental model (declarative metadata + scripting, the real file types) and directs it to these tools — especially lookup_extend_referencebefore it writes any code. This is what makes the "no prior experience" case work. Install it (per developer):

ln -s "$(pwd)/skills/workday-extend-builder" ~/.claude/skills/workday-extend-builder

See skills/README.md for details and the per-team customization section.

Search modes

search_workday_docs and lookup_extend_reference run in one of two modes; the response's engine field tells you which:

  • title (zero setup): matches page titles + breadcrumbs only. Fine for "find the page about X"; weak on how-to phrasing.
  • fulltext (after npm run build-index): BM25 over page bodies. Built for app-building — intent queries like "sortable grid with pagination" land on the right component. The index (~1,250 docs) is fetched once and cached at ~/.cache/workday-docs-mcp/; the server uses it automatically on next start. Re-run build-index to refresh.

How it works

The Workday developer site is a JavaScript single-page app, so the docs aren't readable by a normal fetch of a page URL. The content is served as markdown behind it, via two endpoints:

What URL
Master table of contents https://developer.workday.com/doc/wcp_docs.yml
Page markdown https://developer.workday.com/doc/<DOC_ID>.md
Canonical human link https://developer.workday.com/wcp_docs/<DOC_ID>.html

The server loads the TOC (cached 6h), serves page markdown (cached on disk), and — for full-text mode — builds a local BM25 index over every page body. All knowledge of these URLs is isolated in one file (src/workday-docs-adapter.ts), and a startup health check fails loudly if Workday changes the doc structure.

Project layout

src/
  types.ts                  Shared types (TocNode, IndexEntry, SearchHit)
  workday-docs-adapter.ts   The seam — the only file that knows Workday's URLs (TOC, page fetch, caching, health check)
  search.ts                 Tier-1 ranking (title/breadcrumb) — fallback
  fulltext.ts               Tier-2 BM25 inverted index over page bodies (pure JS, no native deps)
  build-index.ts            One-time builder for the Tier-2 index
  server.ts                 MCP wiring: 4 tools + stdio transport + boot health check
  smoke.ts                  Live end-to-end check, no MCP transport
  test-client.ts            Drives the tools over the real MCP protocol (stdio)
evals/                      12-question evaluation suite (verified) + how to run it
skills/                     workday-extend-builder Claude Code skill + install guide

Development

npm run typecheck    # tsc, no emit
npm run smoke        # hits the live endpoints: loads TOC, searches, fetches a page
npm run test-client  # drives all tools over the real MCP protocol (stdio)

evals/workday_docs_eval.xml is a 12-question suite (answers verified against live data) for measuring how well an LLM can answer real Workday questions with only these tools — useful as a regression/quality benchmark. See evals/README.md.

Notes & limitations

  • Unofficial. This project is not affiliated with or endorsed by Workday. It reads publicly available documentation pages.
  • Undocumented endpoints. wcp_docs.yml and /doc/*.md aren't a published API — Workday could change them. They're isolated in src/workday-docs-adapter.ts, and assertSchemaIntact() fails loudly at startup if the structure changes. Great for a dev-productivity tool; treat as a maintenance liability for anything critical.
  • Docs, not data. The server reads the documentation. It does not access any Workday tenant, customer data, or authenticated API.
  • Search quality depends on the index — build it (npm run build-index) for app-building. A future semantic (embeddings) tier would slot into the same search layer without changing the tools.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选