UE-MCP Registry
← All plugins

Voxel Plugin

Voxel Plugin actions and flows for the bridge.

Install
$ ue-mcp plugin install voxel

Published by its author and not reviewed or scanned by UE-MCP. Install at your own risk.

View repository
Provides
Native tools, Flows
Category
Other
Price
Free
Author
db-lyon
voxelterrainworld-gen

Atomic actions over the Voxel Plugin, each wrapping a single C++ call, with multi-step orchestrations shipped as flows.

voxel-plugin-tools

Voxel Plugin actions for ue-mcp. 60 actions and 1 flow.

Install

ue-mcp plugin install voxel-plugin-tools

Adds an entry under plugins: in ue-mcp.yml. Restart ue-mcp.

Requirements

  • ue-mcp >= 1.0.15
  • Voxel Plugin enabled in your .uproject (Plugins[].Name == "Voxel")
  • Unreal Engine 5.7
  • Node >= 18 to build (20+ recommended)

Usage

Actions are called as <category>(action="voxel_<name>", ...). Three categories: level, asset, pcg.

Spawn a rendering world:

flow(action="run", flowName="voxel_hello_world", params={ label: "MyVoxelWorld" })

Check readiness before sculpting, stamping, or sampling:

level(action="voxel_is_world_ready", actorLabel="MyVoxelWorld")
# => { returnValues: { ReturnValue: "true" } }

Build terrain from a heightmap:

asset(action="voxel_create_asset", name="Terrain01", type="heightmap")
level(action="voxel_spawn_stamp_actor", label="Terrain")
level(action="voxel_set_heightmap_stamp", actorLabel="Terrain",
      source="/Game/Terrain01.Terrain01", blendMode="max")

Actions

ue-mcp.plugin.yml is the source of truth for parameters and the C++ header each action wraps. Reference docs are under docs/. Each action wraps exactly one host call; sequencing belongs in flows.

level: spawns

ActionWraps / does
voxel_spawn_worldPlace an AVoxelWorld in the active level
voxel_spawn_stamp_actorPlace an AVoxelStampActor (owns one stamp)
voxel_spawn_height_sculpt_actorPlace an AVoxelHeightSculptActor (2D/height sculpting target)
voxel_spawn_volume_sculpt_actorPlace an AVoxelVolumeSculptActor (3D/volume sculpting target)
voxel_spawn_collision_bakerPlace an AVoxelCollisionBaker (bakes collision for a layer in a radius)
voxel_spawn_debug_actorPlace an AVoxelDebugActor (visualizes a layer; dev tool)

level: world lifecycle and status

ActionWraps / does
voxel_is_world_readyRead IsVoxelWorldReady(); main gate before sculpt/stamp/sample
voxel_get_world_progressRead GetProgress() (0..1; 1 when idle)
voxel_is_runtime_createdRead IsRuntimeCreated() (initialized, not necessarily rendered)
voxel_is_processing_new_stateRead IsProcessingNewState() (regeneration in flight)
voxel_get_num_pending_tasksRead GetNumPendingTasks() (queued background work)
voxel_create_runtimeCall CreateRuntime() (initialize the voxel runtime)
voxel_destroy_runtimeCall DestroyRuntime() (free meshes/collision/nav)

level: world config

ActionWraps / does
voxel_set_world_layer_stackSet LayerStack (the UVoxelLayerStack the world generates/renders)
voxel_set_world_mega_materialSet MegaMaterial (surface shading)
voxel_set_world_voxel_sizeSet VoxelSize in cm (default 100; lower is finer and heavier)
voxel_set_world_enable_naniteSet bEnableNanite (default true)
voxel_set_world_enable_navigationSet bEnableNavigation (default true; needed for AI nav)
voxel_set_world_enable_lumenSet bEnableLumen (default false; expensive)
voxel_set_world_lod_qualitySet LODQuality (detail vs performance beyond VoxelSize)

level: volume sculpting (AVoxelVolumeSculptActor)

ActionWraps / does
voxel_volume_sculpt_sphereAdd/remove a sphere
voxel_volume_sculpt_cubeAdd/remove a rounded, rotated cube
voxel_volume_flattenFlatten the surface along a normal
voxel_volume_smoothSmooth/blur a region
voxel_volume_sculpt_surfaceProgressively sculpt the surface
voxel_volume_sculpt_angleMove the surface toward a plane
voxel_volume_paint_surfacePaint a surface type on a sculpt stamp
voxel_volume_apply_sculpt_graphApply a volume sculpt graph at a location
voxel_volume_clear_sculpt_dataClear all sculpt data (reset edits)
voxel_volume_clear_sculpt_cacheFree the sculpt cache (keeps data)

level: height sculpting (AVoxelHeightSculptActor)

