zandronum-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ZANDRONUM_EXE | No | Path to the Zandronum executable (optional, required for launching the game) | |
| ZANDRONUM_BRIDGE_HOST | No | Host for the bridge server (default 127.0.0.1) | |
| ZANDRONUM_BRIDGE_PORT | No | Port for the bridge server (default 7777) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| run_commandC | Send a raw console command to a running, bridge-patched Zandronum instance and return its captured output. |
| list_actor_classesC | Run |
| summonC | Spawn an actor of the given class at the player's position. |
| giveC | Give an inventory item to the player. |
| takeC | Remove an inventory item from the player. |
| load_mapB | Load a map by its lump name (e.g. MAP01, E1M1). |
| list_running_scriptsB | Run |
| run_scriptC | Run (puke) an ACS script by number or name, with optional integer arguments. |
| screenshotC | Take a screenshot of the game and return it as an image so it can be viewed. |
| menu_keyC | Send a single menu navigation key (GUI key event) to the active menu. |
| menu_navB | Send a sequence of menu keys (e.g. ["down","down","enter"]) with a small delay between each. |
| menu_textB | Type a string into the active menu text-entry field (e.g. the player name box after pressing enter on it), one character at a time. |
| verify_menuC | Open a menu (via a console command like |
| set_pauseA | Set the engine's master pause flag directly. Use this to resume a backgrounded instance that auto-paused on focus loss, so the simulation keeps advancing while the MCP drives it. |
| stepB | Resume the game, let it run for the given number of tics (35 tics = 1 second), then pause again. Lets you advance the simulation a deterministic-ish amount to observe time-based effects (charging, projectiles, animations) without keeping the window focused. |
| get_acs_varC | Read an ACS world or global variable by index. |
| set_acs_varB | Write an ACS world or global variable by index. |
| list_acs_varsB | Run |
| acs_indexC | Parse a directory of .acs source files and return symbol counts (scripts, functions, numeric defines). Reads files directly; no game needed. |
| find_acs_symbolA | Resolve a script number or a script/function name to its symbol(s) — name, number, file:line. Turns a profiler 'script 1017' into a source location. |
| behavior_namesA | Read function and named-script names from a mod's compiled ACS (BEHAVIOR/library lumps) in a WAD or PK3 — for source-less mods. Numbered scripts have no names in bytecode (use find_acs_symbol with source for those). |
| list_savesA | List .zds savegames in the save directory with metadata (title, map, engine, game wad, creation time) read from each save's PNG text chunks. No running game needed. |
| save_gameB | Run |
| load_gameC | Run |
| play_demoB | Run |
| player_stateC | Run |
| actor_stateB | Run |
| read_hudC | Run |
| actors_nearA | Run |
| inspect_targetC | Run |
| list_scriptsB | Run |
| list_functionsC | Run |
| profile_scriptsB | Run |
| profile_windowA | Clear ACS profiling, wait N seconds, then return what ran during that window — |
| list_modulesB | Run |
| get_map_varC | Read a map-scope ACS variable by name (searched across loaded modules). |
| set_map_varC | Write a map-scope ACS variable by name. |
| get_map_arrayC | Read one element of a map-scope ACS array by name and index. |
| set_map_arrayC | Write one element of a map-scope ACS array by name and index. |
| renderer_infoC | Active backend (software/opengl), GL vendor/shader model, resolution, fullscreen/vsync. |
| viewport_infoC | The 3D view window rect (x/y/width/height) and screenblocks size. |
| hud_infoD | Status bar Y position, status bar / HUD scale, alt HUD, crosshair. |
| map_infoA | Read a map from a WAD and return its format (doom/hexen/udmf) and entity counts. Reads the file directly — the game need not be running. |
| get_sectorC | Return one sector's properties by index (all fields, format-native keys). |
| get_linedefB | Return one linedef by index, with its referenced sidedefs (textures + offsets) resolved. |
| find_sectors_by_tagC | Return all sectors whose tag/id matches (binary |
| launch_instanceB | Spawn a bridge-enabled Zandronum process with the given options and attach to it. Requires ZANDRONUM_EXE to be set. |
| kill_instanceC | Stop a launched instance's process and detach from it. |
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/rc4l/ZandronumMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server