Warcraft 3 MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| wc3_list_filesA | List the internal files inside a Warcraft III .w3x/.w3m map archive. |
| wc3_map_infoA | Parse war3map.w3i: map name, author, description, players, playable area, script language, flags, etc. |
| wc3_read_objectsA | Read an object-data table as JSON. "kind" is one of units/items/abilities/buffs/destructables/doodads/upgrades. Returns a { original, custom } modification table. |
| wc3_write_objectsA | Write an object-data table back into the map and save. Pass the same { original, custom } shape returned by wc3_read_objects. Saves to outPath, or ".edited.w3x" beside the source if omitted (pass the source path to overwrite in place). |
| wc3_read_scriptB | Read the map script (war3map.j JASS or war3map.lua). |
| wc3_write_scriptA | Replace the map script (war3map.j / war3map.lua) and save. Saves to outPath, or ".edited.w3x" beside the source if omitted. |
| wc3_read_fileC | Extract one internal file as text (utf8) or base64. |
| wc3_replace_fileB | Replace (or add) an internal file from a file on disk, then save. Useful for swapping models/textures/imports. |
| wc3_read_placementsA | Read what is placed on the map in the World Editor: preplaced units/items (war3mapUnits.doo) and doodads/destructables (war3map.doo). Returns { units: [...], doodads: [...] } with type code, position, angle, owner, etc. |
| wc3_list_unitsA | List the preplaced units and items in war3mapUnits.doo with their index, creationNumber, type code, owner, position and facing. Use the index/creationNumber with wc3_modify_unit or wc3_delete_unit. |
| wc3_place_unitA | Add a preplaced unit or item to the map at world coordinates (x, y). The type is a 4-char raw code, e.g. "ugho" (Ghoul), "hfoo" (Footman), or an item code. Saves to outPath, or ".edited." beside the source (pass the source path to overwrite in place). |
| wc3_modify_unitA | Change fields on the unit(s) matched by |
| wc3_delete_unitA | Remove the unit(s) matched by |
| wc3_overviewA | One-call snapshot of the map: info (name/author/players), file count, script language, terrain summary, placed unit/doodad counts, custom-object counts, and the names of regions/cameras/sounds plus a trigger summary. Use this first to orient on an unfamiliar map. |
| wc3_read_stringsA | Read war3map.wts as a { id: text } map. Many map fields are stored as TRIGSTR_### references into this table (map/unit names, quest text, tooltips, …). |
| wc3_set_stringA | Set the text of a TRIGSTR entry by numeric id (the ### in TRIGSTR_###), or omit id to append a new entry and get back its TRIGSTR_### token. Saves the map. |
| wc3_read_regionsB | List the rectangular regions (war3map.w3r) — name, id, rect bounds, weather, ambient sound, color. |
| wc3_add_regionB | Add a rectangular region defined by world-coordinate bounds (left/right/bottom/top). Returns the region with its assigned id (usable from JASS as gg_rct_). Saves the map. |
| wc3_modify_regionA | Change bounds/name/weather/sound/color on the region(s) matched by id, name, or index. Saves the map. |
| wc3_delete_regionA | Remove the region(s) matched by id, name, or index. Saves the map. |
| wc3_read_camerasA | List predefined cameras (war3map.w3c) — name, target, rotation, angle of attack, distance, fov, etc. |
| wc3_add_cameraA | Add a predefined camera at target (x,y). Unspecified fields use World Editor defaults (distance 1650, aoa 304, fov 70, rotation 90). Usable from JASS as gg_cam_. Saves the map. |
| wc3_delete_cameraB | Remove the camera(s) matched by name or index. Saves the map. |
| wc3_read_soundsA | List sound definitions (war3map.w3s) — variable name, file path, and playback settings. |
| wc3_read_terrainA | Summarize war3map.w3e: tileset, ground/cliff tileset list, tilepoint dimensions, world size, and height/water ranges. |
| wc3_read_triggersA | Inspect the GUI trigger tree (war3map.wtg): categories, variables, and per-trigger metadata (name, enabled, comment, action count). GUI triggers compile to the map script — to change behavior reliably, edit the script (wc3_add_trigger). |
| wc3_read_importsA | List custom imported files declared in war3map.imp (models, textures, sounds, …). Their bytes are reachable via wc3_read_file / wc3_replace_file. |
| wc3_list_doodadsA | List preplaced doodads/destructables in war3map.doo with index, editorId, type code, position, angle, scale, variation, life. Optionally filter by type. Use index/editorId with wc3_modify_doodad / wc3_delete_doodad. |
| wc3_place_doodadB | Add a doodad/destructable at (x,y). Type is a 4-char code, e.g. "LTlt" (a tree) or "ATtr" (a rock). Saves the map. |
| wc3_modify_doodadA | Change fields on the doodad(s) matched by editorId, index, or type. Saves the map. |
| wc3_delete_doodadB | Remove the doodad(s) matched by editorId, index, or type. Saves the map. |
| wc3_create_objectA | Create a custom object (unit/item/ability/buff/destructable/doodad/upgrade) derived from a base type, setting any fields. newId is a fresh 4-char code (e.g. "x000"); baseId is the 4-char code to copy (e.g. "hfoo"). fields are { id (4-char field code), type, value, level?, column? }. Saves the map. |
| wc3_add_triggerA | Splice custom JASS/Lua into the map script and optionally wire it to run at map init. |
| wc3_open_in_editorA | Launch the Warcraft III World Editor on the given map so the user can see/verify the edits. (The World Editor has no automation API; this just opens the edited file.) Pass exePath to override auto-detection. |
| wc3_test_mapA | Launch Warcraft III running the given map (windowed by default) so the change can be played immediately. Pass exePath to override auto-detection, or windowed=false for fullscreen. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/YElwiddi/warcraft-3-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server