wow-api-mcp
Query the World of Warcraft addon API, Warcraft Wiki, and Blizzard's UI source across four flavors (live, classic, classic_era, classic_anniversary).
Browse flavors — list available WoW flavors with game build, interface version, data commit, and API counts.
List API systems — enumerate API namespaces per flavor, with optional substring filtering.
Search the API — fuzzy full-text search over functions, events, and tables (enums/structures/constants), filterable by kind.
Inspect an API — fetch full docs for a function/event/table by qualified or bare name, including typed signature and cross-flavor availability.
Diff an API — compare one API's existence and signature across all four flavors.
Search the wiki — query warcraft.wiki.gg for addon API, widget, event, TOC, and guide pages.
Read wiki pages — fetch a wiki page as markdown (cached ~24h, truncatable by length).
Search Blizzard UI source — regex (git grep) over FrameXML/AddOn source per flavor, with glob, case, and result limits.
Read UI source files — read a repo-relative file or list a directory with line numbers and optional line ranges.
Allows searching and retrieving pages from warcraft.wiki.gg, providing access to game guides, TOC format, widget API, and other community documentation.
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., "@wow-api-mcp What does C_QuestLog.GetQuestObjectives do?"
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.
wow-api-mcp
An MCP server that gives AI coding assistants first-class access to the World of Warcraft addon API — Blizzard's own generated API documentation, the FrameXML/AddOn UI source code, and the Warcraft Wiki — across every track mirrored in Gethe/wow-ui-source, not just the live client.
The API documentation is parsed from Blizzard_APIDocumentationGenerated — the machine-readable docs Blizzard ships with the client — so every C_* function signature, event payload, enum, and structure is exact, typed, and per-flavor. No scraping involved.
Flavors
Flavor IDs are exactly the upstream branch names.
Flavor | Track | Channel |
| Retail | release |
| Retail PTR | ptr |
| Retail PTR 2 (XPTR) | ptr |
| Retail Beta | beta |
| Classic, current expansion | release |
| Classic PTR | ptr |
| Classic Beta | beta |
| Classic Era (vanilla) | release |
| Classic Era / Anniversary PTR | ptr |
| Classic Anniversary | release |
| Classic Titan | beta |
| WoW Forever (1.60) | beta |
The list is not hardcoded: the server offers whatever data/ contains, and the ingest job discovers upstream branches with git ls-remote, so a new Blizzard track becomes available without a code change. Run list_flavors for the builds currently shipped.
Related MCP server: mcdev-mcp
Knowing which flavor to use
Signatures differ between retail, Classic, and the test realms, so answering "does this API exist for my addon" means knowing which client the addon targets. The server works that out from your machine:
detect_wow_install → scans for installs, reports each client's build and flavor
resolve_flavor → build / TOC interface number / product code / path → flavor
check_addon_compatibility → reads an addon's .toc files and reports the flavor(s) it targetsdetect_wow_install reads, strongest signal first:
.build.infoat the install root — Blizzard product code and exact build per installed product.flavor.infoinside each_retail_/_classic_/ … directory — the product codethe client executable (
Wow.exe,WowClassic.exe,WowT.exe,WowB.exe, …) — its PE version resource, which is how_ptr_and_xptr_get identified even though.build.infoomits thema bundled addon's
## Interfacenumber
The build number then picks the track, with the product code as a tiebreaker — deliberately in that order, because the two do not line up one-to-one (the Anniversary PTR ships under the wow_classic_era_ptr product, and the 1.60 "Forever" client currently occupies the wow_classic_beta slot).
Set WOW_INSTALL_PATH in the server environment to point at your install; the default flavor for every tool then follows it, preferring a release client over a test realm and retail over Classic when several are installed. WOW_API_MCP_FLAVOR pins the default outright, and WOW_API_MCP_FLAVOR=auto derives it by probing the usual install locations. Without either variable the default is live and startup touches no filesystem beyond data/.
Tools
Tool | What it does |
| Flavors with game build, interface version, data commit, API counts |
| API systems/namespaces per flavor, filterable |
| Fuzzy full-text search over functions, events, enums, structures |
| Full signature detail + cross-flavor availability |
| Compare one API's existence/signature across flavors |
| Bulk diff: what one flavor has that another lacks |
| Find installed clients and the flavor each maps to |
| Build / interface number / product code / path → flavor |
| Read an addon's |
| Search warcraft.wiki.gg (guides, TOC format, widget API, …) |
| Fetch a wiki page as markdown (cached ~24h, CC BY-SA attributed) |
| Regex search over Blizzard's actual UI source per flavor |
| List UI source files matching a path glob |
| Read UI source files with line numbers / list directories |
Install
Requires Node 20.11+. The server is published as @nighthawk42/wow-api-mcp.
Claude Code
claude mcp add wow-api -- npx -y @nighthawk42/wow-api-mcpClaude Desktop / Cursor / any MCP client (mcpServers JSON):
{
"mcpServers": {
"wow-api": {
"command": "npx",
"args": ["-y", "@nighthawk42/wow-api-mcp"],
"env": {
"WOW_INSTALL_PATH": "C:/Program Files (x86)/World of Warcraft"
}
}
}
}WOW_INSTALL_PATH is optional. Without it, detect_wow_install still probes the usual install locations on demand; setting it just makes the default flavor follow that install without a scan.
From source
git clone https://github.com/Nighthawk42/wow_api_mcp
cd wow_api_mcp
npm ci && npm run build
claude mcp add wow-api -- node /path/to/wow_api_mcp/dist/index.jsEnvironment variables
Variable | Effect |
| Install path(s) to probe, |
| Pin the default flavor, or |
| How many flavor payloads stay resident in memory (default 4) |
| Override the bundled |
Notes:
All flavor data is bundled and gzipped (~5 MB total); nothing is fetched at startup, and payloads load lazily.
The first
search_source/get_source_filecall per flavor downloads a ~200 MB source checkout into your OS cache dir (one-time, pinned to the same commit the API data was built from).Wiki pages are fetched on demand and cached for 24 hours.
Data freshness
The API data is regenerated daily from Gethe/wow-ui-source, and a new patch release is published whenever an upstream track changes, so npx -y @nighthawk42/wow-api-mcp stays current with the game. list_flavors reports the exact build and upstream commit your installed copy was built from.
Contributing
Issues and pull requests are welcome. AGENTS.md covers how the repository fits together: layout, commands, data pipeline, release process, and the non-obvious invariants.
Data sources & attribution
API documentation and UI source are © Blizzard Entertainment, mirrored by Gethe/wow-ui-source. The
data/files in this repo are machine-derived transformations of Blizzard's generated documentation, provided for interoperability.Wiki content is fetched live from warcraft.wiki.gg and is licensed CC BY-SA 4.0; responses include attribution.
License
MIT (server code). See LICENSE.
Available Tools
9 toolsdiff_apiCompare API across flavorsA
Compare an API's existence and signature across all four flavors (live, classic, classic_era, classic_anniversary). Useful to check whether an API exists in a given flavor and whether its signature differs.
Inputs: name (required).
get_apiGet API detailsA
Full documentation for a function, event, or table by name — signature, typed arguments/returns/payload/fields, and cross-flavor availability. Accepts qualified names ("C_Timer.After"), bare names ("After"), or event literals ("PLAYER_ENTERING_WORLD"). Case-insensitive.
Inputs: name (required), flavor.
get_source_fileRead Blizzard UI source fileB
Read a file (or list a directory) from Blizzard's UI source for a flavor, with line numbers. Paths are repo-relative, e.g. "Interface/AddOns/Blizzard_UIParent/Blizzard_UIParent.lua".
Inputs: path (required), flavor, endLine, startLine.
get_wiki_pageGet Warcraft Wiki pageA
Fetch a warcraft.wiki.gg page as markdown (cached ~24h). Useful pages: "TOC format", "World of Warcraft API", "Events", "Widget API", "API " for per-function pages, "UIHANDLER " for script handlers.
Inputs: title (required), maxChars.
list_flavorsList WoW flavorsA
List the available WoW client flavors with their game build, interface version, data source commit, and API counts.
Inputs: no named parameters.
list_systemsList API systemsA
List API systems (namespaces) for a flavor. Optionally filter by a case-insensitive substring of the system or namespace name.
Inputs: filter, flavor.
search_apiSearch WoW APIA
Fuzzy full-text search over API functions, events, and tables (enums/structures/constants) for a flavor. Searches names, systems, and documentation. Example queries: "C_Timer After", "unit health", "spell cooldown".
Inputs: query (required), kind, limit, flavor.
search_sourceSearch Blizzard UI sourceA
Regex search (POSIX ERE, via git grep) over Blizzard's FrameXML/AddOn UI source code for a flavor — the best way to learn how Blizzard implements UI patterns (templates, mixins, secure code). The first search per flavor downloads a ~200 MB source checkout and may take a minute.
Inputs: pattern (required), flavor, pathGlob, ignoreCase, +1 more.
search_wikiSearch Warcraft WikiA
Search warcraft.wiki.gg — community documentation for the WoW addon API, UI widgets, events, TOC format, CVars, and guides. Returns page titles to use with get_wiki_page.
Inputs: query (required), limit.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 9 tools
Each tool has a distinct, non-overlapping purpose: comparing APIs, fetching docs, reading source, searching, listing flavors/systems. No ambiguity.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., get_api, search_source, list_flavors). No deviations.
9 tools is well within the ideal range for this domain, covering all necessary operations without excess.
The tool set thoroughly covers the WoW API exploration domain: documentation, source code, cross-flavor comparison, and searches. No obvious gaps.
Maintenance
Related MCP Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
Official Duck Framework MCP server for AI-assisted development and project scaffolding.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA local MCP server that lets any MCP-compatible AI client manage a standalone World of Warcraft private server, including server control, database operations, NPC/quest/loot management, and more.1MIT
- AlicenseAqualityCmaintenanceAn MCP server that empowers AI coding agents to work effectively with Minecraft mod development, providing static analysis of decompiled source code and runtime interaction with a running Minecraft instance.3192 npm18MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that exposes structured World of Warcraft API data (functions, deprecated replacements, enums, events, widget methods) to AI agents, enabling querying and exploration of WoW API without wiki parsing.30 npm15MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that gives LLMs live access to warcraft.wiki.gg API documentation with behavioral notes, restrictions, and patch history for World of Warcraft APIs.1MIT