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.

7 MCP TOOLS
19 SERVICES
570+ METHODS

🏗️ How It Works

🔍

MCP Discovery Tools

Lightweight tools for exploring and executing Python in Unreal

7 Tools
🐍

Python API Services

High-level services for common game development tasks

19 Services, 570+ 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

read_logs

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

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

73 methods

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

View all 73 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 all 38 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

75 methods

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

View all 75 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

55 methods

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

View all 55 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

47 methods

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

View all 47 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

29 methods

Material and material instance creation, properties, and parameters

View all 29 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

21 methods

Material graph expressions and connections

View all 21 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

16 methods

UMG widget blueprints and components

View all 16 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 all 23 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

19 methods

Asset search, import/export, and references

View all 19 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 all 11 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 all 15 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 all 20 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

🏗️ ActorService

24 methods

Level actor management - discovery, transforms, selection, spawning

View all 24 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

6 methods

Capture editor windows and viewports for AI vision capabilities

View all 6 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 all 37 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 all 23 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 all 16 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 all 23 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

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.EditorLevelLibrary

Level manipulation - actor spawning, selection, transforms

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

18 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

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