← Back to search

zandronum-mcp

GitHub Actions Scanned 22d ago

MCP server for driving and introspecting a local Zandronum dev build.

npm
C
66.7 / 100

Versions

0.4.3latest
Jul 19, 2026
0.4.2
Jul 19, 2026
0.4.1
Jul 18, 2026
0.4.0
Jul 18, 2026
0.3.5
Jul 18, 2026
+ show 7 moreshow less
0.3.4
Jul 18, 2026
0.3.3
Jul 18, 2026
0.3.2
Jun 26, 2026
0.3.1
Jun 26, 2026
0.3.0
Jun 26, 2026
0.2.0
Jun 26, 2026
0.1.0
Jun 26, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 56

run_command
annotations: none low

Send a raw console command to a running, bridge-patched Zandronum instance and return its captured output.

text string
list_actor_classes
annotations: none low

Run `dumpactors` and return the registered DECORATE/actor classes as structured data.

summon
annotations: none low

Spawn an actor of the given class at the player's position.

kind enum className string
give
annotations: none low

Give an inventory item to the player.

item string amount number
take
annotations: none low

Remove an inventory item from the player.

item string amount number
load_map
annotations: none low

Load a map by its lump name (e.g. MAP01, E1M1).

mapName string
list_running_scripts
annotations: none low

Run `scriptstat` and return the currently running ACS scripts and their states.

run_script
annotations: none low

Run (puke) an ACS script by number or name, with optional integer arguments.

args array always boolean script union
screenshot
annotations: none low

Take a screenshot of the game and return it as an image so it can be viewed.

menu_key
annotations: none low

Send a single menu navigation key (GUI key event) to the active menu.

key enum
menu_nav
annotations: none low

Send a sequence of menu keys (e.g. ["down","down","enter"]) with a small delay between each.

steps array
menu_text
annotations: none low

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.

text string
mouse_move
annotations: none low

Move the pointer to a screen position, in pixels from the top-left of the game window. Drives hover-only UI -- tooltips, hot states -- which nothing else here can reach.

x number y number
mouse_click
annotations: none low

Press and release the left button at a position. Give toX/toY to DRAG: press at the first point, move through it, release at the second. `double` sends a double-click.

x number y number toX number toY number double boolean
mouse_wheel
annotations: none low

Wheel notches at the current pointer position. Positive scrolls up, negative down.

notches number
verify_menu
annotations: none low

Open a menu (via a console command like `menu_options`), apply navigation steps, then return a screenshot to verify it.

open string steps array
set_pause
annotations: none low

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.

paused boolean
step
annotations: none low

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.

tics number
get_acs_var
annotations: none low

Read an ACS world or global variable by index.

index number
set_acs_var
annotations: none low

Write an ACS world or global variable by index.

index number value number
list_acs_vars
annotations: none low

Run `dumpacsvars` and return all non-zero ACS world/global variables, optionally filtered by scope.

acs_index
annotations: none low

Parse a directory of .acs source files and return symbol counts (scripts, functions, numeric defines). Reads files directly; no game needed.

find_acs_symbol
annotations: none low

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.

ref string
behavior_names
annotations: none low

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).

file string
list_saves
annotations: none low

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.

dir string
save_game
annotations: none low

Run `save` to write a savegame (single-player / cooperative only). NOTE: saving heavily-scripted mods can crash the engine — All-out-War crashes on save; vanilla and simple maps save fine.

name string description string
load_game
annotations: none low

Run `load` to restore a savegame by name.

name string
play_demo
annotations: none low

Run `playdemo` to play back a recorded .lmp demo. (Recording is via the -record launch arg, not a console command.)

name string
player_state
annotations: none low

Run `currentpos` and return the player's position, angle, floor height, sector, and light level.

actor_state
annotations: none low

Run `dumpactor` and return an actor's live state: class, health, position, current DECORATE state (sprite/frame/tics, e.g. TNT1 A 0), inventory, and (for players) ready weapon + morph status. Defaults to the player; pass a TID for any actor.

tid number
read_hud
annotations: none low

