# Hated WoW MCP

Hands your coding agent the real WoW Lua API, Blizzard's shipped UI code and the game's texture data, so addon work stops relying on invented function names.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 15
- Author: RdyGaming
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/RdyGaming/hated-wow-mcp
- Updated: 2026-10-19
- HTML: https://affpapa.org/en/nevibecode/mcp/hated-wow-mcp

## What it does

Three gaps get filled here. The assistant gets the in-game Lua functions and events for the client you target, the interface source Blizzard actually ships, and a lookup for art files and texture paths. Twenty tools in total. All but one only read local data; `wow_addon_scaffold` can create addon files, but only when you pass `write`, and it will not touch an existing addon without `overwrite`.

You need Node 20+. The Lua API indexes travel inside the package, so API search, TOC/XML checks, linting and scaffolding work right after you connect it. The rest waits for a one-time sync via `npx -y hated-wow-mcp sync all`, which pulls the UI source and the file list. Open wago.tools in a browser once and let it finish loading before that run. Bot protection there can otherwise reject the atlas download with HTTP 403. The UI source is about 44 MB and the listfile about 149 MB on the first pass; later runs only revalidate.

Transport is plain stdio, so any MCP client fits. Config formats differ: `mcpServers` in Cursor and Cline, `servers` in VS Code, TOML at `~/.codex/config.toml` for Codex. Bump `startup_timeout_sec` in Codex because the first `npx` run downloads the package. On Windows some clients spawn without a shell and plain `npx` dies with `ENOENT`; wrap it as `cmd /c`. No Battle.net web API here, so armory and auction lookups are out.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `WOW_DEFAULT_FLAVOR`, `WOW_INSTALL_PATH`, `WOW_ADDON_PATH`, `WOW_MCP_DATA_DIR` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env WOW_DEFAULT_FLAVOR=<WOW_DEFAULT_FLAVOR> --env WOW_INSTALL_PATH=<WOW_INSTALL_PATH> --env WOW_ADDON_PATH=<WOW_ADDON_PATH> --env WOW_MCP_DATA_DIR=<WOW_MCP_DATA_DIR> --transport stdio hated-wow-mcp -- npx -y hated-wow-mcp
```
Replace <…> with your own values

### Codex

**Platform CLI**
```bash
codex mcp add hated-wow-mcp --env WOW_DEFAULT_FLAVOR=<WOW_DEFAULT_FLAVOR> --env WOW_INSTALL_PATH=<WOW_INSTALL_PATH> --env WOW_ADDON_PATH=<WOW_ADDON_PATH> --env WOW_MCP_DATA_DIR=<WOW_MCP_DATA_DIR> -- npx -y hated-wow-mcp
```
Replace <…> with your own values

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "hated-wow-mcp": {
            "command": "npx",
            "args": [
                "-y",
                "hated-wow-mcp"
            ],
            "env": {
                "WOW_DEFAULT_FLAVOR": "<WOW_DEFAULT_FLAVOR>",
                "WOW_INSTALL_PATH": "<WOW_INSTALL_PATH>",
                "WOW_ADDON_PATH": "<WOW_ADDON_PATH>",
                "WOW_MCP_DATA_DIR": "<WOW_MCP_DATA_DIR>"
            }
        }
    }
}
```
Replace <…> with your own values

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "hated-wow-mcp": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "hated-wow-mcp"
            ],
            "env": {
                "WOW_DEFAULT_FLAVOR": "<WOW_DEFAULT_FLAVOR>",
                "WOW_INSTALL_PATH": "<WOW_INSTALL_PATH>",
                "WOW_ADDON_PATH": "<WOW_ADDON_PATH>",
                "WOW_MCP_DATA_DIR": "<WOW_MCP_DATA_DIR>"
            }
        }
    }
}
```
Replace <…> with your own values

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e WOW_DEFAULT_FLAVOR=<WOW_DEFAULT_FLAVOR> -e WOW_INSTALL_PATH=<WOW_INSTALL_PATH> -e WOW_ADDON_PATH=<WOW_ADDON_PATH> -e WOW_MCP_DATA_DIR=<WOW_MCP_DATA_DIR> hated-wow-mcp npx -y hated-wow-mcp
```
Replace <…> with your own values

## When to use it
- look up the exact Lua function names for a given client
- read how Blizzard builds a UI element in its own source
- find a real texture path instead of a guessed one
- validate addon TOC and XML files
- scaffold a fresh addon from scratch

## Example prompts
- Find the Lua API function that registers a handler for the player entering world event
- Show me how Blizzard draws the cast bar in the UI source
- Run the linter over my `MyAddon.toc` and XML files

## Similar
- [Pascal 3D Editor](https://affpapa.org/en/nevibecode/mcp/pascal-3d-editor.md) — MCP server · ★ 25085
- [Unity-MCP](https://affpapa.org/en/nevibecode/mcp/unity-mcp.md) — MCP server · ★ 4523
- [mcp](https://affpapa.org/en/nevibecode/mcp/sceneview-mcp.md) — MCP server · ★ 1348
- [Gearboy MCP Server](https://affpapa.org/en/nevibecode/mcp/gearboy-mcp-server.md) — MCP server · ★ 1219
- [ChiR24-unreal_mcp_server](https://affpapa.org/en/nevibecode/mcp/chir24-unreal-mcp-server.md) — MCP server · ★ 975
- [Nova3D](https://affpapa.org/en/nevibecode/mcp/nova3d.md) — MCP server · ★ 733

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
