Skip to main content
Glama
MCPBridge Server

MCPBridge Server

MCPBridge Server

Companion MCP server for the MCP Bridge Unreal Engine 4.27 editor plugin. It translates Model Context Protocol tool calls from AI coding agents (Claude Code, Codex, Cursor, or any MCP client) into HTTP commands for the listener that the plugin runs inside the Unreal editor.

AI agent (MCP client) --stdio--> this server --HTTP localhost:8080--> UE4.27 editor (MCP Bridge plugin)

All communication stays on your machine: the server talks only to localhost:8080, where the plugin's in-editor listener accepts connections from the local machine only.

Requirements

  • Node.js 18 or newer

  • The MCP Bridge plugin installed and enabled in a UE 4.27 project (available on Fab; the plugin's Quick Start covers editor setup)

Related MCP server: Unreal-MCP-Ghost

Setup

npm install
npm run build

Then register the server with your MCP client. For Claude Code, add this to your project's .mcp.json (adjust the path to where you cloned this repo):

{
  "mcpServers": {
    "unreal-bridge": {
      "command": "node",
      "args": ["<path-to-this-repo>/dist/index.js"]
    }
  }
}

Start your UE 4.27 project with the plugin enabled, then ask your agent to run test_connection. A healthy reply includes the engine version and project paths.

What the tools cover

150+ tools across: actor and level editing, Blueprint creation and compilation, Blueprint member/graph editing with schema-validated pin connections, gameplay framework generation (GameMode/Character/controller/HUD with class defaults wired), input mappings and control-scheme presets, camera rig presets, Blackboards and Behavior Trees built from JSON, C++ class generation and UnrealBuildTool compilation as background jobs with structured error reporting, materials and material instances, DataTables, audio components, map creation, viewport control and screenshots, and a searchable project intelligence index.

Every editor mutation runs in a UE4 transaction (undo works), compiles and saves the affected asset, and reports failure explicitly - a broken Blueprint is never reported as success.

Tests

npm test              # unit tests against a mock listener; no Unreal needed
npm run test:integration  # requires UE 4.27 running with the plugin listener

The registry-consistency test cross-checks this server's tools against the plugin's Python command router; it runs in the plugin's development repository and skips automatically here.

Versioning

Server and plugin versions track each other (this is v0.4.0, matching plugin v0.4.0). When updating one, update the other.

License

MIT - see LICENSE.

Available Tools

122 tools
actor_deleteB

Delete actors by name or name pattern (supports * and ? wildcards).

Inputs: actor_name (required).

actor_duplicateA

Duplicate an existing actor with an optional offset. Returns validation results by default.

Inputs: actor_name (required), offset, new_name, validate.

actor_modifyA

Change an actor's location, rotation, scale, mesh, or visibility. Returns validation results by default.

Inputs: actor_name (required), mesh, scale, visible, +3 more.

actor_organizeA

Move actors into World Outliner folders.

Inputs: actors (required), folder (required).

actor_snap_to_socketC

Snap one actor to another actor's named socket.

Inputs: actor_name (required), socket_name (required), target_actor (required).

actor_spawnA

Spawn an actor from an asset path at a given location/rotation/scale. Returns validation results by default.

Inputs: asset_path (required), name, scale, folder, +3 more.

ai_nav_rebuildA

Rebuild navigation data in the loaded level (RebuildNavigation console command).

Inputs: no named parameters.

anim_blueprint_build_from_jsonA

Build an Animation Blueprint from a JSON specification. Creates the AnimBP asset with the given skeleton and populates the anim graph from the JSON spec (state machines, blend spaces, slots, etc.).

Inputs: json_spec (required), asset_name (required), package_path (required), skeleton_path (required).

asset_infoA

Return detailed info for a single asset: type, bounds, material slots, LOD count.

Inputs: path (required).

asset_listA

List assets with optional filters. Returns asset paths, types, and names.

Inputs: path, recursive, asset_type, name_pattern.

asset_load_diagnosticsC

Diagnose asset loads, Blueprint generated classes, dependencies, referencers, and script class availability.

Inputs: asset_paths, class_paths, include_referencers, include_dependencies.

asset_save_manyA

Save only the explicit asset paths passed in. Safer than project-wide save-all.

Inputs: paths (required).

audio_component_addA

Add an AudioComponent to a Blueprint, optionally assigning a SoundBase asset and auto-activate. Compiles and saves.

Inputs: blueprint_path (required), sound, attach_to, auto_activate, +1 more.

batch_operationsB

Execute multiple tool calls in a single request with shared validation.

Inputs: operations (required).

batch_spawnB

Spawn multiple actors in one call. Each spawn definition uses the same format as actor_spawn.

Inputs: spawns (required).

behavior_tree_createA

Create a BehaviorTree asset bound to an existing Blackboard, optionally building its node graph from a BehaviorTreeBuilder JSON spec (26 node types: Selector/Sequence/SimpleParallel composites, MoveTo/Wait/etc tasks, Blackboard/Cooldown/etc decorators, services). Optionally adds keys to the blackboard first.

Inputs: name (required), path (required), blackboard_path (required), keys, +1 more.

blackboard_createA

Create a BlackboardData asset with typed keys (Bool, Int, Float, String, Name, Vector, Rotator, Object, Class).

Inputs: name (required), path (required), keys.

blueprint_add_event_dispatcherA

Create an event dispatcher (multicast delegate) with an optional parameter signature, then compile and save.

Inputs: name (required), blueprint_path (required), signature.

blueprint_add_functionA

Create a user function graph on a Blueprint with typed inputs/outputs, then compile and save. Returns the function graph name.

Inputs: name (required), blueprint_path (required), inputs, outputs.

blueprint_add_interfaceA

Implement a Blueprint Interface on a Blueprint, then compile and save.

Inputs: blueprint_path (required), interface_class (required).

blueprint_add_variableA

Add a member variable to a Blueprint, then compile and save.

Inputs: name (required), type (required), blueprint_path (required), category, +1 more.

blueprint_build_from_descriptionA

Build a Blueprint event graph from high-level pattern templates. Each step references a named pattern with optional parameters. Exec flow is auto-wired between steps. Available patterns: on_begin_play, print_string, print_float, get_actor_location, loop_print, move_actor_up

Inputs: steps (required), blueprint_path (required), clear_existing.

blueprint_build_from_jsonA

Builds a Blueprint event graph from a JSON node/connection description. Supported node types: BeginPlay, PrintString, Delay, CallFunction. Node objects accept an optional 'params' key to set pin default values by PinName. Connections use 'nodeId.exec' format for exec pin wiring.

Inputs: graph (required), blueprint_path (required), clear_existing.

blueprint_compileA

Compile a Blueprint and return success/failure with error details. Success means the compile ran, check 'compiled' and 'had_errors' for actual result.

Inputs: blueprint_path (required).

blueprint_component_removeA

Remove a component (SCS node) from a Blueprint; children re-parent to the removed node's parent. Compiles and saves.

Inputs: blueprint_path (required), component_name (required).

blueprint_component_renameA

Rename a component (SCS node) on a Blueprint, then compile and save.

Inputs: new_name (required), old_name (required), blueprint_path (required).

blueprint_createC

Create a new Blueprint class with optional components and variables.

Inputs: name (required), path, variables, components, +1 more.

blueprint_documentB

Generate a human-readable text summary of a Blueprint's structure, variables, and components.

Inputs: blueprint_path (required), detail_level.

blueprint_infoB

Get detailed Blueprint structure: components, variables, functions, event graphs, parent chain.

Inputs: blueprint_path (required).

blueprint_inspectA

Read Blueprint structure: graphs, functions, variables, macros, interfaces, event dispatchers, components (SCS), nodes in a graph with pins and links, single node detail, or node search. Use before editing to resolve graph names, node GUIDs, and pin names.

Inputs: action (required), blueprint_path (required), query, node_guid, +1 more.

blueprint_listA

List Blueprint assets with optional filtering by path, name, and parent class.

Inputs: limit, name_filter, path_filter, parent_class_filter.

blueprint_node_addA

Add a node to a Blueprint graph. Returns the new node's GUID for pin wiring. node_type is a registered factory: CallFunction, Event, CustomEvent, VariableGet, VariableSet, Branch, Sequence, Knot, Comment, Cast, CreateWidget, SpawnActor, MacroInstance, MakeStruct, BreakStruct, Select, FormatText, SwitchEnum, SwitchInt, SwitchName, SwitchString, MultiGate, DoOnceMultiInput, InputAction, InputAxisEvent, InputKey, AddDelegate, RemoveDelegate, CallDelegate, and more. config keys are camelCase and depend on node_type: CallFunction {targetClass, functionName}; Event {parentClass, eventName}; CustomEvent {eventName, parameters?}; VariableGet/VariableSet {varName, scope?}; Cast {targetClass, purity?}; SpawnActor {actorClass}; CreateWidget {widgetClass}; MakeStruct/BreakStruct {structType}; Comment {text}; MacroInstance {macroBP, macroName}. EXCEPTION: input nodes use snake_case keys - InputAction {action_name, consume_input?}, InputAxisEvent {axis_name}, InputKey {key}. Class paths use /Script/Module.Class form. Compiles and saves.

Inputs: node_type (required), graph_name (required), blueprint_path (required), config, +1 more.

blueprint_node_deleteA

Delete a node by GUID (links broken first), then compile and save.

Inputs: node_guid (required), graph_name (required), blueprint_path (required).

blueprint_node_moveA

Move a node to a new graph position, then compile and save.

Inputs: position (required), node_guid (required), graph_name (required), blueprint_path (required).

blueprint_node_set_enabledA

Enable or disable a node by GUID, then compile and save.

Inputs: enabled (required), node_guid (required), graph_name (required), blueprint_path (required).

blueprint_pins_breakA

Break all links on a single pin of a node, then compile and save.

Inputs: pin_name (required), node_guid (required), graph_name (required), blueprint_path (required).

blueprint_pins_connectA

Connect two pins between nodes. The connection is validated by UEdGraphSchema_K2::CanCreateConnection before linking - incompatible types fail cleanly with no graph change. Compiles and saves on success.

Inputs: graph_name (required), source_pin (required), target_pin (required), blueprint_path (required), +2 more.

blueprint_remove_event_dispatcherA

Remove an event dispatcher by name, then compile and save.

Inputs: name (required), blueprint_path (required).

blueprint_remove_functionA

Remove a user function graph by name, then compile and save.

Inputs: name (required), blueprint_path (required).

blueprint_remove_interfaceA

Remove an interface implementation (deletes its generated function graphs), then compile and save.

Inputs: blueprint_path (required), interface_class (required).

blueprint_remove_variableA

Remove a member variable from a Blueprint, then compile and save.

Inputs: name (required), blueprint_path (required).

blueprint_set_variable_defaultA

Set a member variable's default value, then compile and save.

Inputs: name (required), blueprint_path (required), default_value.

bridge_clear_logA

Reset the MCP output-log cursor marker. Does not delete or truncate the UE log.

Inputs: no named parameters.

bridge_command_manifestA

Return command names currently registered in the live Unreal listener.

Inputs: no named parameters.

camera_rig_createA

Add a camera rig to a Pawn/Character Blueprint using a preset: first_person (eye-height camera, pawn control rotation), third_person (300 spring arm with lag), top_down (800 arm at -60 pitch), or side_scroller (500 arm at -90 yaw). Compiles and saves.

Inputs: preset (required), blueprint_path (required), arm_name, camera_name.

camera_shake_blueprintA

Create a CameraShake Blueprint asset with oscillation parameters. Shake presets: explosion, hit, earthquake, gunfire, footstep, ambient, electric_shock, glitch_shake. Or set individual rot_pitch/yaw/roll_amp/freq, loc_x/y/z_amp/freq, fov_amp/freq values.

Inputs: name, preset, fov_amp, duration, +17 more.

camera_shake_playB

Play a camera shake during PIE. Requires PIE to be running.

Inputs: shake_class (required), scale, play_space.

camera_shake_spawnA

Spawn a CameraShakeSourceActor in the level. Emits shake within inner/outer radius during PIE.

Inputs: name, location, shake_class, inner_radius, +1 more.

camera_shake_triggerB

Spawn a C++ ShakeTriggerActor: plays camera shake when the player overlaps its trigger box during PIE. Python builds, C++ executes -- the reliable pattern.

Inputs: shake_class (required), name, location, box_extent, +1 more.

checkpoint_createB

Create a named save point (level save + metadata snapshot).

Inputs: name (required), description.

checkpoint_restoreA

Restore to a named checkpoint by undoing operations since it was created.

Inputs: name (required).

clear_output_logD

Alias for bridge_clear_log.

Inputs: no named parameters.

console_effectB

Toggle rendering features via console commands. Commands: freeze_rendering, show_fps, screen_percentage, temporal_aa, fxaa, motion_blur, bloom, eye_adaptation, tonemapper, ssr, ao, dof, aa_quality, shadow_quality, view_distance_quality, post_process_quality.

Inputs: command (required), value.

cpp_buildA

Compile the project with UnrealBuildTool as a background job. Returns a job_id immediately; poll job_status for progress and structured compiler errors (file, line, code, message).

Inputs: target, platform, extra_args, configuration, +1 more.

cpp_class_createA

Generate a UCLASS header/source pair in a game module (UE4.27 wizard-style boilerplate with GENERATED_BODY and constructor). Does not compile; run cpp_build afterwards. New classes require an editor restart to load.

Inputs: name (required), module, subdir, parent_class, +1 more.

data_table_createA

Create a DataTable for a row struct, optionally filling rows from DataTable JSON ([{"Name": "Row1", ...fields}]). Saves the table.

Inputs: name (required), path (required), row_struct (required), rows_json.

data_table_fill_from_jsonA

Replace an existing DataTable's rows from DataTable JSON, then save. Returns the resulting row names.

Inputs: rows_json (required), data_table (required).

gameplay_framework_createA

Create a linked set of gameplay framework Blueprints (GameMode, Pawn or Character, PlayerController, GameInstance, HUD, GameState, PlayerState) named BP_<base_name>, with the GameMode's class defaults wired to the created pieces. Compiles and saves everything.

Inputs: path (required), base_name (required), pieces.

gameplay_pie_startA

Launch a Play In Editor (PIE) session and wait until the game world is ready (up to 30s). Returns success once the PIE-ready log marker is found. Call this before gameplay_run_acceptance_tests or gameplay_telemetry_snapshot.

Inputs: level_path.

gameplay_pie_stopA

End the current PIE session.

Inputs: no named parameters.

gameplay_run_acceptance_testsA

Run structured acceptance test predicates against a live PIE session. PIE must already be running (call gameplay_pie_start first). Returns pass/fail per predicate with observed value. Predicates: 'pawn_possessed:ClassName', 'widget_visible:WidgetName', 'log_contains:String', 'ai_state:ActorName:StateName', 'survive:N' (N seconds without crash).

Inputs: tests (required), timeout_seconds.

gameplay_telemetry_snapshotA

Capture the current PIE runtime state: new log lines since last snapshot, possessed pawn class, visible widget class names, AI controller states, and PIE world name. PIE must be running.

Inputs: no named parameters.

game_template_createA

Generate a playable game skeleton: gameplay framework (GameMode/Character/PlayerController/HUD with class defaults wired), a camera rig matching the template, an input preset, and optionally a new map and project default game mode. Templates: first_person, third_person, top_down, side_scroller. Returns a manifest of everything created.

Inputs: path (required), template (required), base_name (required), create_map, +1 more.

helpA

Show documentation for available tools.

Inputs: tool_name.

history_listC

Show operation history with timestamps and parameters.

Inputs: count.

input_mapping_addA

Add an action or axis mapping to project input settings (saved to Config/DefaultInput.ini). Key names use FKey string form: W, SpaceBar, LeftMouseButton, MouseX, Gamepad_LeftTrigger, ...

Inputs: key (required), kind (required), name (required), alt, +4 more.

input_mapping_infoA

Inspect Unreal input action and axis mappings. Use this to validate bindings like PF_Pause to Escape when physical key injection is unavailable.

Inputs: key, axis_name, action_name.

input_mapping_removeA

Remove action or axis mappings. Omit 'key' to remove every key bound to the name.

Inputs: kind (required), name (required), key.

input_preset_applyA

Apply a standard control scheme preset: first_person, third_person, top_down, or tank (WASD movement, mouse look where applicable, Jump/Fire/Interact actions). Idempotent.

Inputs: preset (required).

job_cancelA

Cancel a running background job (terminates its subprocess).

Inputs: job_id (required).

job_listA

List all background jobs started in this editor session, newest first.

Inputs: no named parameters.

job_statusA

Get a background job's status (running/succeeded/failed/cancelled), structured result (e.g. parsed compiler errors for cpp_build), and output tail.

Inputs: job_id (required), include_output.

level_actorsA

List actors in the current level with optional filters. Returns name, class, folder, and optionally transforms and components.

Inputs: limit, name_filter, class_filter, folder_filter, +2 more.

level_newA

Create and load a new level (optionally from a template map), then save it. WARNING: switches the editor's loaded level; refuses if unsaved changes exist.

Inputs: path (required), template.

level_outlinerA

Return the World Outliner folder tree structure with actor counts per folder.

Inputs: root_folder.

level_saveA

Save the current level and optionally all dirty assets.

Inputs: save_all.

material_applyB

Apply a material to an actor's mesh component. Returns validation by default.

Inputs: actor_name (required), material_path (required), slot_name, slot_index, +1 more.

material_createB

Create a new material or material instance. Provide parent and type 'instance' for material instances.

Inputs: name (required), type (required), path, parent, +1 more.

material_infoA

Get detailed information about a material: parameters, textures, parent chain.

Inputs: material_path (required).

material_instance_createA

Create a MaterialInstanceConstant from a parent material with optional scalar/vector/texture parameter overrides. Saves the instance.

Inputs: name (required), path (required), parent_material (required), scalar_params, +2 more.

material_instance_set_paramsA

Set scalar/vector/texture parameters on an existing material instance, then save.

Inputs: material_instance (required), scalar_params, vector_params, texture_params.

material_listA

List materials in the project with optional filtering by path, name, and type.

Inputs: limit, name_filter, path_filter, type_filter.

placement_validateB

Check actors for gaps, overlaps, and alignment issues.

Inputs: actors (required), check_gaps, gap_threshold, check_overlaps, +1 more.

pp_presetB

Apply a named post-processing preset. Creates or updates a PP volume. Presets: horror, cyberpunk, noir, dream, underwater, surveillance, vhs_glitch, damage, drunk, frozen, nuclear, sepia, cinematic, neon, thermal.

Inputs: preset (required), name, intensity.

pp_volume_modifyA

Modify an existing PostProcessVolume's settings. Settings merge with existing values.

Inputs: actor_name (required), unbound, priority, settings, +2 more.

pp_volume_spawnA

Spawn a PostProcessVolume with full settings control. Supports bloom, exposure, color grading, DOF, chromatic aberration, grain, vignette, motion blur, SSR, lens flare, and more.

Inputs: name, enabled, unbound, location, +4 more.

project_enable_pluginsA

Enable one or more plugins in the current .uproject and report whether an editor restart is required.

Inputs: plugins (required).

project_index_queryA

Search the cached project intelligence index. Use this before editing to find existing assets, Blueprint structures, dependencies, and patterns.

Inputs: limit, query, category, include_raw, +1 more.

project_index_rebuildA

Rebuild the lightweight project intelligence index under Saved/MCP/index. Scans assets, Blueprints, materials, widgets, level actors, and design memory using existing read-only bridge handlers.

Inputs: limit, categories, actor_limit, path_prefix, +2 more.

project_infoA

Return current UE project name, engine version, project path, content directory, and loaded level.

Inputs: no named parameters.

project_semantic_diffA

Compare indexed before/after snapshots for semantic changes in Blueprints, widgets, materials, level actors, and dependencies. If snapshots are omitted, compares cached index data against a fresh read.

Inputs: limit, categories, asset_paths, path_prefix, +2 more.

project_settings_mapsA

Set default maps and game mode: game default map, editor startup map, and/or global default game mode. Persists to Config/DefaultEngine.ini.

Inputs: game_default_map, editor_startup_map, global_default_game_mode.

prompt_generateA

Generate complete Unreal Engine 4.27 gameplay systems from a natural language prompt. Creates Blueprints, Widget Blueprints, materials, data assets, maps, actors, and input mappings. Supports genres: puzzle_fighter, menu_system, horror, platformer, inventory, generic. Use dry_run=true to preview the build spec without creating any assets.

Inputs: prompt (required), dry_run.

prompt_spec_listA

List previously generated build specs from the PromptBrush output directory. Each entry shows feature name, genre, and the original prompt.

Inputs: no named parameters.

prompt_statusA

Check PromptBrush system status: BlueprintGraphBuilder availability, WidgetBlueprintBuilder availability, output directory path, and manifest count.

Inputs: no named parameters.

python_proxyA

Execute arbitrary Python code inside the UE4 editor. Has full access to the unreal module. Use for prototyping or operations not covered by dedicated tools.

Inputs: code (required).

redoA

Redo previously undone operations.

Inputs: count.

restart_listenerA

Restart the Python listener without restarting Unreal. Use after modifying listener code.

Inputs: host, port.

test_connectionA

Ping the UE4 Python listener. Returns connection status, engine version, and project info.

Inputs: no named parameters.

title_controller_createC

Create a BP_TitleController implementation spec that owns the widget and updates cues from Sequencer frame numbers.

Inputs: id, manifest, asset_name, package_path, +1 more.

title_manifest_adjustC

Apply measured correction passes to a manifest by changing cue boxes, frame timing, text, role, or name fields.

Inputs: adjustments (required), id, manifest, output_path, +1 more.

title_manifest_createA

Create and persist a JSON title manifest using normalized screen boxes, frame timing, and style metadata. Stores output in Saved/MCP/titles by default.

Inputs: cues (required), id, fps, style, +4 more.

title_manifest_from_referenceB

Create a manifest from measured reference-frame pixel boxes by converting them into normalized screen boxes.

Inputs: cues (required), id, fps, style, +5 more.

title_manifest_validateB

Validate a title manifest for normalized boxes, valid cue types, positive frame rate, and frame timing.

Inputs: id, manifest, manifest_path.

title_render_compareA

Compare a UE-rendered title frame against a reference still and report pixel error for the full image or region.

Inputs: render_path (required), reference_path (required), region.

title_sequence_bindB

Create a Level Sequence binding spec for driving BP_TitleController from frame numbers. This is a v1 scaffold until the bridge has full Sequencer event-track authoring.

Inputs: id, manifest, manifest_path, sequence_path, +1 more.

title_widget_build_from_manifestA

Build WBP_TitleRenderer from a title manifest, or return the generated widget spec with dry_run=true.

Inputs: id, dry_run, manifest, asset_name, +2 more.

ue_logsB

Fetch recent UE4 log entries.

Inputs: category, severity.

undoA

Undo the last N operations using UE4's transaction system.

Inputs: count.

viewport_boundsA

Return current viewport camera position, rotation, and state. Read-only query.

Inputs: no named parameters.

viewport_cameraA

Set viewport camera position, rotation, and/or FOV. Preserves existing values for parameters not provided.

Inputs: fov, location, rotation.

viewport_fitA

Fit actors into the viewport frame. If actor_names is empty or omitted, fits all actors in the level.

Inputs: padding, actor_names.

viewport_focusA

Focus the viewport camera on a named actor. Returns camera state and actor bounding box.

Inputs: actor_name (required), distance.

viewport_look_atA

Point camera at coordinates or actor without moving camera position. If both are provided, actor_name takes priority.

Inputs: location, actor_name.

viewport_modeA

Switch to a standard view: top, front, right, left, back, bottom, perspective.

Inputs: mode (required).

viewport_render_modeA

Change viewport render mode: lit, unlit, wireframe, detail_lighting, lighting_only, light_complexity, shader_complexity, collision.

Inputs: mode (required).

viewport_screenshotA

Capture the active viewport to a PNG file. Returns the absolute filesystem path so Claude Code can read the image.

Inputs: show_ui, filename, resolution.

widget_build_from_jsonA

Create a Widget Blueprint from a JSON widget tree using WidgetBlueprintBuilderLibrary. Creates the asset at package_path/asset_name and populates the designer tree.

Inputs: asset_name (required), widget_json (required), package_path (required).

widget_lower_third_createA

Create a broadcast-style lower-third Widget Blueprint with styled title/subtitle text and FadeIn/FadeOut animation specs.

Inputs: hold, title, preset, eyebrow, +12 more.

widget_title_card_createB

Create a centered cinematic title-card Widget Blueprint with styled text, background treatment, and FadeIn/FadeOut animation specs.

Inputs: hold, title, preset, eyebrow, +12 more.

widget_title_templateA

Return a polished UMG title or lower-third widget JSON spec with named fade-in and fade-out animations. Does not create an asset.

Inputs: hold, style, title, preset, +14 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.1/5.0

    Scored across 122 tools

    Disambiguation2/5

    Several tools overlap: blueprint_info, blueprint_inspect, and blueprint_document all inspect Blueprint structure; blueprint_build_from_json and blueprint_build_from_description both build graphs; bridge_clear_log and clear_output_log are exact aliases. While many tools are domain-specific, these overlaps create selection ambiguity.

    Naming Consistency3/5

    Most tools follow a consistent <domain>_<action> pattern (actor_spawn, asset_list, material_create), but outliers like undo, redo, help, test_connection, python_proxy, and ue_logs break the pattern. There are also mixed conventions such as level_actors vs actor_spawn and clear_output_log as a bare verb.

    Tool Count1/5

    With 122 tools, this is an extreme over-scoping for a single server. The calibration guide marks 50+ as extreme, and this is more than double that, making it difficult for an agent to efficiently select the right tool.

    Completeness3/5

    The tool surface is remarkably broad, covering assets, actors, blueprints, materials, viewport, input, AI, data tables, and C++, but it lacks basic delete operations for many asset types (e.g., asset_delete, material_delete, blueprint_delete) and has no rename or list for data tables. It's extensive but not fully comprehensive.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      C
      maintenance
      An MCP server that gives AI agents broad control over Unreal Engine 5.7, enabling actor/asset/level management, Blueprint and material creation, screenshots, automation, and arbitrary editor Python execution.
      35
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI agents to control and query Unreal Engine 4.27.2 editor through MCP, supporting asset creation, level editing, and project inspection via Python remote execution.
      135 npm
      32
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI coding agents to work inside a live Unreal Editor for Fortnite session: write and compile Verse, place and wire Creative devices, edit Scene Graph entities, manipulate actors and assets, take screenshots, run playtests, and read editor logs via MCP.
      MIT