# Warcraft III Map Tools [Health: Active]

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/GodMephisto/wc3-mcp  
**GitHub Stars:** 2  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/warcraft-iii-map-tools

## Description
Read, audit and edit Warcraft III maps byte-faithfully

## Tools
Capabilities this server exposes over MCP:

- **asset_list** — List the asset paths an icon or model object field can actually be set to, from the map's own imported files and from the base game.
- **audit_ability** — Tells you, per ability, PASS or the exact broken link across a placed hero's whole runtime chain, far deeper than audit_hero, which only proves a cast...
- **audit_fidelity** — Tells you whether a ported object's data came across faithfully, by comparing it and its whole custom-object dependency closure between the SOURCE map it...
- **audit_hero** — Tells you whether a placed hero's abilities are actually wired up in the map's script, not merely present as object data.
- **audit_map** — Behavioural audit of a map's object data, read-only.
- **audit_readiness** — Tells you whether a placed hero's script would actually RUN correctly, not just fire, the gap audit_hero cannot see since it only proves a cast reaches a...
- **bundle_unit** — Resolve everything a unit depends on, the porting preview.
- **camera_add** — Add a camera at a target position and save the edited map to out_path.
- **camera_list** — List the map's cameras (war3map.w3c).
- **camera_remove** — Remove a camera and save the edited map to out_path.
- **camera_set** — Set a field on a camera and save the edited map to out_path.
- **deprotect_map** — Recover the file names a protected map stripped.
- **diff** — Compare two maps and report which internal files were added, removed or changed.
- **doctor_check** — Will this map run on Reforged 3.0, and if not, why.
- **doctor_compare** — What differs between two versions of a map, file by file (added, removed, changed) with names recovered on protected archives, plus object, script and s...
- **doctor_fix** — Repair a COPY of a map for Reforged 3.0 with the doctor's Fix map: protection, fake file tables, scrambled ids, data the 3.0 engine refuses, broken SLK...
- **doctor_inspect** — Read-only doctor reports on one map.
- **editor_catalog_get** — Show one World Editor catalog's entries, each with its stored key (the token a map file actually carries), its resolved display name and every payload field.
- **editor_catalog_list** — List the World Editor's catalog names from UI\WorldEditData.txt with entry counts (TileSets, SkyModels, LoadingScreens, SoundChannels, MapSizes, the brush...
- **file_get_text** — Read one internal file decoded as UTF-8, with any leading BOM stripped.
- **file_list** — List the archive's internal entries with their CURRENT size, which reflects a pending replacement rather than the stale original.
- **file_set** — Replace an internal file's bytes verbatim from a disk file and save the edited map to out_path.
- **force_list** — List the map's forces/teams (war3map.w3i).
- **force_set_flags** — Set a force's alliance/sharing flags and save the edited map to out_path.
- **hero_install** — Install a hero definition into a map and save the result to out_path.
- **hero_lint** — Validate a hero definition folder before installing it.
- **hero_roster** — List the playable heroes a map registers, with each hero's rawcode, display name, the string tags from its registration call (typically a role and a...
- **imports_list** — List the map's import table (war3map.imp) against what the archive actually holds, so a table entry with no file behind it and a file absent from the table...
- **lint** — Pre-flight the map.
- **list_files** — List the map archive's internal files, each with its name (null = unnamed/protected entry), size in bytes, whether wc3ctl knows/parses the format, and for...
- **map_info** — Show a Warcraft III map's metadata.
- **map_info_get** — Read the map's editable scenario fields (war3map.w3i).
- **map_info_set** — Set a scenario field and save the edited map to out_path.
- **new_map** — Create a blank, World-Editor-openable map (.w3x) at out_path.
- **object_field_options** — The legal values for one object-data field, taken from what the base game data actually uses for it.
- **object_form** — Get an object as an editable FORM rather than a flat field dump.
- **object_get** — Get an object's merged fields (base game data overlaid by the map's deltas), each labeled 'base' or 'map', with field names resolved.
- **object_list** — List the map's custom/modified objects of one Object Editor kind.
- **object_new** — Create a new custom object derived from a base rawcode (a fresh unused rawcode is allocated) and save the edited map to out_path.
- **object_set** — Set a field on an object of one Object Editor kind and save the edited map to out_path (only that kind's war3map.* file is re-serialized).
- **palette_doodad** — List the doodad types placeable on a map, the palette to consult before place_doodad.
- **pathing_paint** — Paint pathing bits over a circular or square brush and save the edited map to out_path.
- **place_doodad** — Place a doodad instance at (x, y) on the map's doodad layer (war3map.doo) and save the edited map to out_path.
- **place_item** — Place a preplaced item of the given type at world (x, y) and save the edited map to out_path.
- **place_region** — Define a rectangular region on the map's region layer (war3map.w3r) and save the edited map to out_path.
- **place_start_location** — Place or move a player's start location at world (x, y) and save the edited map to out_path.
- **place_unit** — Place a unit of the given type, owned by a player, at world (x, y) and save the edited map to out_path.
- **placed_doodad_get** — Show one placed doodad's full state by creation number.
- **placed_doodad_remove** — Remove a doodad already placed on the map and save the edited copy to out_path.
- **placed_doodad_set** — Set one field on a doodad already placed on the map and save the edited copy to out_path.
- **placed_doodads_list** — List every doodad and destructable already PLACED on the map (war3map.doo), each with the creation number needed to edit or remove it, plus its type...
- **placed_unit_get** — Show one placed unit's full state by creation number.
- **placed_unit_remove** — Remove a unit already placed on the map and save the edited copy to out_path.
- **placed_unit_set** — Set one field on a unit already placed on the map and save the edited copy to out_path.
- **placed_units_list** — List every unit already PLACED on the map (war3mapUnits.doo), each with the creation number needed to edit or remove it, plus its type rawcode, owner,...
- **player_list** — List the map's player slots (war3map.w3i).
- **player_set_force** — Move a player into a force (team) and save the edited map to out_path.
- **port_unit** — Port a unit (its custom-object closure + imported assets + strings, and best-effort its JASS trigger closure) from a source map into a target map,...
- **region_list** — List the map's rectangular regions (war3map.w3r), each with its creation number, name, and bounds.
- **region_remove** — Remove a region by name and save the edited map to out_path.
- **render_model** — Render an object's model (map-imported .mdx/.mdl) to a PNG written at out_path.
- **repair_generated** — Repair a map that wc3ctl itself generated, whose preplaced-hero helper block is too narrow for the heroes installed into it, and save the repaired map to...
- **replay_summary** — Read recorded games (.w3g) and report each one's map, length, players, and how and when every player left.
- **roundtrip** — Verify the map survives a load and save byte for byte.
- **script_check** — Check the map script for errors that stop it loading, war3map.j or war3map.lua.
- **script_decompile** — Turn every Lua entry of a map that ships as precompiled Lua 5.3 bytecode (war3map.lua or a module it requires, common in YDWE maps) back into Lua source...
- **script_format** — Reprint a Lua map script and save the map to out_path.
- **script_functions** — List every function declared in the map's compiled script, with where it starts and ends.
- **script_leaks** — Find handle leaks in a map's war3map.j (locations, groups, forces, effects, timers, text tags, lightning and triggers created and never destroyed), each...
- **script_references** — Find every use of a name in the map's compiled script.
- **script_to_lua** — Convert a JASS map to a Lua map and save it to out_path.
- **search** — Search the map's contents for a string, ignoring case.
- **sound_add** — Add a new sound definition (keyed by name) to the map's sound catalog and save the edited map to out_path.
- **sound_list** — List the map's sound catalog (war3map.w3s).
- **sound_remove** — Remove a sound definition from the map's sound catalog and save the edited map to out_path.
- **sound_set** — Set a field on a sound definition and save the edited map to out_path.
- **strings_list** — List the map's string table (war3map.wts).
- **terrain_blight** — Set or clear the blight (corrupted ground) flag over a brush, saving the edited map to out_path.
- **terrain_cliff** — Raise/lower/set the cliff (stepped-terrain) level over a brush, saving the edited map to out_path.
- **terrain_corner_get** — Show one terrain corner's full state.

## Claude Desktop Quick Installation
Heuristic fallback — verify the package name and runner against the repository README before running it. Uses `npx` (confidence: low):

```json
"mcpServers": {
  "warcraft-iii-map-tools": {
    "command": "npx",
    "args": ["-y","warcraft-iii-map-tools"]
  }
}
```

## Documentation

## What Warcraft III Map Tools does

The Warcraft III Map Tools MCP server gives AI applications structured access to Warcraft III map archives in `.w3x` and `.w3m` formats. It supports read-only inspection, behavioral audits, comparisons, and selected edits. The implementation is designed to preserve the bytes of files that are not changed.

Use it to inspect internal archive entries, read text files, check import-table consistency, list forces and cameras, examine hero registrations, and review World Editor catalog data. Audit tools cover map object data, hero ability wiring, deeper ability runtime chains, readiness, and fidelity of ported objects. Other tools compare maps, recover names from protected archives, and report differences between map versions.

Write operations can add, remove, or update cameras; change force flags; install hero definitions; replace an internal file from disk; and save the result to a separate output path. Reforged doctor tools inspect compatibility and can repair a copy of a map for Reforged 3.0.

## How it works

The Warcraft III Map Tools MCP server runs as a standard stdio MCP process. An MCP client starts `wc3-mcp.exe` without arguments and sends tool calls over the MCP connection. Each map-editing operation takes an input map and an `out_path` for the edited result where applicable, rather than requiring an in-place modification.

The server is based on the `wc3ctl` project and exposes the same MCP server available through `wc3ctl mcp serve`. Its release includes the required .NET runtime. Base-game asset and catalog operations can use Warcraft III Reforged data; ordinary map operations do not require the game to be installed.

## Setup and configuration

The supported runtime is 64-bit Windows. The installer can download the latest release, verify its SHA-256 checksum, place it under `%LOCALAPPDATA%\Programs\wc3-mcp`, add the directory to the user PATH, and configure supported AI applications. A manual ZIP installation can be completed with `wc3-mcp.exe install --all`. The same commands can update or remove the setup.

The Warcraft III directory is searched automatically through the Windows registry and several standard installation paths. Set `WC3_GAME_DIR` during client setup when the game is installed elsewhere, or pass `game_dir` to an individual tool call. A per-call `game_dir` takes precedence over the environment setting and automatic detection.

Claude Desktop users can install the Windows `.mcpb` package. Other supported setup commands configure Claude Code, Cursor, VS Code, Windsurf, Gemini CLI, Codex CLI, Cline, LM Studio, and Zed. Other MCP applications can start the executable directly as a stdio server.

## Tools and capabilities

The available tools include:

- Inspecting archive entries, internal text files, imports, forces, cameras, hero rosters, and World Editor catalogs.
- Listing valid icon and model asset paths from imported map files and base-game data.
- Auditing object data, hero wiring, ability chains, runtime readiness, and port fidelity.
- Comparing maps or map versions, including added, removed, and changed internal files.
- Listing or bundling unit dependencies for porting work.
- Adding, removing, or modifying cameras and force alliance or sharing flags.
- Installing and linting hero definitions.
- Replacing internal file bytes and repairing a copy for Reforged 3.0.

## Limitations and notes

The Warcraft III Map Tools MCP server requires 64-bit Windows because its game-data reader uses a Windows library. Reforged is required for operations that read base-game data, such as some asset or catalog lookups; map tools can run without it.

The supplied material describes 105 tools, but the available listing excerpt does not show every tool. Write tools should be directed to an output path or a copy when preserving the source map matters. Source builds require the .NET 8 SDK, and `CascLib.dll` must remain beside the executable.

_Full upstream README: https://allmcps.com/mcp/warcraft-iii-map-tools/readme_