Run `dumphud` and return everything the engine painted last frame: HUD text strings (with screen x/y), images (by texture name + position), and active ACS HUD messages (full composed text, layer, position, remaining tics). Captures menus too.

actors_near
annotations: none low

Run `actorsnear` and return actors within a radius (map units, default 512) of the player: class, health, position, and current sprite.

radius number
inspect_target
annotations: none low

Run `linetarget` and return the actor the player is aiming at (class, health, spawn health).

list_scripts
annotations: none low

Run `dumpscripts` and return every script across loaded modules (module, number, name, type, arg count).

list_functions
annotations: none low

Run `dumpfunctions` and return named ACS functions across loaded modules.

profile_scripts
annotations: none low

Run `acsprofile` and return per-script/function execution stats (total instructions, runs, avg/min/max).

profile_window
annotations: none low

Clear ACS profiling, wait N seconds, then return what ran during that window — `what's hot right now` rather than cumulative since map start.

seconds number
list_modules
annotations: none low

Run `dumpmodules` and return the loaded ACS modules (id + name). Map vars live only while a map is loaded.

get_map_var
annotations: none low

Read a map-scope ACS variable by name (searched across loaded modules).

set_map_var
annotations: none low

Write a map-scope ACS variable by name.

value number
get_map_array
annotations: none low

Read one element of a map-scope ACS array by name and index.

index number
set_map_array
annotations: none low

Write one element of a map-scope ACS array by name and index.

index number value number
renderer_info
annotations: none low

Active backend (software/opengl), GL vendor/shader model, resolution, fullscreen/vsync.

viewport_info
annotations: none low

The 3D view window rect (x/y/width/height) and screenblocks size.

hud_info
annotations: none low

Status bar Y position, status bar / HUD scale, alt HUD, crosshair.

map_info
annotations: none low

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.

map string
get_sector
annotations: none low

Return one sector's properties by index (all fields, format-native keys).

map string index number
get_linedef
annotations: none low

Return one linedef by index, with its referenced sidedefs (textures + offsets) resolved.

map string index number
find_sectors_by_tag
annotations: none low

Return all sectors whose tag/id matches (binary `tag` or UDMF `id`).

map string tag number
launch_instance
annotations: none low

Spawn a bridge-enabled Zandronum process with the given options and attach to it. Requires ZANDRONUM_EXE to be set.

map string iwad string files array skill number width number height number extraArgs array fullscreen boolean
attach_instance
annotations: none low

Connect to a bridge-patched Zandronum that is ALREADY running — one you launched by hand, or from a terminal — and bind it to an instance number for the other tools. Only needed for engines this session didn't launch: launch_instance binds automatically. Defaults to this instance's conventional port.

port number
kill_instance
annotations: none low

Stop a launched instance and detach from it. Asks the engine to quit itself first (a hard kill mid-render can wedge macOS GPU teardown and leave an unkillable process), then force-kills if it doesn't exit.

reset
annotations: none low

Kill every instance this session launched, and reap engines ORPHANED by earlier sessions (whose launcher is gone) that could otherwise squat bridge ports. Engines belonging to another running editor window are left alone. Pass all:true to also kill those — only do that if you know no other session is using this engine build.

get_startup_errors
annotations: none low

Read the engine's captured console log for an instance and surface DECORATE/ACS compile errors and fatal startup errors. Works even when the bridge never came up (e.g. the engine aborted on a bad script) — exactly when the other tools can't connect.

get_crash
annotations: none low

Return the signal, faulting address, and symbolized backtrace the bridge's crash handler captured the last time the engine crashed (segfault/abort/bus error/etc.). Use this when an instance dies unexpectedly — e.g. run_command reports the bridge closed. Empty if the instance has not crashed.

name
annotations: none low

Permissions 3

network medium
Server uses network capabilities via: net
shell high
Server uses shell capabilities via: child_process, spawn()
env_vars low
Server uses env_vars capabilities via: process.env

Scan Findings 128

