VibeUE

MCP Server for Unreal Engine

PYTHON-FIRST ARCHITECTURE

VibeUE uses a Python-first architecture that gives AI assistants full access to Unreal Engine through MCP discovery tools and specialized Python services.

Discover APIs at runtime, execute Python code in Unreal context, and use high-level services for common game development tasks.

10 MCP TOOLS
25 SERVICES
853 METHODS

🏗️ How It Works

🔍

MCP Discovery Tools

Lightweight tools for exploring and executing Python in Unreal

10 Tools
🐍

Python API Services

High-level services for common game development tasks

25 Services, 853 Methods

Full Unreal Python API

Direct access to all unreal.* modules

Complete Access

Load Skills → Discover API → Execute Code Workflow

1. Load Skills 2. Discover API 3. Execute Code 4. See Results

🔍 MCP Discovery & Execution Tools

Lightweight MCP tools for exploring and executing Python code in Unreal Engine context

discover_python_module

Inspect module contents - classes, functions, and constants available in any Python module

discover_python_class

Get class methods, properties, and inheritance hierarchy for any class

discover_python_function

Get function signatures, parameters, and docstrings for any callable

execute_python_code

Run Python code directly in Unreal Editor context with full API access

list_python_subsystems

List all available Unreal Engine editor subsystems accessible via Python

manage_skills

Load domain-specific knowledge (blueprints, materials, etc.) for better AI assistance

manage_asset

Search, open, save, move, duplicate, and delete assets safely through a single MCP workflow tool

read_logs

Read and filter Unreal Engine log files with regex support for debugging and analysis

terrain_data

Generate heightmaps and map images from real-world terrain data for Unreal Engine landscape import. Actions: generate_heightmap, preview_elevation, get_map_image, list_styles

deep_research

Web research and GPS geocoding via DuckDuckGo and Jina Reader. Actions: search, fetch_page, geocode, reverse_geocode

Example: Discovering an API

# 1. Discover what's in a service
discover_python_class("unreal.BlueprintService", method_filter="variable")

# Response shows methods like:
# - add_variable(path, name, type, default_value, ...)
# - remove_variable(path, name)
# - list_variables(path)
# - get_variable_info(path, name)

# 2. Execute code using discovered API
execute_python_code("""
import unreal
path = unreal.BlueprintService.create_blueprint("BP_Player", "Actor", "/Game/Blueprints")
unreal.BlueprintService.add_variable(path, "Health", "Float", "100.0")
unreal.BlueprintService.compile_blueprint(path)
""")

🐍 VibeUE Python API Services

High-level services exposed to Python for common game development tasks. All accessible via unreal.<ServiceName>.<method>()

📘 BlueprintService

84 methods

Complete Blueprint lifecycle, variables, functions, components, and nodes

View representative methods
• add_branch_node
• add_comparison_node
• add_component
• add_function_call_node
• add_function_input
• add_function_local_variable
• add_function_output
• add_function_parameter
• add_get_variable_node
• add_math_node
• add_print_string_node
• add_set_variable_node
• add_variable
• blueprint_exists
• compare_components
• compile_blueprint
• component_exists
• configure_node
• connect_nodes
• create_blueprint
• create_function
• create_node_by_key
• delete_function
• delete_node
• diff_blueprints
• disconnect_pin
• discover_nodes
• function_call_exists
• function_exists
• get_all_component_properties
• get_available_components
• get_blueprint_info
• get_component_hierarchy
• get_component_info
• get_component_property
• get_connections
• get_function_info
• get_function_parameters
• get_node_details
• get_node_pins
• get_nodes_in_graph
• get_parent_class
• get_property
• get_variable_info
• is_widget_blueprint
• list_component_properties
• list_components
• list_function_local_variables
• list_functions
• list_variables
• local_variable_exists
• modify_variable
• node_exists
• recombine_pin
• refresh_node
• remove_component
• remove_function_local_variable
• remove_function_parameter
• remove_variable
• reparent_blueprint
• reparent_component
• search_variable_types
• set_component_property
• set_node_pin_value
• set_node_position
• set_property
• set_root_component
• set_variable_default_value
• split_pin
• update_function_local_variable
• variable_exists

