MCP server for Unreal Engine — AI-powered level editing via any MCP client
Unreal MCP has 10 tools with significant definition gaps. Tool names follow verb_noun convention (good), but descriptions are inconsistent, some are detailed (generate_ue_class: 180 chars), others minimal (get_project_info: 0 chars visible). Input schemas are present but lack parameter descriptions in most tools. No output schemas documented. Error handling is basic (format_error utility exists but recovery guidance is absent). The codegen tools accept JSON strings rather than structured objects, forcing LLMs to construct JSON manually, error-prone and violates the chat-data-model pattern. Destructive tools (clear_all_procedural) lack confirmation or dry-run support.
Spawn multiple buildings or district zones in a single coordinated operation. Args: blueprints_json: JSON string with Intent 'BatchSpawn' and an array of 'Blueprints'. Returns: JSON receipt string summarizing the batch generation results.
Remove all procedural buildings and clear all HISM instances managed by CityManager. Returns: JSON receipt string confirming clearance.
Remove a specific procedural building by its unique ID while keeping all other buildings intact. Args: building_id: The unique string identifier of the building to remove (e.g. 'House_01'). Returns: JSON receipt string confirming deletion and ledger re-indexing.
Generate a UE C++ class from structured JSON. Pass a JSON object with: class_name (string), parent_class (string, default AActor), variables (array of {name, type, default, category}), functions (array of {name, return_type, params, body}), tick_enabled (bool), tick_body (string), begin_play_body (string).
Get the configured Unreal project name and path.
JSON string parameters instead of structured objects. Tools like generate_ue_class and spawn_procedural_building accept 'blueprint_json' as a string, forcing LLMs to manually construct JSON. This violates the chat-data-model pattern and increases error rates. Should accept structured objects with typed fields.
No output schemas documented. Tools return free-text strings (e.g., 'Generated A_MyClass : AActor...') rather than structured JSON. LLMs cannot reliably extract IDs, status, or coordinates for downstream tool calls. Violates response-shaper pattern.
Destructive tool (clear_all_procedural) lacks confirmation or dry-run. No confirmation-request pattern. Agents can irreversibly delete all procedural buildings without safeguard.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Get a summary of all actors in the scene with positions.
List all .h and .cpp files in the UE project Source directory.
List all supported variable types for code generation.
Preview generated C++ code WITHOUT writing files. Same JSON format as generate_ue_class.
Spawn a procedural building or structure using the C++ Delegator engine. Args: blueprint_json: JSON string matching the Unreal-MCP Delegator blueprint schema. Must contain Intent ('Spawn'), ID, RequestedLoc ([x,y,z]), and Parameters. Returns: JSON receipt string indicating status, actual placed coordinates, and instance IDs.
Missing parameter descriptions in input schemas. Tools like get_scene_summary have empty input {} but no description of what it returns or when to call it. Violates tool-description pattern.
No error recovery guidance. Error responses use format_error() but do not tell LLMs what to do next (e.g., 'Invalid JSON, try calling preview_ue_class first'). Violates recovery-guide pattern.