UnrealMotionGraphicsMCP

mcp
Guvenlik Denetimi
Gecti
Health Gecti
  • License Ò€” License: MIT
  • Description Ò€” Repository has a description
  • Active repo Ò€” Last push 0 days ago
  • Community trust Ò€” 108 GitHub stars
Code Gecti
  • Code scan Ò€” Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
  • Permissions Ò€” No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

πŸš€ UE5-UMG-MCP: A deep-focused MCP for Unreal Engine UMG layout. Designed to maximize AI efficiency within limited context windows by prioritizing precision in UI structure, animations, and blueprint integration.

README.md

δΈ­ζ–‡η‰ˆη‚Ήε‡»θΏ™ι‡Œ

UE5-UMG-MCP πŸ€–πŸ“„

A Version-Controlled AI-Assisted UMG Workflow

License: MITStatus: ExperimentalBuilt with AI

Demo Designed A RTS UI

Demo Recreating the UE5 editor

Demo Recreating the UE5 editor in UMG editor

Chat with Gemini 3 to editor the UMG file


πŸ›οΈ Looking for an easier Setup? Try the Fab Version!

If you find manual plugin configuration and MCP environment setup too cumbersome, check out our commercial version on Fab:
UMG MCP on Fab Marketplace

Differences between Fab and Open Source versions:

  • Out-of-the-Box: The Fab version installs directly via the Unreal Engine launcher, eliminating the need for manual cloning and Python environment setup.
  • Context Compression: The Fab version includes advanced context management, automatically filtering redundant MCP history to maximize available tokens for the AI.
  • Commercial Focus: While the Open Source version is our protocol testbed, the Fab version is optimized for production business logic. Commercial users receive prioritized support for their specific integration challenges.
  • Maintained Parity: We remain committed to open source; all core logic improvements will continue to be synced to this GitHub repository.

πŸš€ Quick Start

This guide covers the two-step process to install the UmgMcp plugin and connect it to your Gemini CLI.

  • Prerequisite: Unreal Engine 5.6 or newer.

1. Install the Plugin

  1. Navigate to your project's Plugins folder: YourProject/Plugins/ (create it if it doesn't exist).

  2. Clone the repository directly into this directory:

    git clone https://github.com/winyunq/UnrealMotionGraphicsMCP.git UmgMcp
    
  3. Restart the Unreal Editor. This allows the engine to detect and compile the new plugin.

2. Connect the Gemini CLI

Tell Gemini how to find and launch the MCP server.

  1. Edit your settings.json file (usually located at C:\Users\YourUsername\.gemini\).

  2. Add the tool definition to the mcpServers object.

    "mcpServers": {
      "UmgMcp": {
        "command": "uv",
        "args": [
          "run",
          "--directory",
          "D:\\Path\\To\\YourUnrealProject\\Plugins\\UmgMcp\\Resources\\Python",
          "UmgMcpServer.py"
        ]
      }
    }
    

    IMPORTANT: You must replace the path with the correct absolute path to the Resources/Python folder from the cloned repository on your machine.

That's it! When you start the Gemini CLI, it will automatically launch the MCP server in the background.

Testing the Connection

After restarting your Gemini CLI and opening your Unreal project, you can test the connection by calling any tool function:

  cd Resources/Python/APITest
  python UE5_Editor_Imitation.py

Python Environment (Optional)

The plugin's Python environment is managed by uv. In most cases, it should work automatically. If you encounter issues related to Python dependencies (e.g., uv command not found or module import errors), you can manually set up the environment:

  1. Navigate to the directory: cd YourUnrealProject/Plugins/UmgMcp/Resources/Python
  2. Run the setup:
    uv venv
    .\.venv\Scripts\activate
    uv pip install -e .
    

πŸ§ͺ Experimental: Gemini CLI Skill Support

We are experimenting with the Gemini CLI Skill system as an alternative to the standard MCP approach.
The Skill architecture allows the Python tools to be loaded directly by the CLI runtime, potentially optimizing context usage by dynamically enabling/disabling tools via prompts.json and avoiding the overhead of managing a separate MCP server process.