🎬 AnimGraphService

38 methods

Animation Blueprint state machines, states, transitions, and animation nodes

View representative methods
• add_blend_by_bool
• add_blend_by_int
• add_blend_space_player
• add_conduit
• add_layered_blend
• add_modify_bone_node
• add_save_cached_pose
• add_sequence_player
• add_slot_node
• add_state
• add_state_machine
• add_transition
• add_two_bone_ik_node
• add_use_cached_pose
• connect_anim_nodes
• connect_to_output_pose
• disconnect_anim_node
• focus_node
• get_node_animation_asset
• get_output_pose_node_id
• get_parent_class
• get_preview_mesh
• get_skeleton
• get_state_info
• get_state_machine_info
• get_state_transitions
• get_used_anim_sequences
• is_anim_blueprint
• list_graphs
• list_state_machines
• list_states_in_machine
• open_anim_graph
• open_anim_state
• open_transition
• remove_state
• remove_transition
• set_blend_space_asset
• set_sequence_player_asset

🎞️ AnimSequenceService

89 methods

Animation sequence CRUD: discovery, creation, bone tracks, notifies, curves, sync markers, root motion

View representative methods
• add_curve
• add_curve_key
• add_notify
• add_notify_state
• add_notify_track
• add_sync_marker
• compress_animation
• create_anim_sequence
• create_from_pose
• euler_to_quat
• export_animation_to_json
• find_animations_for_skeleton
• get_additive_anim_type
• get_additive_base_pose
• get_anim_sequence_info
• get_animated_bones
• get_animation_frame_count
• get_animation_frame_rate
• get_animation_length
• get_animation_skeleton
• get_bone_transform_at_frame
• get_bone_transform_at_time
• get_compression_info
• get_curve_info
• get_curve_keyframes
• get_curve_value_at_time
• get_enable_root_motion
• get_force_root_lock
• get_notify_info
• get_notify_track_count
• get_pose_at_frame
• get_pose_at_time
• get_rate_scale
• get_reference_pose_keyframe
• get_root_motion_at_time
• get_root_motion_root_lock
• get_source_files
• get_total_root_motion
• list_anim_sequences
• list_curves
• list_notifies
• list_notify_tracks
• list_sync_markers
• multiply_quats
• open_animation_editor
• play_preview
• remove_curve
• remove_notify
• remove_notify_track
• remove_sync_marker
• rename_notify_track
• search_animations
• set_additive_anim_type
• set_additive_base_pose
• set_animation_frame_rate
• set_compression_scheme
• set_curve_keys
• set_enable_root_motion
• set_force_root_lock
• set_notify_color
• set_notify_duration
• set_notify_lod_filter
• set_notify_name
• set_notify_track
• set_notify_trigger_chance
• set_notify_trigger_on_follower
• set_notify_trigger_on_server
• set_notify_trigger_time
• set_notify_trigger_weight_threshold
• set_preview_time
• set_rate_scale
• set_root_motion_root_lock
• set_sync_marker_time
• set_sync_marker_time_by_name
• stop_preview

🥊 AnimMontageService

62 methods

Animation montages with sections, slots, segments, branching points, and blend settings for combo systems

View representative methods
• list_montages
• get_montage_info
• find_montages_for_skeleton
• find_montages_using_animation
• get_montage_length
• get_montage_skeleton
• set_blend_in
• set_blend_out
• get_blend_settings
• set_blend_out_trigger_time
• list_sections
• get_section_info
• get_section_index_at_time
• get_section_name_at_time
• add_section
• remove_section
• rename_section
• set_section_start_time
• get_section_length
• get_next_section
• set_next_section
• set_section_loop
• get_all_section_links
• clear_section_link
• list_slot_tracks
• get_slot_track_info
• add_slot_track
• remove_slot_track
• set_slot_name
• get_all_used_slot_names
• list_anim_segments
• get_anim_segment_info
• add_anim_segment
• remove_anim_segment
• set_segment_start_time
• set_segment_play_rate
• set_segment_start_position
• set_segment_end_position
• set_segment_loop_count
• list_notifies
• add_notify
• add_notify_state
• remove_notify
• set_notify_trigger_time
• set_notify_link_to_section
• list_branching_points
• add_branching_point
• remove_branching_point
• is_branching_point_at_time
• get_enable_root_motion_translation
• set_enable_root_motion_translation
• get_enable_root_motion_rotation
• set_enable_root_motion_rotation
• get_root_motion_at_time
• create_montage_from_animation
• create_empty_montage
• duplicate_montage
• open_montage_editor
• refresh_montage_editor

