Content
# Warcraft 3 MCP Server
**Edit your Warcraft III maps by just talking to Claude.**
This is an MCP server that connects Claude to your Warcraft III
`.w3x` / `.w3m` map files. Once it's set up, you can say things like:
> *"Add a footman for Player 1 in the middle of the map."*
> *"Double the hit points of every grunt."*
> *"Add a trigger that spawns 5 wolves every 30 seconds, then open the map in the editor."*
…and Claude makes the change directly in your map file.
> **How it works in one line:** Warcraft's World Editor has no plugin/automation system, so
> this edits the map *file* directly. Your change is really in the map — open it in the World
> Editor or play it and it's there.
---
## Install (5 minutes)
### Step 1 — Install Node.js
Download and install **Node.js 18 or newer** from [nodejs.org](https://nodejs.org).
(To check if you already have it, open a terminal and run `node --version`.)
### Step 2 — Download this project and build it
Open a terminal (Command Prompt, PowerShell, or Terminal) and run:
```bash
git clone https://github.com/YElwiddi/warcraft-3-mcp-server.git
cd warcraft-3-mcp-server
npm install
npm run build
```
That's it — the server is now built into the `dist` folder.
### Step 3 — Connect it to Claude
Pick whichever you use:
**Claude Code (the CLI)** — run this one command (use the full path to the folder you just
built):
```bash
claude mcp add wc3 --scope user -- node "/full/path/to/warcraft-3-mcp-server/dist/index.js"
```
**Claude Desktop (the app)** — open **Settings → Developer → Edit Config**, and add a `wc3`
entry under `mcpServers` (keep any servers you already have):
```jsonc
{
"mcpServers": {
"wc3": {
"command": "node",
"args": ["C:/full/path/to/warcraft-3-mcp-server/dist/index.js"]
}
}
}
```
### Step 4 — Restart Claude
Close and reopen Claude Code / Claude Desktop so it loads the new tools. You're done!
> 💡 **Tip:** Use forward slashes `/` in the path even on Windows, e.g.
> `C:/Users/You/warcraft-3-mcp-server/dist/index.js`.
---
## Try it
Just ask Claude in plain English and give it the **full path to your map**. For example:
> *"Use wc3 to give me an overview of `C:\Users\Me\Desktop\MyMap.w3x`."*
By default, edits are saved to a copy next to your map (`MyMap.edited.w3x`) so your original is
safe. Tell Claude *"overwrite the original"* if you want it to edit the file in place.
---
## What Claude can do (the tools)
### Look at a map
| Tool | What it does |
|---|---|
| `wc3_overview` | A quick summary of the whole map (great starting point) |
| `wc3_map_info` | Map name, author, players, size |
| `wc3_list_files` / `wc3_read_file` | List or read any file inside the map |
| `wc3_read_objects` | Read units / items / abilities / etc. and their stats |
| `wc3_read_placements` / `wc3_list_units` / `wc3_list_doodads` | What's placed on the map |
| `wc3_read_script` | The map's script (JASS / Lua) |
| `wc3_read_strings` | Text strings (names, tooltips, quest text) |
| `wc3_read_regions` / `wc3_read_cameras` / `wc3_read_sounds` | Regions, cameras, sounds |
| `wc3_read_terrain` | Terrain summary (size, tiles, height) |
| `wc3_read_triggers` / `wc3_read_imports` | The trigger list and imported files |
### Change a map
| Tool | What it does |
|---|---|
| `wc3_place_unit` / `wc3_modify_unit` / `wc3_delete_unit` | Add, move, or remove units |
| `wc3_place_doodad` / `wc3_modify_doodad` / `wc3_delete_doodad` | Add, move, or remove doodads/trees/etc. |
| `wc3_add_region` / `wc3_modify_region` / `wc3_delete_region` | Manage regions |
| `wc3_add_camera` / `wc3_delete_camera` | Manage cameras |
| `wc3_write_objects` | Change unit/item/ability stats |
| `wc3_set_string` | Change text strings |
| `wc3_write_script` / `wc3_replace_file` | Replace the script or any internal file |
### Create new things
| Tool | What it does |
|---|---|
| `wc3_create_object` | Make a custom unit/item/ability based on an existing one |
| `wc3_set_durable_script` | Add game logic that runs immediately, **survives editor re-saves**, and shows up editable in the Trigger Editor |
### See your change
| Tool | What it does |
|---|---|
| `wc3_open_in_editor` | Open the map in the Warcraft III World Editor |
| `wc3_test_map` | Launch the map in Warcraft III to play it |
---
## Good to know
- **Your originals are safe** — edits save to a `.edited` copy unless you ask to overwrite.
- **Triggers / new logic:** `wc3_set_durable_script` stores your JASS/Lua in `war3map.wct` (the
editor's own trigger storage) *and* mirrors it into the map script — so it runs immediately
**and** survives editor re-saves, appearing in the Trigger Editor where you can edit it later.
For an auto-running trigger, create one custom-text trigger in the editor first (e.g. name it
`MCPDurable`) and save once; the header slot (`slot:"header"`) needs no setup.
- **Very large or protected maps** may have a few parts that can't be read; Claude will tell you
which part and keep working on the rest.
- This is **not affiliated with Blizzard Entertainment**. Warcraft III is a trademark of
Blizzard. This tool only reads/writes your own map files.
---
## License
[MIT](LICENSE) — free and open source. Do whatever you like with it.