Symbiote Labs' Unreal MCP Server: A server for Unreal Engine integration via the Model Context Protocol (MCP).
Project description
Symbiote Creative Labs Unreal Engine 5 MCP Server
Attribution
This project is based on chongdashu/unreal-mcp, an MIT-licensed Unreal Engine MCP server. We are not forking, but have built our implementation using the current version as a reference and foundation. All original copyright and license notices from chongdashu/unreal-mcp are retained.
A comprehensive Model Context Protocol (MCP) server for Unreal Engine integration, providing powerful automation tools for Blueprint creation, actor manipulation, UMG widget development, and more.
Differences from [chongdashu/unreal-mcp]
- Refactored for PyPI packaging and modern Python project structure
- Enhanced documentation and examples
Features
- Blueprint Management: Create, compile, and manipulate Blueprint classes
- Actor Operations: Spawn, delete, and modify actors in your levels
- UMG Widget Tools: Create and manage UMG Widget Blueprints with ease
- Node Graph Manipulation: Add and connect Blueprint nodes programmatically
- Component Management: Add and configure components on Blueprints and actors
- Project Settings: Manage input mappings and project configurations
- Viewport Control: Focus viewport, take screenshots, and manage camera positions
Installation
From PyPI
pip install unreal-mcp
From Source
git clone https://github.com/symbiote-labs/Symbiote_UE5.git
cd unreal-mcp
pip install -e .
Quick Start
1. Start the MCP Server
unreal-mcp
Or programmatically:
from unreal_mcp import UnrealMCPServer
server = UnrealMCPServer()
server.run()
2. Configure Unreal Engine
The server connects to Unreal Engine via TCP socket on port 55557. Make sure your Unreal Engine instance is configured to accept MCP connections on this port.
3. Use with MCP Clients
The server implements the Model Context Protocol and can be used with any MCP-compatible client, such as Claude Desktop or other AI assistants.
Available Tools
Blueprint Tools
create_blueprint(name, parent_class)- Create new Blueprint classescompile_blueprint(blueprint_name)- Compile Blueprint changesadd_component_to_blueprint(blueprint_name, component_type, component_name)- Add componentsset_blueprint_property(blueprint_name, property_name, property_value)- Set Blueprint properties
Actor Management
spawn_actor(name, type, location, rotation, scale)- Create actors in the leveldelete_actor(name)- Remove actorsget_actors_in_level()- List all actors in current levelset_actor_transform(name, location, rotation, scale)- Modify actor transforms
UMG Widget Tools
create_umg_widget_blueprint(widget_name, parent_class, path)- Create UMG Widget Blueprintsadd_text_block_to_widget(widget_name, text_block_name, text, position, size)- Add text blocksadd_button_to_widget(widget_name, button_name, text, position, size)- Add buttonsbind_widget_event(widget_name, widget_component_name, event_name)- Bind widget events
Blueprint Node Management
add_blueprint_event_node(blueprint_name, event_type)- Add event nodesadd_blueprint_function_node(blueprint_name, target, function_name)- Add function nodesconnect_blueprint_nodes(blueprint_name, source_node_id, source_pin, target_node_id, target_pin)- Connect nodesadd_blueprint_variable(blueprint_name, variable_name, variable_type)- Add variables
Editor Tools
focus_viewport(target, location, distance, orientation)- Focus viewport on objectstake_screenshot(filename, show_ui, resolution)- Capture screenshotsimport_fbx(file_path, output_path)- Import FBX files
Configuration
The server can be configured through environment variables or by modifying the connection settings:
# Default configuration
UNREAL_HOST = "127.0.0.1"
UNREAL_PORT = 55557
Examples
Creating a Simple Actor Blueprint
# Create a new Blueprint
response = create_blueprint("MyActor", "Actor")
# Add a Static Mesh Component
add_component_to_blueprint(
"MyActor",
"StaticMeshComponent",
"MeshComponent",
location=[0, 0, 0]
)
# Set the static mesh
set_static_mesh_properties(
"MyActor",
"MeshComponent",
"/Engine/BasicShapes/Cube.Cube"
)
# Compile the Blueprint
compile_blueprint("MyActor")
Creating a UMG Widget
# Create a new Widget Blueprint
create_umg_widget_blueprint("MainMenu", "UserWidget", "/Game/UI")
# Add a button
add_button_to_widget(
"MainMenu",
"PlayButton",
"Play Game",
position=[100, 100],
size=[200, 50]
)
# Bind the button click event
bind_widget_event("MainMenu", "PlayButton", "OnClicked", "StartGame")
License
This project is licensed under the MIT License - see the LICENSE file for details.
Portions of the code and design are derived from chongdashu/unreal-mcp, also MIT-licensed.
Support
- Documentation: GitHub README
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Changelog
v0.1.1
- Documentation updates
v0.1.0
- Initial release
- Blueprint creation and manipulation tools
- Actor management functionality
- UMG Widget Blueprint tools
- Blueprint node graph manipulation
- Editor tools for viewport and screenshot management
- Project settings management
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file symbiote_unreal_mcp-0.2.0.tar.gz.
File metadata
- Download URL: symbiote_unreal_mcp-0.2.0.tar.gz
- Upload date:
- Size: 33.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
651635115416fa7a5f88b9f1a7a354a9b86219533ce3014b9039249fffc0efdf
|
|
| MD5 |
f2806f8c49aa10484600d53182296be7
|
|
| BLAKE2b-256 |
394ce2a1cc235b7ed72fcb5080f20bcbfeb396f2f1a42b05b204de9d60c2e764
|
File details
Details for the file symbiote_unreal_mcp-0.2.0-py3-none-any.whl.
File metadata
- Download URL: symbiote_unreal_mcp-0.2.0-py3-none-any.whl
- Upload date:
- Size: 23.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39e550281f7714ed43f01473678a1b1444c794204878d6ca8559d71607597a42
|
|
| MD5 |
0a5a0ff7719ae72957ce2bf973d79ea4
|
|
| BLAKE2b-256 |
e68d8fe015a2ee2f0cf84a658232bca1b3ef21ac53aac5878c3acdcdd03ddd42
|