🦴 SkeletonService

53 methods

Skeleton & skeletal mesh manipulation: bones, sockets, retargeting, curves, blend profiles

View representative methods
• add_bone
• add_curve
• add_socket
• bone_exists
• commit_bone_changes
• copy_bone_chain
• copy_socket
• create_blend_profile
• curve_exists
• find_bone_by_index
• get_all_retargeting_modes
• get_blend_profile
• get_bone_children
• get_bone_hierarchy
• get_bone_info
• get_bone_path_to_root
• get_bone_retargeting_mode
• get_bone_transform
• get_curve_info
• get_mesh_skeleton
• get_meshes_using_skeleton
• get_physics_asset
• get_preview_mesh
• get_skeleton_info
• get_socket_info
• list_blend_profiles
• list_bones
• list_curves
• list_sockets
• mirror_bone
• open_in_editor
• open_mesh_in_editor
• refresh_skeleton
• remove_bone
• remove_curve
• remove_socket
• rename_bone
• reparent_bone
• search_skeletal_meshes
• search_skeletons
• set_batch_retargeting_mode
• set_blend_profile_scale
• set_bone_retargeting_mode
• set_bone_transform
• set_curve_flags
• set_preview_mesh
• socket_exists
• update_socket

🎨 MaterialService

30 methods

Material and material instance creation, properties, and parameters

View representative methods
• clear_instance_parameter_override
• compile_material
• create_instance
• create_material
• get_instance_info
• get_instance_property
• get_material_info
• get_parameter
• get_property
• get_property_info
• list_instance_parameters
• list_instance_properties
• list_parameters
• list_properties
• material_exists
• material_instance_exists
• open_in_editor
• parameter_exists
• refresh_editor
• save_instance
• save_material
• set_instance_property
• set_instance_scalar_parameter
• set_instance_texture_parameter
• set_instance_vector_parameter
• set_parameter_default
• set_properties
• set_property
• summarize

🔗 MaterialNodeService

40 methods

Material graph expressions and connections

View representative methods
• connect_expressions
• connect_to_output
• create_expression
• create_parameter
• delete_expression
• disconnect_input
• disconnect_output
• discover_types
• get_categories
• get_expression_details
• get_expression_pins
• get_expression_property
• get_output_connections
• get_output_properties
• list_connections
• list_expression_properties
• list_expressions
• move_expression
• promote_to_parameter
• set_expression_property
• set_parameter_metadata

🖼️ WidgetService

24 methods

UMG widget blueprints and components

View representative methods
• add_component
• bind_event
• get_available_events
• get_component_properties
• get_hierarchy
• get_property
• get_root_widget
• list_components
• list_properties
• list_widget_blueprints
• remove_component
• search_types
• set_property
• validate
• widget_blueprint_exists
• widget_exists

🎮 InputService

23 methods

Enhanced Input actions, contexts, modifiers, and triggers

View representative methods
• add_key_mapping
• add_modifier
• add_trigger
• configure_action
• create_action
• create_mapping_context
• discover_types
• get_available_keys
• get_available_modifier_types
• get_available_trigger_types
• get_input_action_info
• get_mapping_context_info
• get_mappings
• get_modifiers
• get_triggers
• input_action_exists
• key_mapping_exists
• list_input_actions
• list_mapping_contexts
• mapping_context_exists
• remove_mapping
• remove_modifier
• remove_trigger

📁 AssetDiscoveryService

20 methods

Asset search, import/export, and references