Note: The MCP server (configured above) is still the stable and recommended way to use this plugin. Use Skill mode if you want to test the latest integration capabilities.

Configuration (Skill Mode)

To enable Skill mode, add the following to your settings.json (replacing <YOUR_PROJECT_PATH>):

  "skills": {
    "unreal_umg": {
      "path": "<YOUR_PROJECT_PATH>/Plugins/UmgMcp/Resources/Python/UmgMcpSkills.py",
      "type": "local",
      "description": "Direct control of Unreal Engine UMG via Python Skills. Auto-loads tools from prompts.json."
    }
  },

English

This project provides a powerful, command-line driven workflow for managing Unreal Engine's UMG UI assets. By treating human-readable .json files as the sole Source of Truth, it fundamentally solves the challenge of versioning binary .uasset files in Git.

Inspired by tools like blender-mcp, this system allows developers, UI designers, and AI assistants to interact with UMG assets programmatically, enabling true Git collaboration, automated UI generation, and iteration.


Prompt Manager

A visual web tool for configuring system instructions, tool descriptions, and user prompt templates.

Features

  1. System Instruction Editor: Modify the global instructions for the AI context.
  2. Tool Management:
    • Enable/Disable: Toggle specific MCP tools on or off. Disabled tools are not registered with the MCP server, effectively compressing the context window to prevent AI distraction.
    • Edit Descriptions: Customize tool descriptions (prompts) to better suit your workflow.
  3. User Templates (Prompts): Add reusable prompt templates for quick access by the MCP client.

How to Run

Execute the following command in your Python environment:

python Resources/Python/PromptManager/server.py

The browser will automatically open http://localhost:8085。

Usage Tips

Prompts are crucial for AI tool effectiveness. Use the Prompt Manager to tailor the AI's behavior:

  • One-Click Deployment Mode: If you want the AI to focus solely on generating UI from design, disable all tools except apply_layout and export_umg_to_json.
  • Tutor Mode: If you want the AI to guide you without making changes, keep only read-only tools (e.g., get_widget_tree, get_widget_schema).
  • Context Optimization: For models with smaller context windows, disable tools you aren't currently using to improve speed and accuracy.

Contributions of effective prompt configurations are welcome!


AI Authorship & Disclaimer

This project has been developed with significant assistance from Gemini, an AI. As such:

  • Experimental Nature: This is an experimental project. Its reliability is not guaranteed.
  • Commercial Use: Commercial use is not recommended without thorough independent validation and understanding of its limitations.
  • Disclaimer: Use at your own risk. The developers and AI are not responsible for any consequences arising from its use.

Current Technical Architecture Overview

The system now primarily relies on the UE5_UMG_MCP plugin for communication between external clients (like this CLI) and the Unreal Engine Editor.

Architecture Diagram:

flowchart LR
    subgraph "Local Execution Environment"
        CLI["Gemini CLI"] --"StdIO (JSON-RPC)"--> PY["Python (UmgMcpServer.py)"]
    end

    subgraph "Unreal Engine 5"
        PY --"TCP Socket (JSON)"--> TCP["UmgMcpBridge (C++)"]
        TCP --> API["Unreal API / UMG"]
    end

API Status

Category API Name Status
Context & Attention get_target_umg_asset βœ…
set_target_umg_asset βœ…
get_last_edited_umg_asset βœ…
get_recently_edited_umg_assets βœ…
Sensing & Querying get_widget_tree βœ…
query_widget_properties βœ…
get_creatable_widget_types βœ…
get_widget_schema βœ…
get_layout_data βœ…
check_widget_overlap βœ…
Actions & Modifications create_widget βœ…
delete_widget βœ…
set_widget_properties βœ…
reparent_widget βœ…
save_asset βœ…
File Transformation export_umg_to_json βœ…
apply_json_to_umg βœ…
apply_layout βœ…

UMG Blueprint API Status (New)