low
Tool 'run_command' has no annotations annotation_checker · 100%
low
Tool 'list_actor_classes' has no annotations annotation_checker · 100%
low
Tool 'summon' has no annotations annotation_checker · 100%
low
Tool 'give' has no annotations annotation_checker · 100%
low
Tool 'take' has no annotations annotation_checker · 100%
low
Tool 'load_map' has no annotations annotation_checker · 100%
low
Tool 'list_running_scripts' has no annotations annotation_checker · 100%
low
Tool 'run_script' has no annotations annotation_checker · 100%
low
Tool 'screenshot' has no annotations annotation_checker · 100%
low
Tool 'menu_key' has no annotations annotation_checker · 100%
low
Tool 'menu_nav' has no annotations annotation_checker · 100%
low
Tool 'menu_text' has no annotations annotation_checker · 100%
low
Tool 'mouse_move' has no annotations annotation_checker · 100%
low
Tool 'mouse_click' has no annotations annotation_checker · 100%
low
Tool 'mouse_wheel' has no annotations annotation_checker · 100%
low
Tool 'verify_menu' has no annotations annotation_checker · 100%
low
Tool 'set_pause' has no annotations annotation_checker · 100%
low
Tool 'step' has no annotations annotation_checker · 100%
low
Tool 'get_acs_var' has no annotations annotation_checker · 100%
low
Tool 'set_acs_var' has no annotations annotation_checker · 100%
low
Tool 'list_acs_vars' has no annotations annotation_checker · 100%
low
Tool 'acs_index' has no annotations annotation_checker · 100%
low
Tool 'find_acs_symbol' has no annotations annotation_checker · 100%
low
Tool 'behavior_names' has no annotations annotation_checker · 100%
low
Tool 'list_saves' has no annotations annotation_checker · 100%
low
Tool 'save_game' has no annotations annotation_checker · 100%
low
Tool 'load_game' has no annotations annotation_checker · 100%
low
Tool 'play_demo' has no annotations annotation_checker · 100%
low
Tool 'player_state' has no annotations annotation_checker · 100%
low
Tool 'actor_state' has no annotations annotation_checker · 100%
low
Tool 'read_hud' has no annotations annotation_checker · 100%
low
Tool 'actors_near' has no annotations annotation_checker · 100%
low
Tool 'inspect_target' has no annotations annotation_checker · 100%
low
Tool 'list_scripts' has no annotations annotation_checker · 100%
low
Tool 'list_functions' has no annotations annotation_checker · 100%
low
Tool 'profile_scripts' has no annotations annotation_checker · 100%
low
Tool 'profile_window' has no annotations annotation_checker · 100%
low
Tool 'list_modules' has no annotations annotation_checker · 100%
low
Tool 'get_map_var' has no annotations annotation_checker · 100%
low
Tool 'set_map_var' has no annotations annotation_checker · 100%
low
Tool 'get_map_array' has no annotations annotation_checker · 100%
low
Tool 'set_map_array' has no annotations annotation_checker · 100%
low
Tool 'renderer_info' has no annotations annotation_checker · 100%
low
Tool 'viewport_info' has no annotations annotation_checker · 100%
low
Tool 'hud_info' has no annotations annotation_checker · 100%
low
Tool 'map_info' has no annotations annotation_checker · 100%
low
Tool 'get_sector' has no annotations annotation_checker · 100%
low
Tool 'get_linedef' has no annotations annotation_checker · 100%
low
Tool 'find_sectors_by_tag' has no annotations annotation_checker · 100%
low
Tool 'launch_instance' has no annotations annotation_checker · 100%
low
Tool 'attach_instance' has no annotations annotation_checker · 100%
low
Tool 'kill_instance' has no annotations annotation_checker · 100%
low
Tool 'reset' has no annotations annotation_checker · 100%
low
Tool 'get_startup_errors' has no annotations annotation_checker · 100%
low
Tool 'get_crash' has no annotations annotation_checker · 100%
low
Tool 'name' has no annotations annotation_checker · 100%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
medium
Vulnerable dependency: @modelcontextprotocol/sdk@1.12.0 (GHSA-345p-7cg4-v4c7) dependency_analyzer · 95%
medium
Vulnerable dependency: @modelcontextprotocol/sdk@1.12.0 (GHSA-8r9q-7v3j-jr4g) dependency_analyzer · 95%
medium
Vulnerable dependency: @modelcontextprotocol/sdk@1.12.0 (GHSA-w48q-cv73-mx4w) dependency_analyzer · 95%
medium
Vulnerable dependency: vitest@2.1.0 (GHSA-5xrq-8626-4rwp) dependency_analyzer · 95%
medium
Vulnerable dependency: vitest@2.1.0 (GHSA-82fw-gwwq-j7x9) dependency_analyzer · 95%
medium
Vulnerable dependency: vitest@2.1.0 (GHSA-9crc-q9x8-hgqq) dependency_analyzer · 95%
info
package.json metadata manifest_parser · 100%
info
Tool: run_command manifest_parser · 85%
info
Tool: list_actor_classes manifest_parser · 85%
info
Tool: summon manifest_parser · 85%
info
Tool: give manifest_parser · 85%
info
Tool: take manifest_parser · 85%
info
Tool: load_map manifest_parser · 85%
info
Tool: list_running_scripts manifest_parser · 85%
info
Tool: run_script manifest_parser · 85%
info
Tool: screenshot manifest_parser · 85%
info
Tool: menu_key manifest_parser · 85%
info
Tool: menu_nav manifest_parser · 85%
info
Tool: menu_text manifest_parser · 85%
info
Tool: mouse_move manifest_parser · 85%
info
Tool: mouse_click manifest_parser · 85%
info
Tool: mouse_wheel manifest_parser · 85%
info
Tool: verify_menu manifest_parser · 85%
info
Tool: set_pause manifest_parser · 85%
info
Tool: step manifest_parser · 85%
info
Tool: get_acs_var manifest_parser · 85%
info
Tool: set_acs_var manifest_parser · 85%
info
Tool: list_acs_vars manifest_parser · 85%
info
Tool: acs_index manifest_parser · 85%
info
Tool: find_acs_symbol manifest_parser · 85%
info
Tool: behavior_names manifest_parser · 85%
info
Tool: list_saves manifest_parser · 85%
info
Tool: save_game manifest_parser · 85%
info
Tool: load_game manifest_parser · 85%
info
Tool: play_demo manifest_parser · 85%
info
Tool: player_state manifest_parser · 85%
info
Tool: actor_state manifest_parser · 85%
info
Tool: read_hud manifest_parser · 85%
info
Tool: actors_near manifest_parser · 85%
info
Tool: inspect_target manifest_parser · 85%
info
Tool: list_scripts manifest_parser · 85%
info
Tool: list_functions manifest_parser · 85%
info
Tool: profile_scripts manifest_parser · 85%
info
Tool: profile_window manifest_parser · 85%
info
Tool: list_modules manifest_parser · 85%
info
Tool: get_map_var manifest_parser · 85%
info
Tool: set_map_var manifest_parser · 85%
info
Tool: get_map_array manifest_parser · 85%
info
Tool: set_map_array manifest_parser · 85%
info
Tool: renderer_info manifest_parser · 85%
info
Tool: viewport_info manifest_parser · 85%
info
Tool: hud_info manifest_parser · 85%
info
Tool: map_info manifest_parser · 85%
info
Tool: get_sector manifest_parser · 85%
info
Tool: get_linedef manifest_parser · 85%
info
Tool: find_sectors_by_tag manifest_parser · 85%
info
Tool: launch_instance manifest_parser · 85%
info
Tool: attach_instance manifest_parser · 85%
info
Tool: kill_instance manifest_parser · 85%
info
Tool: reset manifest_parser · 85%
info
Tool: get_startup_errors manifest_parser · 85%
info
Tool: get_crash manifest_parser · 85%
info
Tool: name manifest_parser · 85%
info
Transport: stdio manifest_parser · 90%
info
Required env vars (7) manifest_parser · 80%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
medium
Permission: network access detected permission_analyzer · 90%
high
Permission: shell access detected permission_analyzer · 95%
low
Permission: env_vars access detected permission_analyzer · 90%
info
SBOM generated: 267 components sbom_generator · 100%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%