View representative methods
• asset_exists
• delete_asset
• duplicate_asset
• export_texture
• find_asset_by_path
• get_active_asset
• get_asset_dependencies
• get_asset_referencers
• get_assets_by_type
• get_content_browser_selections
• get_open_assets
• get_primary_content_browser_selection
• import_texture
• is_asset_open
• list_assets_in_path
• open_asset
• save_all_assets
• save_asset
• search_assets

📊 DataAssetService

11 methods

UDataAsset instances and properties

View representative methods
• create_data_asset
• data_asset_exists
• get_class_info
• get_info
• get_properties_as_json
• get_property
• list_data_assets
• list_properties
• search_types
• set_properties
• set_property

📋 DataTableService

15 methods

DataTable rows and structure management

View representative methods
• add_row
• add_rows
• clear_rows
• create_data_table
• data_table_exists
• get_info
• get_row
• get_row_struct
• list_data_tables
• list_rows
• remove_row
• rename_row
• row_exists
• search_row_types
• update_row

🧩 EnumStructService

20 methods

User-defined enums and structs: create, edit, inspect, and delete

View representative methods
• add_enum_value
• add_struct_property
• change_struct_property_type
• create_enum
• create_struct
• delete_enum
• delete_struct
• enum_exists
• get_enum_info
• get_enum_values
• get_struct_info
• remove_enum_value
• remove_struct_property
• rename_enum_value
• rename_struct_property
• search_enums
• search_structs
• set_enum_value_display_name
• set_struct_property_default
• struct_exists

🏔️ LandscapeService

68 methods

Landscape creation, sculpting, heightmaps, weight layer painting, visibility holes, and spline-based road/path creation

View representative methods
• add_layer
• apply_noise
• apply_splines_to_landscape
• connect_spline_points
• create_landscape
• create_spline_from_points
• create_spline_point
• delete_all_splines
• delete_landscape
• delete_spline_point
• export_heightmap
• export_weight_map
• flatten_at_location
• get_height_at_location
• get_height_in_region
• get_hole_at_location
• get_landscape_info
• get_landscape_property
• get_layer_weights_at_location
• get_spline_info
• get_weights_in_region
• import_heightmap
• import_weight_map
• landscape_exists
• layer_exists
• list_landscapes
• list_layers
• modify_spline_point
• paint_layer_at_location
• paint_layer_in_region
• paint_layer_in_world_rect
• raise_lower_region
• remove_layer
• resize_landscape
• sculpt_at_location
• set_height_in_region
• set_hole_at_location
• set_hole_in_region
• set_landscape_collision
• set_landscape_material
• set_landscape_property
• set_landscape_visibility
• set_spline_point_mesh
• set_spline_segment_meshes
• set_weights_in_region
• smooth_at_location

🎨 LandscapeMaterialService

22 methods

Landscape material layers, blend nodes, layer info objects, and grass output for terrain shading

View representative methods
• add_layer_to_blend_node
• assign_material_to_landscape
• connect_to_layer_input
• create_grass_output
• create_landscape_material
• create_layer_blend_node
• create_layer_blend_node_with_layers
• create_layer_coords_node
• create_layer_info_object
• create_layer_sample_node
• create_layer_weight_node
• get_layer_blend_info
• get_layer_info_details
• landscape_material_exists
• layer_info_exists
• remove_layer_from_blend_node
• setup_layer_textures

🌿 FoliageService

15 methods

Foliage type management, instance scattering, layer-aware placement, and instance queries

View representative methods
• add_foliage_instances
• clear_all_foliage
• create_foliage_type
• foliage_type_exists
• get_foliage_in_radius
• get_foliage_type_property
• get_instance_count
• has_foliage_instances
• list_foliage_types
• remove_all_foliage_of_type
• remove_foliage_in_radius
• scatter_foliage
• scatter_foliage_on_layer
• scatter_foliage_rect
• set_foliage_type_property

🏗️ ActorService

27 methods

Level actor management - discovery, transforms, selection, spawning