Category API Name Status Description
Context & Attention set_edit_function βœ… Set the current edit context (Function/Event). Supports auto-creating Custom Events.
set_cursor_node βœ… Explicitly set the "Cursor" node (Program Counter).
Sensing & Querying get_function_nodes βœ… Get nodes in Current Context Scope (Filtered to connected graph to avoid global noise).
get_variables βœ… Get list of member variables.
search_function_library βœ… Search callable libraries (C++/BP). Supports Fuzzy Search.
Actions & Modifications add_step(name) βœ… Core: Add executable node by Name (e.g. "PrintString"). Auto-Wiring & Auto-Layout supported.
prepare_value(name) βœ… Add Data Node by Name (e.g. "MakeLiteralString", "GetVariable").
connect_data_to_pin βœ… Connect pins precisely (Supports NodeID:PinName format).
add_variable βœ… Add new member variable.
delete_variable βœ… Delete member variable.
delete_node βœ… Delete specific node.
compile_blueprint βœ… Compile and apply changes.

UMG Sequencer API Status

Command Status Description
set_animation_scope βœ… Implemented Set the target animation for subsequent commands
set_widget_scope βœ… Implemented Set the target widget for subsequent commands
get_all_animations βœ… Implemented Get list of all animations in the blueprint
create_animation βœ… Implemented Create a new animation
delete_animation βœ… Implemented Delete an animation
set_property_keys βœ… Implemented Set keyframes for a property (Float only currently)
remove_property_track 🚧 Planned Remove a property track
remove_keys 🚧 Planned Remove specific keys
get_animation_keyframes 🚧 Planned Get keyframes for an animation
get_animated_widgets 🚧 Planned Get list of widgets affected by animation

UMG Material API Status (New: The 5 Core Pillars Strategy)

Category API Name Status Description
P0: Context material_set_target βœ… Anchor: Specify target asset (path or parent). Required for stateful editing.
P1: Def & Query material_define_variable βœ… Define external interface parameters (Def, not wire). Supports Scalar, Vector, Texture.
P2: Symbol Place material_add_node βœ… Drag Symbol: Place a symbol from lib into graph and assign a unique instance handle.
material_get_graph βœ… Query existence and state of node instances in the graph.
P3: Connectivity material_connect_nodes βœ… Natural Connection: Establish node-to-node functional flow (A -> B).
material_connect_pins βœ… Surgical Wiring: Manually connect specific pins for complex topologies.
P4: Lib Search material_search_library 🚧 Planned Search for available Material Expressions (symbols) and Functions.
P5: Tactical Detail material_set_hlsl_node_io βœ… Tactical Code: Inject HLSL into Custom nodes and sync IO pins via JSON mapping.
material_set_node_properties βœ… Property Editing: Set internal properties for regular nodes (e.g. Constant Value, Texture).
Lifecycle material_compile_asset βœ… Submit changes and analyze HLSL compilation errors.
Maintenance material_delete βœ… Delete node instances or clean up logic by unique handle.
material_get_pins βœ… Introspect pins for a specific node handle.

UMG Style & Theming API Status (New)

Category API Name Status Description
Styling set_widget_style 🚧 Planned Set detailed style (e.g. FButtonStyle) for a specific widget.
Theming apply_global_theme 🚧 Planned Batch apply styles and fonts across multiple widgets based on a theme config.
Assets style_create_asset 🚧 Planned Create a standalone Slate Widget Style asset.

Project Status Update

I'm sorry, due to Google's cancellation of my student discount, my free time to advance this project is limited. But don't worry, as this has forced me to use AIs from other platforms, which might actually accelerate the support for other platforms in this plugin. Specifically, our upcoming development plan is to add various API key access in the Fab version because I believe you are all tech-savvy, but those who truly need UMG are artists who may not have a technical background. In any case, if you could purchase a paid version of UMG MCP on Fab, that would be wonderfulβ€”maybe I could then directly subscribe to Gemini AI for development?

Yorumlar (0)

Sonuc bulunamadi