ActionWraps / does
voxel_height_sculpt_heightRaise/lower height
voxel_height_flattenFlatten toward a target height
voxel_height_smoothSmooth/blur a height region
voxel_height_paint_surfacePaint a surface type on a height sculpt stamp
voxel_height_apply_sculpt_graphApply a height sculpt graph at a location
voxel_height_clear_sculpt_dataClear all sculpt data (reset edits)
voxel_height_clear_sculpt_cacheFree the sculpt cache (keeps data)

level: stamps

ActionWraps / does
voxel_add_stamp_componentAttach a UVoxelStampComponent to an actor
voxel_set_heightmap_stampBuild a heightmap stamp (UVoxelHeightmap) and apply it
voxel_set_height_graph_stampBuild a height-graph stamp (UVoxelHeightGraph) and apply it
voxel_set_volume_graph_stampBuild a volume-graph stamp (UVoxelVolumeGraph) and apply it
voxel_set_mesh_stampBuild a mesh stamp (UVoxelStaticMesh, tricubic) and apply it
voxel_set_height_spline_stampBuild a height-spline stamp (UVoxelHeightSplineGraph) and apply it
voxel_set_volume_spline_stampBuild a volume-spline stamp (UVoxelVolumeSplineGraph) and apply it
voxel_update_stamp_actorCall UpdateStamp() to re-apply after property changes

level: sculpt save assets

ActionWraps / does
voxel_set_sculpt_save_assetLink a sculpt actor to an external save asset (type must match)
voxel_get_sculpt_save_assetRead the linked save asset path (VOXEL_SAVE_ASSET= line)

level: query and export

ActionWraps / does
voxel_query_voxel_layerSample one point; returns FVoxelQueryResult (VOXEL_QUERY_RESULT= line)
voxel_multi_query_voxel_layerBatch-sample many points in one call
voxel_export_voxel_data_to_render_targetWrite a height layer to a UTextureRenderTarget2D (VOXEL_EXPORT_OK= line)

level: instanced stamps (UVoxelInstancedStampComponent)

ActionWraps / does
voxel_add_instanced_stamp_componentAttach the component (many stamps in one component)
voxel_clear_instanced_stampsRemove every stamp and refresh
voxel_update_instanced_stampsRefresh all stamps (apply pending edits)
voxel_count_instanced_stampsReport stamp count (VOXEL_STAMP_COUNT= line)
voxel_remove_instanced_stampRemove one stamp by index and refresh

level: no-clipping (UVoxelNoClippingComponent)

ActionWraps / does
voxel_add_no_clipping_componentAttach the component (keeps owner from clipping through terrain)
voxel_set_no_clipping_layerConfigure the solid-ground layer and auto-adjust

asset

ActionWraps / does
voxel_create_assetCreate a Voxel asset by type (VOXEL_CREATED_ASSET= line)
voxel_set_asset_propertySet one editor property on a Voxel asset and save it

voxel_create_asset types: surface_type, smart_surface_type, layer_stack, mega_material, heightmap, static_mesh, height_graph, volume_graph, scatter_graph, height_spline_graph, volume_spline_graph, height_sculpt_graph, volume_sculpt_graph, surface_type_graph, height_sculpt_save, volume_sculpt_save, pcg_graph.

pcg

ActionWraps / does
voxel_pcg_add_nodeAdd a VoxelPCG node to a UPCGGraph; configure after with pcg.set_node_settings

voxel_pcg_add_node node types: call_graph, sampler, sampler_v2, query, stamp_spawner, spawn_actor, apply_on_graph, create_spline, projection, elevation_isolines, wait_for_world, layer_sampler, landscape_sampler, landscape_projection, wait_for_landscape.

Flows

FlowSequence
voxel_hello_worldvoxel.spawn_world, then level.set_actor_property LayerStack (bundled default)

Parameters

  • location, rotation, scale are { x, y, z } objects.
  • Asset and object references are content paths (/Game/Foo.Foo) or class paths (/Script/...).
  • Height stamp blend modes: max | min | override. Volume stamp blend modes: additive | subtractive | intersect | override.
  • Return values come back as strings at data.returnValues.ReturnValue.
  • Python-backed actions (stamps, asset create/set) report results on marker lines (VOXEL_CREATED_ASSET=, VOXEL_QUERY_RESULT=, and so on).
  • voxel_set_asset_property takes value as a string; numeric and boolean strings are coerced. For a UObject reference, set valueIsAsset: true.
  • level reads accept world (editor or pie).

Architecture

Task classes compile to dist/ and load into ue-mcp, which bridges to the editor:

MCP client -> ue-mcp server -> WebSocket bridge (C++ plugin) -> UE editor

Develop

git clone https://github.com/db-lyon/voxel-plugin-tools.git
cd voxel-plugin-tools
npm install
npm run build      # clean + tsc
npm run check      # static-check + schema-drift-check

See CONTRIBUTING.md.

License

MIT. See LICENSE.