View representative methods
• actor_exists
• actor_exists_by_tag
• add_actor
• attach_actor
• deselect_all
• detach_actor
• find_actors_by_class
• focus_actor
• get_actor_info
• get_all_properties
• get_property
• get_transform
• list_level_actors
• move_actor_to_view
• refresh_viewport
• remove_actor
• rename_actor
• select_actor
• set_folder
• set_location
• set_property
• set_rotation
• set_scale
• set_transform

📸 ScreenshotService

5 methods

Capture editor windows and viewports for AI vision capabilities

View representative methods
• capture_active_window
• capture_editor_window
• capture_viewport
• get_active_window_title
• get_open_editor_tabs
• is_editor_window_active

NiagaraService

37 methods

Create and manage Niagara VFX systems, emitters, parameters, settings discovery, and rapid iteration values

View representative methods
• add_emitter
• add_user_parameter
• compare_systems
• compile_system
• compile_with_results
• copy_emitter
• copy_system_properties
• create_system
• debug_activation
• duplicate_emitter
• emitter_exists
• enable_emitter
• get_all_editable_settings
• get_emitter_graph_position
• get_emitter_lifecycle
• get_parameter
• get_system_info
• get_system_properties
• list_emitter_templates
• list_emitters
• list_parameters
• list_rapid_iteration_params
• move_emitter
• open_in_editor
• parameter_exists
• remove_emitter
• remove_user_parameter
• rename_emitter
• save_system
• search_emitter_assets
• search_systems
• set_emitter_graph_position
• set_parameter
• set_rapid_iteration_param
• set_rapid_iteration_param_by_stage
• summarize
• system_exists

🔥 NiagaraEmitterService

23 methods

Manage Niagara emitter modules, renderers, and script properties

View representative methods
• add_module
• add_renderer
• enable_module
• enable_renderer
• get_color_curve_keys
• get_emitter_properties
• get_module_info
• get_module_input
• get_rapid_iteration_parameters
• get_renderer_details
• get_script_info
• list_builtin_modules
• list_modules
• list_renderers
• remove_module
• remove_renderer
• reorder_module
• search_module_scripts
• set_color_curve_keys
• set_color_tint
• set_module_input
• set_renderer_property
• shift_color_hue

📋 ProjectSettingsService

16 methods

Configure project settings, editor preferences, UI appearance, and default maps

View representative methods
• discover_settings_classes
• get_category_settings_as_json
• get_ini_array
• get_ini_value
• get_setting
• get_setting_info
• list_categories
• list_ini_keys
• list_ini_sections
• list_settings
• save_all_config
• save_config
• set_category_settings_from_json
• set_ini_array
• set_ini_value
• set_setting

⚙️ EngineSettingsService

23 methods

Control engine configuration: rendering, physics, audio, CVars, scalability, and garbage collection

View representative methods
• get_category_settings_as_json
• get_console_variable
• get_console_variable_info
• get_engine_ini_array
• get_engine_ini_value
• get_scalability_settings
• get_setting
• get_setting_info
• list_categories
• list_console_variables_with_prefix
• list_engine_sections
• list_settings
• save_all_engine_config
• save_engine_config
• search_console_variables
• set_category_settings_from_json
• set_console_variable
• set_console_variables_from_json
• set_engine_ini_array
• set_engine_ini_value
• set_overall_scalability_level
• set_scalability_level
• set_setting

🧠 StateTreeService

66 methods

Create, inspect, and edit StateTree AI behavior assets with hierarchical states, tasks, evaluators, enter conditions, transitions, parameters, theme colors, and compile/save

