← All versions
1.3.1 · Toolsets and skills for Unreal’s own MCP
Unreal Engine 5.8 · October 2026
Coming soon to Fab. Fab buyers never saw 1.3.0, so these notes cover everything since 1.0.0.
Ralpha now plugs into Unreal’s own MCP server as toolsets and skills.
- New geo toolset for Cesium for Unreal 2.x (installed separately): latitude/longitude camera placement, georeference, tilesets and terrain height.
- New solver toolset: sun position for any place and time, exposure from sun elevation, lens field of view, horizon distance, sea state and stars.
- Domain skills registered with Unreal’s agent-skill system: sky and sun, sunset, water and ocean, clouds, exposure, and real places.
- Photoreal MetaHuman support.
- Precise character performance controls: exact Control Rig channel inspection, key editing and guarded restoration; two characters on the same rig stay independently addressable.
- Every registered command tested in a fresh project on Mac, with a Windows pass, a hardware ray-tracing pass and a Linux build.
- Docs rewritten around Unreal’s native MCP (port 30030), with the plugin’s own HTTP (30020) and TCP (30010) endpoints as the secondary path.
New commands and options
- Material-instance assets:
create_material_instance_asset,set_material_instance_asset_paramsandget_material_instance_asset_paramsmake and edit saved material instances, with parameters checked against the parent before anything is written. The first two are also typed native tools. - Camera selection:
set_camera,get_camera_settingsandcapture_screenshottakecamera_id(a CineCamera’s name or label). - Exact sequence rates:
create_sequencekeeps 23.976, 29.97 and 59.94 exactly, takesframe_rate_numerator/frame_rate_denominatorandtick_resolution, and reports the rates it set. - Actors by label everywhere: Blueprint-variable, selection and lock commands accept an actor’s editor label as well as its object name;
resolve_actorreports what an id resolves to (and every match when a label is shared). - Component properties:
set_component_property/get_component_propertyset and read any property of an actor’s component (several at once, nested struct fields too) and report the value before and after. - Visibility scopes:
set_actor_visibleandget_hidden_actorstakescope= editor | game | all.editoris the viewport’s temporary hide;gameis “Actor Hidden In Game”, which Play-in-Editor, the game and captures skip. - Per-render console variables:
render_sequence_assettakesconsole_variables_json(for example{"r.Shadow.Virtual.Cache": 0}), applied to that render only and reported back. - Cloud lighting:
set_cloud_tracing_qualitysetsuse_per_sample_atmospheric_transmittance, andget_cloud_tracing_qualityreads it back. - Mesh measurement:
get_mesh_ref_posereads a skeletal mesh’s own reference pose;get_skinned_verticesreturns a character’s vertex positions at its current pose (optionally with triangles, to a file).
Behaviour changes
- Creates refuse a taken name.
create_material,create_sequence,create_data_table,create_data_asset,create_input_context,create_input_action, the media-source, playlist and NDI creates,create_env_query,create_eqs_query(withpersist: true),create_behavior_tree,create_blackboard,create_state_tree,create_blend_space,create_aim_offset,bake_dynamic_to_staticandocio_load_lutrefuse witherror_code: asset_existsand leave the existing asset untouched. Passoverwrite: trueto replace it. If the old asset is still in use, the overwrite is refused with the users named, andforce: truereplaces it anyway. A create with no name picks a free one (<Default>_N).create_blueprint,create_anim_blueprint,create_ability_blueprintandcreate_effect_blueprinthonouroverwrite: truetoo. - One default camera. With no
camera_id,set_camera,get_camera_settingsand the Camera commands (when no camera is selected) use the CineCamera labelledRalpha_Camera, the onecapture_screenshotandpilot_camerause, and fall back to the first CineCamera only when there is none. - Remote Control’s HTTP port.
rc_start_serverwith anhttp_portother than the one in Remote Control’s settings is refused unless you passforce: true, because moving it restarts Unreal’s HTTP server module, which also drops the editor’s MCP endpoint.
Reliability fixes
- Editor crashes fixed: fog commands after a level reload, fog material parameters, spawning a boat on water, changing scalability while frames are rendering, quitting after mounting a pak, and creating or saving over an asset that already exists on disk no longer crash the editor.
- Saves are safe: every create gets a fully loaded package or refuses, so a save never writes a partially loaded asset; a failed save reports
success: falsewith the reason. - No blocking dialogs: water-body, ocean and landscape creation no longer open a modal that froze the editor.
- Startup-only renderer settings are refused instead of being toggled at runtime.
- Reads no longer change the scene: reading post-process settings never spawns a volume.
- What you set is what you read back: sky and cloud albedo, light colour, lens focal length and aperture, light roll, chromatic aberration and cloud wind keep the value you sent.
- Spot, point and rect lights keep everything you send: intensity units, source radius, position, rotation and label apply on spawn and on update, and read back.
- Ralpha’s
set_actor_transformis a partial update: fields you leave out keep their values. - AI moves report what happened: move commands say a move was requested, never that it arrived;
get_ai_statereads back whether the pawn arrived or was blocked. - Behavior trees keep the blackboard you give them; a
blackboardthat does not exist is refused instead of ignored. - Changes carry into Play-in-Editor:
play_animationpersists on the character. - Effects start on first use in a fresh project: effect pools and every command that spawns an effect wait for the Niagara system to finish compiling, so they run as active instead of doing nothing.
- Sun and exposure agree: the solver reports the scene exposure for Ralpha’s sun (
scene_ev100). - Honest refusals: commands that had no visible effect now say so instead of reporting success; setters called with no parameters refuse and name the fields they need.
Known issues
- Unreal’s own ActorTools
set_actor_transform(Epic’s toolset, not Ralpha) resets location, rotation or scale you leave out. Send all three, or use Ralpha’sset_actor_transform. - Solver-sun exposure uses wide metering bounds rather than a calibrated absolute value near the horizon.
- Rarely, the editor can take longer than a minute to close after a long MetaHuman session.
Source plugin plus editor Python and the unchanged MuJoCo 3.3.2 runtime. 3,248 commands register; 3,176 verified one by one in a fresh project, each with its effect read back. The other 72 need particular hardware, a platform, or a paid service or device; Docs/COMMAND_REFERENCE.md lists them with what each needs.