ascent-unreal-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ASCENT_ROOT | No | Repository root (default: cwd/../..). | cwd/../.. |
| ASCENT_UPROJECT | No | Project path (default: ASCENT_ROOT/Ascent/Ascent.uproject). | ASCENT_ROOT/Ascent/Ascent.uproject |
| UNREAL_EDITOR_CMD | No | Commandlet executable (default: UE 5.7 Program Files). | UE 5.7 Program Files |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| unreal_run_python_scriptA | Run an existing python script from the repo scripts/ folder through a headless commandlet. Optional args reach the script via sys.argv (no whitespace in an arg). Output is filtered to marker lines (default: 'MCP |LogPython') — have your script unreal.log() what matters. |
| unreal_probe_actorA | READ-ONLY: load a map and read actor properties by their editor display names (e.g. 'Use Auroras', 'Ultra Dynamic Weather'). Matches actors whose label OR class contains actorMatch (case-insensitive). This is the tool shape that found the dead aurora switch and the null sky->weather reference — read back the ACTUAL state instead of trusting push logs. |
| unreal_set_actor_propertiesB | Set editor-display-name properties on matching actors in a map, then SAVE the map. Values are converted to python literals safely (booleans included). Mutating: refuses while an editor is open unless allowWithEditorOpen. |
| unreal_duplicate_mapB | Duplicate a /Game/... map asset. Mutating: refuses while an editor is open unless allowWithEditorOpen. |
| unreal_apply_material_to_actorA | Assign a material to a slot on a named actor's static mesh component in one map, then save. Mutating: refuses while an editor is open unless allowWithEditorOpen. |
| uds_inspect_levelA | READ-ONLY: report the sky (UDS) and weather (UDW) actors in a map with the fields that have actually burned us: aurora/space master switches, the sky->UDW reference, snow/rain state, manual-override pins, time of day. Returns one MCP INSPECT_JSON line. |
| uds_apply_presetA | Apply a named editor-time UDS lookdev preset to the sky actor and save the map. WARNING: runtime phase profiles (DA_TOD_*) override these every tick in-game — this is for in-editor look checks only. Mutating: refuses while an editor is open unless allowWithEditorOpen. |
| ascent_unreal_statusA | Server/environment status: paths, whether an Unreal editor is currently running (file-lock risk for mutating tools), and generated-script housekeeping. |
| unreal_list_assetsA | READ-ONLY: query the asset registry under a /Game path, optionally filtering by class-name and asset-name substrings. Cheap discovery before probe/set tools. |
| unreal_asset_probeA | READ-ONLY: read properties by display name off ANY asset — DataAssets (e.g. TOD profiles), meshes, materials — or a Blueprint's class defaults (classDefaults: true). The asset-side sibling of unreal_probe_actor. |
| unreal_set_asset_propertiesA | Set simple-valued properties (number/bool/string; a /Game/... string is auto-loaded as an object reference) on an asset or a Blueprint's class defaults, then save the asset. Struct/array properties are NOT supported — use unreal_run_python_script for those. |
| unreal_spawn_actorsA | Batch-spawn actors into a map and save. Each entry: source (a /Game static mesh or Blueprint asset, or a /Script/Module.Class), label, location, optional rotation/scale/tags. clearTag first deletes every actor carrying that tag (idempotent re-runs). NOTE: headless commandlets have no physics scene — no ground traces; supply explicit Z. |
| unreal_import_assetsA | Batch-import files (FBX meshes, PNG/JPG textures, WAV) into /Game destinations via AssetImportTask. textureType configures compression: 'normal' (TC_Normalmap, sRGB off), 'mask' (sRGB off), 'color' (default). Files must live inside the repo. Big texture batches can exhaust headless memory — chunk them. |
| unreal_create_material_instanceB | Create (or update) a MaterialInstanceConstant from a parent material and set scalar/vector/texture parameters, then save. |
| unreal_import_animationA | Import an animation-only FBX onto an EXISTING skeleton (the Trekker pipeline: no mesh, exported-time length, no default sample rate). Post-tune the sequence with unreal_set_asset_properties if needed. |
| unreal_snapshot_levelA | Regenerate the level snapshot markdown (label, class, transform, tags for every actor) that CLAUDE.md declares the authoritative source of level truth. Writes inside the repo. |
| ascent_apply_then_verifyB | Run a repo script, then — in the SAME commandlet boot — probe an actor or asset and check expectations against the read-back values. The whole call fails unless the script succeeds AND every expectation passes. 'Probe before you believe', as infrastructure: a mutation that can't prove itself didn't happen. |
| unreal_screenshotA | THE EYES: launch a -game instance of a map, wait for it to settle, teleport through vantages (BugItGo) and/or run console commands, screen-capture each, kill the game, return PNG paths. This is the pattern every visual verification this project ever did was built on. Windows-only; steals foreground focus while capturing. Serialized with all other runs. |
| weather_capture_phase_stillsA | One-call arc verification: set a TOD profile's driver to a fast FixedTimer, launch the map in -game, detect the run start from the log, capture a screenshot as each PHASE becomes active (named by phase), kill the game, and restore the original driver. Needs the machine idle-ish: captures are focus-verified and report NOFOCUS if you're typing elsewhere. |
| anim_audit_assetsA | READ-ONLY animation audit for a skeleton: every AnimSequence (play length, rate scale, additive), BlendSpace (sample positions + which sequence at which speed), Montage, and AnimBlueprint under a search path, plus which assets the AnimBP actually references (orphan detection via the asset registry). The state-machine GRAPH itself is Blueprint territory — audit that via the live UnrealClaude plugin, not headless. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 20 tools
Most tools are cleanly separated by resource and action: actor probes/setters, asset probes/setters, imports, screenshots, and UDS/weather tools. The only likely confusion is between the generic unreal_probe_actor and the UDS-specialized uds_inspect_level for sky/weather actors, and between unreal_screenshot and weather_capture_phase_stills; detailed descriptions minimize misselection.
The set is consistently snake_case and mostly uses an action-first pattern with an unreal_ prefix. However prefixes vary (uds_, ascent_, weather_, anim_), 'unreal_asset_probe' reverses the verb-noun order of 'unreal_probe_actor', and 'unreal_screenshot'/'ascent_unreal_status' are noun-like rather than verb-first, making the pattern readable but not uniform.
20 tools is at the high end for an MCP server and feels heavy, but the surface spans several subdomains: asset registry, actor editing, import pipeline, UDS/weather, screenshots, and animation audit. The count is defensible but borderline.
The set covers the main asset and actor lifecycles: discover, probe, set, spawn/import, create material instances, duplicate maps, snapshot levels, and verify mutations. Gaps like generic asset/actor deletion and new-map creation exist, but tag-based cleanup and the script/verify escape hatches make them workable.