View representative methods
• add_enter_condition
• add_evaluator
• add_global_task
• add_or_update_root_float_parameter
• add_or_update_root_parameter
• add_state
• add_task
• add_transition
• add_transition_condition
• bind_task_property_to_context
• bind_task_property_to_root_parameter
• compile_state_tree
• create_state_tree
• get_available_condition_types
• get_available_evaluator_types
• get_available_task_types
• get_enter_condition_property_names
• get_evaluator_property_names
• get_global_task_property_names
• get_root_parameters
• get_state_tree_info
• get_task_property_names
• get_task_property_value
• get_theme_colors
• get_transition_condition_property_names
• list_state_trees
• move_task
• move_transition
• remove_enter_condition
• remove_evaluator
• remove_global_task
• remove_root_parameter
• remove_state
• remove_task
• remove_transition
• remove_transition_condition
• rename_root_parameter
• rename_state
• rename_theme_color
• save_state_tree
• set_context_actor_class
• set_enter_condition_operand
• set_enter_condition_property_value
• set_evaluator_property_value
• set_global_task_property_value
• set_selection_behavior
• set_state_description
• set_state_enabled
• set_state_expanded
• set_state_tag
• set_state_theme_color
• set_state_weight
• set_task_considered_for_completion
• set_task_enabled
• set_task_property_value
• set_task_property_value_detailed
• set_tasks_completion
• set_transition_condition_operand
• set_transition_condition_property_value
• update_transition

Full Unreal Engine Python API

Beyond the VibeUE services, you have direct access to ALL Unreal Engine Python APIs

unreal.EditorAssetLibrary

Asset operations - load, save, delete, duplicate, rename

unreal.EditorActorSubsystem

Level manipulation - actor spawning, selection, transforms

⚠️ Replaces deprecated EditorLevelLibrary

unreal.EditorUtilityLibrary

Editor utilities - selection, filtering, batch operations

unreal.SystemLibrary

System functions - paths, platform info, console commands

unreal.BlueprintEditorLibrary

Blueprint editor operations - compile, open, navigate

And Many More...

Full access to everything Unreal exposes via Python

🔧 Common Workflows

Create Blueprint with Variables

import unreal

# Create blueprint
path = unreal.BlueprintService.create_blueprint(
    "BP_Player", "Actor", "/Game/Blueprints")

# Add variables
unreal.BlueprintService.add_variable(
    path, "Health", "Float", "100.0")
unreal.BlueprintService.add_variable(
    path, "MaxHealth", "Float", "100.0")

# Compile (REQUIRED before variable nodes)
unreal.BlueprintService.compile_blueprint(path)

# Save
unreal.EditorAssetLibrary.save_asset(path)

Build Material Graph

import unreal

# Create material
path = "/Game/Materials/M_Custom"
unreal.MaterialService.create_material(
    "M_Custom", "/Game/Materials")

# Create color parameter
param_id = unreal.MaterialNodeService.create_parameter(
    path, "Vector", "BaseColor", "Surface", "", -300, 0)

# Connect to material output
unreal.MaterialNodeService.connect_to_output(
    path, param_id, "", "BaseColor")

# Compile
unreal.MaterialService.compile_material(path)

🧠 Skills System - Domain Knowledge

25 lazy-loaded domain knowledge modules help AI understand critical rules, workflows, and common mistakes

📘

blueprints

Lifecycle, variables, functions, nodes

🎬

animation-blueprint

State machines, states, transitions

🧬

animsequence

Keyframes, curves, notifies

🎞️

animation-montage

Sections, slots, combo timing

🎨

materials

Creation, graph editing

🎮

enhanced-input

Actions, mappings, triggers

📋

data-tables

Rows, JSON import/export

📊

data-assets

Instances, properties

🧩

enum-struct

User-defined enums & structs

🖼️

umg-widgets

UI creation, styling

🏗️

level-actors

Manipulation, spawning

📁

asset-management

Search, import/export

📸

screenshots

Editor window capture

niagara-systems

VFX system creation

🔥

niagara-emitters

Emitter modules

🦴

skeleton

Bones, sockets, retargeting

📋

project-settings

Project config, editor prefs

⚙️

engine-settings

CVars, scalability, physics

🧠

state-trees

AI state machines, tasks, transitions

Using Skills

# List available skills
manage_skills(action="list")

# Load a specific skill for domain knowledge
manage_skills(action="load", skill_name="blueprints")

# Load multiple skills
manage_skills(action="load", skill_names=["blueprints", "enhanced-input"])

Have Questions About the Python API?

Check out our comprehensive FAQ covering installation, features, use cases, and troubleshooting.

📚 View FAQ

Ready to Use the Python API?

Start exploring Unreal Engine with AI-powered Python development