UnrealMCP — AI Bridge for Unreal Engine 5 について
UnrealMCPは、CLIまたはMCPクライアントからUnreal Engine 5エディターを操作するコミュニティ向けツールセットです。CLIと共通のプラグインを通じて、アセット、Blueprint、マテリアル、Niagara、アクター、データテーブル、プロファイリングのコマンドを提供します。
主な機能
- 0115カテゴリにわたる288コマンド
- 02Blueprintとマテリアルの編集
- 03Niagaraシステムの作成と設定
- 04アクターとデータテーブルの管理
- 05基本的なパフォーマンス分析
- 06CLIとMCPサーバーからの操作
活用シーン
- 01Blueprintグラフの構築とコンパイル
- 02マテリアルやNiagaraエフェクトの作成・調整
- 03アクターの配置とデータテーブルの編集
- 04AIクライアントからUnreal Engineプロジェクトを分析
MCP 対応
MCPサーバーはstdioで通信し、ローカルTCP経由でUnreal Engineエディター内のC++プラグインに接続します。Claude Code、Cursor、Windsurf、VS CodeなどのMCPクライアントで設定できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
286掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| code | string | はい |
詳細
UnrealMCP — Unreal Engine 5 向け AI ブリッジ
Claude Code、Cursor、Windsurf、またはあらゆる MCP クライアントから Unreal Engine 5 エディターを操作できます。 マテリアルの作成、Blueprint グラフの接続、Niagara システムの作成、アクターのスポーン、データテーブルの編集、パフォーマンスのプロファイリングまで、すべて指示するだけで実行できます。15 カテゴリにわたる 288 個のコマンドを、ターミナルを離れずに利用できます。
これはコミュニティ版です
コミュニティ版は、対応範囲において安定しており、機能も完成しています。開発が放棄されたわけではありませんが、積極的に開発されているわけでもありません。現在、新しいサブシステムの開発は、メンテナンスが継続されている商用版の **CodeFizz Editor Agent**に移行しています。ここにあるすべての機能は引き続き動作し、Issue も引き続き確認されます。MIT ライセンスは永久に有効です。
Control Rig、PCG、Sequencer、Mutable、Procedural Vegetation、オーディオと MetaSounds、Behavior Trees と EQS、または UE 5.6/5.7/5.8 向けのパッケージ済みバイナリが必要な場合は、Pro 版をご利用ください。
コミュニティ版と Pro 版の比較
| コミュニティ版(このリポジトリ) | CodeFizz Editor Agent(Pro) | |
|---|---|---|
| コマンド数 | 288 | 900 以上 |
| カテゴリ数 | 15 | 28 |
| エンジンのサポート | 自分でビルド | 5.6、5.7、5.8 |
| Blueprint、マテリアル、Niagara、StateTree | 対応 | 対応、さらに高度な機能も利用可能 |
| Control Rig、PCG、Sequencer | 非対応 | 対応 |
| Mutable、Procedural Vegetation | 非対応 | 対応 |
| オーディオ、MetaSounds、Sound Cues | 非対応 | 対応 |
| Behavior Trees、EQS | 非対応 | 対応 |
| Insights によるプロファイリング | 基本機能 | トレースの完全な分析 |
| インストール | クローン、ビルド、設定 | 1 つのコマンドで完了、コンパイラー不要 |
| アップデート | コミュニティのペース | 継続的に提供 |
| サポート | GitHub の Issue | 優先対応、非公開 Discord |
コマンド一覧を見る → · ドキュメント · 3 日間の無料トライアル
すでに UE 5.8 をお使いですか? Epic は 5.8 でファーストパーティの MCP サーバーを提供しています(実験的機能、localhost のみ)。何かを購入する前に、まず試してみる価値があります。このリポジトリと Pro 版は、Epic の MCP サーバーが対応していない 5.6 と 5.7 にも対応しています。
このリポジトリの 2 つの利用方法
| CLI | MCP サーバー | |
|---|---|---|
| インストール | npm install -g unrealcli | pip install unrealmcp |
| 依存関係 | なし(単一バイナリ) | Python 3.10 以降 |
| 対応クライアント | Claude Code(Bash 経由) | Claude Code、Cursor、Windsurf、VS Code、Gemini CLI、Rider、Zed、Amazon Q |
| プロトコル | TCP による直接接続 | stdio 経由の MCP |
どちらもエディター内で動作する同じ C++ プラグインと通信します。ワークフローに合った方法を使うか、両方を併用してください。
クイックスタート
オプション A:CLI(Claude Code におすすめ)
# 1. Install
npm install -g unrealcli
# 2. Go to any UE5 project and install the plugin
cd YourProject/
ue-cli init
# 3. Open the editor, then verify
ue-cli health_check
これだけです。Python も設定ファイルも MCP のセットアップも必要ありません。
オプション B:MCP サーバー(Cursor、Windsurf など向け)
# 1. Clone the plugin into your project
git clone https://github.com/aadeshrao123/Unreal-MCP.git Plugins/UnrealMCP
# 2. Install the Python MCP server
pip install unrealmcp
# 3. Add to your AI tool's config (see MCP Setup section below)
仕組み
┌──────────────────────────────────────────┐
│ Unreal Engine 5 Editor │
│ │
│ C++ Plugin (UnrealMCPBridge) │
│ TCP server on localhost:55557 │
│ 288 commands: materials, blueprints, │
│ niagara, statetree, actors, data │
│ tables, profiling, and more │
└──────────────┬───────────────────────────┘
│ TCP/JSON
┌──────────────┴───────────────────────────┐
│ │
┌─────────┴─────────┐ ┌─────────┴──────────┐
│ CLI (ue-cli) │ │ MCP Server │
│ Go binary │ │ Python (unrealmcp)│
│ Direct TCP │ │ stdio → TCP │
│ │ │ │
│ Claude Code │ │ Cursor, Windsurf, │
│ (via Bash tool) │ │ VS Code, Rider... │
└───────────────────┘ └────────────────────┘
C++ プラグインはエディター内で動作し、TCP 経由で 288 個のコマンドを公開します。CLI と MCP サーバーは、同じプラグインにつながる 2 つの異なる入り口です。
CLI リファレンス
インストール
# From npm (recommended)
npm install -g unrealcli
# Or download binary directly from GitHub Releases
# https://github.com/aadeshrao123/Unreal-MCP/releases
対応プラットフォーム: Windows(x64)、macOS(Intel + Apple Silicon)、Linux(x64 + ARM64)
セットアップ
# Navigate to your UE5 project
cd MyProject/
# Install the C++ plugin (one-time)
ue-cli init
# → Creates Plugins/UnrealMCP/ with C++ source
# → Patches .uproject to enable the plugin
# → Open editor to compile, then you're ready
# Verify everything works
ue-cli doctor
使い方
# Every command follows this pattern:
ue-cli <command> [--flag value]
# Examples:
ue-cli health_check
ue-cli find_assets --class-type material --path /Game
ue-cli spawn_actor --name MyCube --type StaticMeshActor --location "[0,0,100]"
ue-cli get_data_table_rows --data-table-path /Game/Data/DT_Items
ue-cli save_all
# For complex params, use --json:
ue-cli build_material_graph --json '{"material_path":"/Game/M_Test","nodes":[...],"connections":[...]}'
# Or pipe from stdin:
echo '{"material_path":"/Game/M_Test","nodes":[...]}' | ue-cli build_material_graph --json -
ヘルプと機能の確認
# See all commands grouped by category
ue-cli --help
# See flags for a specific command
ue-cli find_assets --help
# Dump all commands with descriptions, flags, and examples (for AI assistants)
ue-cli list_commands
グローバルフラグ
| フラグ | 説明 |
|---|---|
--port <int> | TCP ポートの上書き(デフォルト:ポートファイルから自動検出) |
--timeout <int> | タイムアウト(秒)(デフォルト:30、大規模な処理:300) |
--json <string> | すべてのパラメーターを JSON 文字列で指定(標準入力には - を使用) |
--version | バージョンを表示 |
主なコマンド
アセット
ue-cli find_assets --class-type material --path /Game/Materials
ue-cli list_assets --path /Game --class-filter blueprint
ue-cli get_asset_properties --asset-path /Game/Materials/M_Base
ue-cli import_asset --source-file "C:/Art/texture.png" --destination-path /Game/Textures
ue-cli save_asset --asset-path /Game/Materials/M_Base
ue-cli save_all
ブループリント
ue-cli create_blueprint --name BP_MyActor --parent-class Actor
ue-cli add_component_to_blueprint --blueprint-path /Game/BP_MyActor --component-class StaticMeshComponent
ue-cli add_event_node --blueprint-name BP_MyActor --event-name BeginPlay
ue-cli compile_blueprint --blueprint-name BP_MyActor
ue-cli read_blueprint_content --blueprint-path /Game/BP_MyActor
マテリアル
ue-cli create_material --name M_Red --path /Game/Materials
ue-cli build_material_graph --material-path /Game/Materials/M_Red \
--nodes '[{"type":"Constant3Vector","pos_x":-400,"properties":{"Constant":"(R=1,G=0,B=0)"}}]' \
--connections '[{"from_node":0,"to_node":"material","to_pin":"BaseColor"}]'
ue-cli create_material_instance --parent-path /Game/Materials/M_Base --name MI_Red
データテーブル
ue-cli get_data_table_schema --data-table-path /Game/Data/DT_Items
ue-cli get_data_table_rows --data-table-path /Game/Data/DT_Items
ue-cli add_data_table_row --data-table-path /Game/Data/DT_Items --row-name CopperOre \
--data '{"DisplayName":"Copper Ore","StackSize":100}'
ue-cli update_data_table_row --data-table-path /Game/Data/DT_Items --row-name CopperOre \
--data '{"StackSize":200}'
アクターとレベル
ue-cli get_actors_in_level
ue-cli spawn_actor --name MyCube --type StaticMeshActor --location "[0,0,100]"
ue-cli spawn_blueprint_actor --blueprint-path /Game/BP_MyActor --location "[500,0,0]"
ue-cli find_actors_by_name --pattern "Light"
ue-cli get_world_info
ue-cli take_screenshot
パフォーマンスプロファイリング
# Record → Stop → Analyze
ue-cli performance_start_trace --channels "cpu,gpu,frame"
# ... play the game ...
ue-cli performance_stop_trace
ue-cli performance_analyze_insight --query diagnose
ue-cli performance_analyze_insight --query flame --count 20
ue-cli performance_analyze_insight --query search --filter "ConveyorProcessor"
Enhanced Input
ue-cli create_input_action --asset-path /Game/Input/IA_Jump --value-type Boolean
ue-cli create_input_mapping_context --asset-path /Game/Input/IMC_Default
ue-cli add_key_mapping --context-path /Game/Input/IMC_Default --action-path /Game/Input/IA_Jump --key SpaceBar
Niagara VFX
# Create a system from an emitter template, then tweak it
ue-cli create_niagara_system --asset-path /Game/VFX/NS_Sparks \
--template "/Niagara/DefaultAssets/FX_Sparks.FX_Sparks"
ue-cli get_niagara_system_info --asset-path /Game/VFX/NS_Sparks
ue-cli set_niagara_module_input --asset-path /Game/VFX/NS_Sparks \
--emitter-name Sparks --stack SpawnStack \
--module-name "Spawn Rate" --input-name SpawnRate --value 250
ue-cli compile_niagara_system --asset-path /Game/VFX/NS_Sparks
# Spawn it in the level
ue-cli spawn_niagara_effect --asset-path /Game/VFX/NS_Sparks --location "[0,0,200]"
StateTree
# Create a StateTree, add a state with a task, compile
ue-cli create_statetree --asset-path /Game/AI/ST_Enemy
ue-cli add_statetree_state --asset-path /Game/AI/ST_Enemy --state-name Patrol
ue-cli add_statetree_task --asset-path /Game/AI/ST_Enemy \
--state-name Patrol --task-type "MassEnemyNestPatrolTask"
ue-cli add_statetree_transition --asset-path /Game/AI/ST_Enemy \
--from-state Patrol --trigger OnEvent --event-tag "Enemy.SeePlayer"
ue-cli compile_statetree --asset-path /Game/AI/ST_Enemy
Mass Config Traits(部分的な編集)
# Modify a single trait property without touching the rest of the trait array
ue-cli get_mass_config_traits --asset-path /Game/Mass/Enemy_Config
ue-cli set_mass_config_trait_property --asset-path /Game/Mass/Enemy_Config \
--trait-class MassMovementTrait --property-name MaxSpeed --property-value 600
ウィジェット(UMG)
ue-cli get_widget_tree --widget-blueprint-path /Game/UI/WBP_HUD
ue-cli add_widget --widget-blueprint-path /Game/UI/WBP_HUD --widget-class TextBlock \
--parent-widget-name RootCanvas --widget-name TitleText \
--widget-properties '{"Text":"Hello World"}'
診断
# Check entire setup
ue-cli doctor
# Output:
# [ok] Project MyProject/MyProject.uproject
# [ok] Plugin directory Plugins/UnrealMCP/ exists
# [ok] Plugin source Source/UnrealMCPBridge/ exists
# [ok] UProject entry UnrealMCP plugin listed and enabled
# [ok] Port file port 55557
# [ok] TCP connection Connected to 127.0.0.1:55557
# [ok] Health check Bridge is responsive
# All checks passed. ue-cli is ready to use.
MCP サーバーのセットアップ
Model Context Protocol(Cursor、Windsurf、VS Code など)を使用する AI ツール向けです。
要件
- Unreal Engine 5.7(5.7 でテスト済み。以前の 5.x バージョンでも動作する可能性があります)
- Python 3.10+
- UE5 プラグイン(
.upluginによって自動的に有効化されます):PythonScriptPluginEditorScriptingUtilitiesEnhancedInput
インストール
pip install unrealmcp
セットアップスクリプト(手動設定の代替)
セットアップスクリプトは unrealmcp pip パッケージをインストールし、使用する AI ツールの MCP 設定を自動的に作成します。
Windows:
cd Plugins\UnrealMCP
install.bat
macOS / Linux:
cd Plugins/UnrealMCP
bash install.sh
スクリプトでは、MCP 設定の作成場所を選択します。
| スコープ | 動作 | 使用する場合 |
|---|---|---|
| プロジェクト | .uproject と同じ場所に設定を作成します | このプロジェクトだけで UnrealMCP を使用する場合 |
| グローバル | ユーザーフォルダーに設定を作成します | すべてのプロジェクトで UnrealMCP を使用する場合 |
AI ツールの設定
Claude Code — .mcp.json(プロジェクトルート)
{
"mcpServers": {
"unreal": {
"type": "stdio",
"command": "unrealmcp"
}
}
}
Cursor — .cursor/mcp.json
{
"mcpServers": {
"unreal": {
"command": "unrealmcp"
}
}
}
VS Code / Copilot — .vscode/mcp.json
{
"servers": {
"unreal": {
"command": "unrealmcp"
}
}
}
Windsurf — ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"unreal": {
"command": "unrealmcp"
}
}
}
Gemini CLI — .gemini/settings.json
{
"mcpServers": {
"unreal": {
"command": "unrealmcp"
}
}
}
JetBrains / Rider — .junie/mcp/mcp.json
{
"servers": [
{
"name": "unreal",
"command": "unrealmcp"
}
]
}
Zed — ~/.config/zed/settings.json
{
"context_servers": {
"unreal": {
"source": "custom",
"command": { "path": "unrealmcp" }
}
}
}
Amazon Q — .amazonq/mcp.json
{
"mcpServers": {
"unreal": {
"command": "unrealmcp"
}
}
}
全 288 コマンド
| カテゴリ | 数 | 主な機能 |
|---|---|---|
| コア | 2 | health_check、execute_python |
| アセット管理 | 16 | 検索/一覧表示/インポート/複製/名前変更/削除/保存 |
| ブループリント | 22 | 作成、コンパイル、変数、関数、グラフノード |
| マテリアル | 35 | 作成、build_material_graph、マテリアル関数、Substrate |
| データテーブル | 8 | 行の完全な CRUD とスキーマの詳細確認 |
| データアセット | 12 | データアセットとMass Config Trait の部分的な編集 |
| アクターとレベル | 19 | スポーン、トランスフォーム、プロパティ、スクリーンショット |
| Enhanced Input | 21 | アクション、マッピングコンテキスト、トリガー、モディファイア |
| ウィジェット — UMG | 11 | ウィジェットツリー、追加/移動/名前変更、スロットのプロパティ |
| Niagara VFX | 96 | システム、エミッター、スタックバインディング(ネスト対応)、スクラッチパッドの作成、グラフの CRUD、DI メンバー関数、ソースメニューの検出 |
| StateTree | 33 | ステート、タスク、評価関数、トランジション、条件、バインディング |
| パフォーマンスプロファイリング | 3 | .utrace の記録とスマート分析(診断/スパイク/フレームグラフ) |
| デバッグ | 2 | トークンの追跡、デバッグの切り替え |
コア(2)
| コマンド | 説明 |
|---|---|
health_check | ブリッジが実行中か確認します |
execute_python | エディターで任意の Python コードを実行します |
アセット管理(16)
| コマンド | 説明 |
|---|---|
find_assets | クラス/パス/名前でアセットレジストリを検索します |
list_assets | ディレクトリ内のアセットを一覧表示します |
get_asset_info | アセットのメタデータを取得します |
get_asset_properties | 編集可能なすべてのプロパティを取得します |
set_asset_property | プロパティを設定します |
find_references | 参照元/参照先を検索します |
import_asset | 外部ファイル(PNG、FBX など)をインポートします |
import_assets_batch | 一括インポートします |
duplicate_asset | 新しい場所にコピーします |
rename_asset | 名前を変更/移動します(参照を自動修正) |
delete_asset | 削除します(参照を確認) |
save_asset / save_all | 変更されたアセットを保存します |
open_asset | エディターで開きます |
sync_browser | コンテンツブラウザーを移動します |
get_selected_assets | 現在選択中のアセットを取得します |
ブループリント(22)
| コマンド | 説明 |
|---|---|
search_parent_classes | 有効な親クラスを検索します |
create_blueprint | 任意の親クラスから作成します |
compile_blueprint | コンパイルします |
read_blueprint_content | 全体構造を読み取ります |
analyze_blueprint_graph | グラフを分析します |
add_component_to_blueprint | コンポーネントを追加します |
create/get/set_blueprint_variable | 変数を管理します |
set_blueprint_variable_properties | 変数の設定を変更します |
create/delete/rename_blueprint_function | 関数を管理します |
add_function_input/output | 関数のパラメーターを設定します |
get_blueprint_function_details | 関数を調査します |
get/set_blueprint_class_defaults | CDO プロパティを設定します |
add_blueprint_node | グラフノードを追加します(23 種類以上) |
add_event_node | イベントを追加します(BeginPlay、Tick など) |
connect_blueprint_nodes | ノードを接続します |
delete_blueprint_node | ノードを削除します |
set_blueprint_node_property | ノードのプロパティを編集します |
マテリアル(35)
| コマンド | 説明 |
|---|---|
create_material | ブレンド/シェーディングモードを指定して作成します |
create_material_instance | パラメーターの上書きを指定して作成します |
build_material_graph | ノードグラフ全体をアトミックに構築します |
get_material_info | プロパティ/パラメーター/テクスチャを調べます |
set_material_properties | マテリアルのプロパティを一括設定します |
add/delete/move/duplicate_material_expression | ノードを管理します |
connect_material_expressions | ノードを接続します |
set_material_expression_property | ノードのプロパティを設定します |
disconnect_material_expression | 接続を解除します |
layout_material_expressions | 自動レイアウトします |
recompile_material | 強制的に再コンパイルします |
get_material_errors | コンパイルエラーを取得します |
get/set_material_instance_parameter | MI パラメーターの上書きを管理します |
list_material_expression_types | ノードの種類を確認します |
get_expression_type_info | ノードのピンとプロパティを取得します |
search_material_functions | マテリアル関数を検索します |
validate_material_graph | 問題を診断します |
trace_material_connection | データフローを追跡します |
cleanup_material_graph | 孤立したノードを削除します |
add_material_comments | コメントボックスを追加します |
create/get_material_function | マテリアル関数を管理します |
build_material_function_graph | MF グラフを構築します |
add/set_material_function_input/output | MF のピンを管理します |
validate/cleanup_material_function | MF を診断します |
apply_material_to_actor/blueprint | マテリアルを適用します |
get_available_materials | マテリアルを一覧表示します |
get_actor/blueprint_material_info | マテリアルスロットの情報を取得します |
データテーブル(8)
| コマンド | 説明 |
|---|---|
get_data_table_schema | 列名と型を取得します |
get_data_table_rows / get_data_table_row | 行を読み取ります |
add_data_table_row | 初期データを指定して行を追加します |
update_data_table_row | 部分更新します |
delete_data_table_row | 行を削除します |
duplicate_data_table_row | 行をコピーします |
rename_data_table_row | 行の名前を変更します |
データアセット(12)
| コマンド | 説明 |
|---|---|
create_data_asset | 任意のUDataAssetサブクラスを作成 |
get/set_data_asset_property(ies) | プロパティを読み取り/書き込み(単一または一括) |
list_data_assets | パス/クラスで参照 |
list_data_asset_classes | 読み込み済みのすべてのUDataAssetサブクラスを検出 |
get_property_valid_types | プロパティスロットで有効なドロップダウン値 |
search_class_paths | クラスパスを検索 |
get_mass_config_traits | Mass Entity Configアセットのすべてのトレイトを調査 |
add_mass_config_trait | Mass Configに新しいトレイトを追加(既存の内容は維持) |
set_mass_config_trait_property | 単一のトレイトプロパティをピンポイントでインプレース編集 — Traits配列は決して置き換えません |
remove_mass_config_trait | インデックスまたはクラスを指定して単一のトレイトを削除。ほかのトレイトには影響しません |
アクターとレベル(19)
| コマンド | 説明 |
|---|---|
spawn_actor | 組み込みのアクタータイプをスポーン |
spawn_blueprint_actor | BPアクターをスポーン |
spawn_actor_from_class | クラス名を指定してスポーン |
get_actors_in_level | すべてのアクターを一覧表示 |
find_actors_by_name | 名前のパターンで検索 |
get_actor_properties | アクターのプロパティを読み取り |
set_actor_transform | 位置/回転/スケールを設定 |
delete_actor | レベルから削除 |
get_selected_actors | ビューポートの選択内容 |
get_world_info | レベル情報 |
set_static_mesh_properties | メッシュの割り当て |
set_physics_properties | 物理設定 |
set_mesh_material_color | マテリアルの色 |
apply_material_to_actor/blueprint | マテリアルを適用 |
get_actor/blueprint_material_info | マテリアルスロット |
get_available_materials | マテリアルを一覧表示 |
take_screenshot | ビューポートをキャプチャ |
Enhanced Input(21)
| コマンド | 説明 |
|---|---|
create_input_action | UInputActionを作成 |
get/set_input_action_properties | アクションのプロパティ |
add/remove_input_action_trigger | アクショントリガー |
add/remove_input_action_modifier | アクションモディファイア |
list_input_actions | アクションを参照 |
create_input_mapping_context | UInputMappingContextを作成 |
get_input_mapping_context | マッピングを読み取り |
add/remove/set_key_mapping | キーバインド |
add/remove_mapping_trigger/modifier | マッピングごとのオーバーライド |
list_input_mapping_contexts | コンテキストを参照 |
list_trigger_types / list_modifier_types | タイプを検出 |
list_input_keys | 有効なキー名 |
ウィジェット — UMG(11)
| コマンド | 説明 |
|---|---|
get_widget_tree | ウィジェット階層 |
add_widget | 親に追加 |
remove/move/rename/duplicate_widget | ウィジェット操作 |
get/set_widget_properties | ウィジェットのプロパティ |
get/set_slot_properties | レイアウトスロットのプロパティ |
list_widget_types | 使用可能なウィジェットクラス |
Niagara VFX(96)
エンドツーエンドでNiagaraを作成できます。スタック全体の読み取り、トップレベルまたはネストされた任意のバインディングの変更、スクラッチパッドのダイナミック入力の一からの作成、データインターフェースのメンバー関数を含む任意のグラフノードのスポーン、さらにエディターのドロップダウンで公開されるすべての有効なオプションの検出が可能です。Niagaraのエクスポート済みViewModel/Stack Graph APIを基盤とし、エクスポートされていないヘルパーを安全に再現します。
システム
| コマンド | 説明 |
|---|---|
create_niagara_system | エミッターテンプレートまたは空の状態から作成 |
get_niagara_system_info | システムのメタデータ、エミッター、パラメーター |
list_niagara_systems | パスでNiagaraシステムを参照 |
delete_niagara_system | システムを削除 |
compile_niagara_system | 強制的に再コンパイル |
set_niagara_system_property | トップレベルのシステムプロパティを設定 |
get_niagara_system_errors | コンパイルエラー/警告 |
get_niagara_particle_stats | エミッターごとのパーティクル統計 |
get/set_niagara_playback_range | プレビュー再生範囲 |
エミッター
| コマンド | 説明 |
|---|---|
get_niagara_emitters | システム内のエミッターを一覧表示 |
add_niagara_emitter | テンプレートから追加 |
remove_niagara_emitter | エミッターを削除 |
duplicate_niagara_emitter | 新しい名前でエミッターを複製 |
reorder_niagara_emitter | エミッターのインデックスを変更 |
set_niagara_emitter_property | エミッターのプロパティを設定 |
get_niagara_emitter_attributes | パーティクル属性(位置、速度など)を取得 |
モジュール(Spawn/Update/Render スタック)
| コマンド | 説明 |
|---|---|
get_niagara_modules | 任意のスタック内のモジュールを一覧表示 |
add_niagara_module | スクリプトアセットからモジュールを追加 |
remove_niagara_module | モジュールを削除 |
set_niagara_module_enabled | モジュールを有効/無効にする |
reorder_niagara_module | スタック内で並べ替え |
get_niagara_module_inputs | 現在の値を含むモジュール入力を確認 |
set_niagara_module_input | リテラル値を設定(Module.* 入力を rapid-iteration に自動ルーティング。"Spawn Count.int32001" のようなネストされたドットパスに対応) |
set_niagara_dynamic_input | 入力を動的入力関数に置き換え(ネストされたパスに対応) |
set_niagara_curve | カーブ入力のカーブポイントを設定 |
get_niagara_module_versions | スクリプトのバージョンを一覧表示 |
スタック入力バインディングのループ
| コマンド | 説明 |
|---|---|
get_niagara_module_input_binding | 1 回の呼び出しですべての入力について、解決モード(Default/Local/Linked/Dynamic/Data/Expression)+ターゲット+再帰的な子要素を取得 |
clear_niagara_module_input | 入力(またはネストされたパス)をデフォルトにリセット — スタック UI の「Reset to Default」と同等 |
list_niagara_input_source_menu | エディターのソースドロップダウンを再現 — エンジンの動的入力アセット+スクラッチパッドの DI+名前空間ごとにグループ化されたリンクパラメーター |
パラメーターとバインディング
| コマンド | 説明 |
|---|---|
get_niagara_user_parameters | User 名前空間のパラメーターを一覧表示 |
add_niagara_user_parameter | User パラメーターを追加 |
set_niagara_user_parameter | User パラメーターの値を設定 |
remove_niagara_user_parameter | User パラメーターを削除 |
link_niagara_parameter | モジュール入力をパラメーターにバインド(ネストされたドットパスに対応) |
get_niagara_rapid_iteration_parameters | RI パラメーターを調査 |
set_niagara_rapid_iteration_parameter | RI パラメーターの値を設定 |
list_niagara_available_parameters | 既知のパラメーター+ユーザーパラメーター+スクラッチパッドスコープのパラメーターを列挙 |
レンダラー
| コマンド | 説明 |
|---|---|
add_niagara_renderer | Sprite/Mesh/Ribbon/Light レンダラーを追加 |
remove_niagara_renderer | レンダラーを削除 |
get_niagara_renderer_info | バインディングごとの詳細(binding_name + bound_variable + type + dataset_variable)を含むレンダラーの概要 |
get_niagara_renderer_properties | レンダラーのプロパティをすべてダンプ |
set_niagara_renderer_property | レンダラーのプロパティを設定 |
set_niagara_renderer_binding | レンダラー属性をパーティクルデータにバインド |
スクラッチパッド — CRUD と適用
| コマンド | 説明 |
|---|---|
create_niagara_scratch_pad_module | エミッターごとのスクラッチモジュールを作成(module/dynamic_input/function) |
list_niagara_scratch_pad_modules | システム上のスクラッチパッドを一覧表示 |
duplicate_niagara_scratch_pad_module | 新しい名前で複製 |
rename_niagara_scratch_pad_module | その場で名前を変更 |
delete_niagara_scratch_pad_module | システムから削除 |
apply_niagara_scratch_pad | 編集コピーをアセットに反映(Apply ボタン) |
apply_and_save_niagara_scratch_pad | 適用してアセットを保存(Apply & Save ボタン) |
create_niagara_module_asset | 再利用可能なスタンドアロン Niagara Module Script アセットを作成 |
スクリプトのプロパティ(詳細パネル)
| コマンド | 説明 |
|---|---|
get_niagara_script_properties | Category、Description、Keywords、ModuleUsageBitmask、ProvidedDependencies、RequiredDependencies、LibraryVisibility、bDeprecated、bExperimental、NumericOutputTypeSelectionMode、ScriptMetaData、ConversionUtility を読み取ります |
set_niagara_script_properties | 任意の項目をまとめて設定します(ProvidedDependencies などの TArray<FName> と TArray<FNiagaraModuleDependency> に対応) |
スクリプトパラメーター(入力/出力)
| コマンド | 説明 |
|---|---|
list_niagara_script_parameters | スクラッチパッド/スタンドアロンスクリプトの入力と出力を一覧表示します |
add_niagara_script_parameter | 登録済みの任意の型(データインターフェースを含む)の入力または出力パラメーターを追加します |
remove_niagara_script_parameter | 削除します — Map Get/Map Set のピンも自動的に連動してクリーンアップされます |
rename_niagara_script_parameter | アセットと編集コピーのグラフ全体で名前を変更します |
グラフのイントロスペクション
| コマンド | 説明 |
|---|---|
get_niagara_graph_nodes | verbosity(summary/connections/full)、type_filter、name_filter を指定してすべてのノードを一覧表示します。スクラッチパッド、エミッタースタックグラフ、スタンドアロンスクリプトの 3 つの解決モードがあります |
get_niagara_node_info | node_index/node_class/node_id で単一ノードを詳細に調査します。ピンのレイアウト、リンク、型固有のフィールド(op_name、function_script、hlsl_preview、input_name/型)を取得します |
trace_niagara_connection | pin_name フィルターを使用して上流/下流を BFS でたどります。グラフ全体を出力せずに依存関係の連鎖を確認できます |
validate_niagara_graph | 孤立ノード/行き止まりノード/入力不足ノードを分類します(+Add プレースホルダーはスキップします) |
グラフノードの CRUD
| コマンド | 説明 |
|---|---|
add_niagara_graph_node | Op/FunctionCall/DataInterfaceFunction/ParameterMapGet/ParameterMapSet/Reroute/Input ノードを生成します。DI メンバー関数(例:Array.Length)には UNiagaraDataInterface::GetFunctionSignatures を使用します。右クリックの「Functions」サブメニューと同じ経路です |
delete_niagara_graph_node | インデックスまたは GUID で削除し、アセットと編集コピーの両方に反映します |
ピンの管理
| コマンド | 説明 |
|---|---|
add_niagara_map_get_pin | Map Get に型付き出力ピンを追加します(例:Vector 型の Module.MyParam) |
add_niagara_map_set_pin | Map Set に型付き入力ピンを追加します(例:Particles.Velocity) |
add_niagara_node_pin | UNiagaraNodeWithDynamicPins 派生ノードにピンを追加します |
rename_niagara_node_pin | 動的ピンノードのピン名を変更します |
remove_niagara_node_pin | 動的ピンを削除します |
connect_niagara_pins | UEdGraphSchema_Niagara::TryCreateConnection の検証を使用して 2 つのピンを接続します |
disconnect_niagara_pins | ピンの接続を解除します |
カスタム HLSL
| コマンド | 説明 |
|---|---|
set_niagara_scratch_pad_hlsl | HLSL ソースをスクラッチパッドの Custom HLSL ノードに書き込みます(必要に応じてピンを作成します) |
add_niagara_custom_hlsl_input | Custom HLSL ノードに入力ピンを追加します |
add_niagara_custom_hlsl_output | Custom HLSL ノードに出力ピンを追加します |
rename_niagara_custom_hlsl_pin | ピン名を変更します(HLSL 本文内の {PinName} 参照も書き換えます) |
remove_niagara_custom_hlsl_pin | ピンを削除します |
イベントとシミュレーションステージ
| コマンド | 説明 |
|---|---|
add_niagara_event_handler | イベントハンドラーステージを追加します |
add_niagara_simulation_stage | シミュレーションステージを追加します |
get_niagara_event_handlers | エミッターのハンドラーを調べます |
レベルへのスポーン
| コマンド | 説明 |
|---|---|
spawn_niagara_effect | ワールド座標にスポーンします |
control_niagara_effect | 有効化/無効化/再起動します |
add_niagara_component | Blueprint に NiagaraComponent を追加します |
get_niagara_actors | スポーン済みの Niagara アクターを検索します |
検索(推測不要の作成)
| コマンド | 説明 |
|---|---|
list_niagara_modules | 利用可能なすべての Niagara モジュールスクリプト |
list_niagara_emitter_templates | エミッターテンプレート |
list_niagara_data_interfaces | 利用可能なデータインターフェース(DI_*) |
list_niagara_data_interface_functions | DI クラスのメンバー関数(Array.Length、Array.Get など)— 結果を add_niagara_graph_node(node_type="DataInterfaceFunction") に渡します |
list_niagara_parameter_types | パラメーター型のレジストリ |
list_niagara_node_types | ピンスキーマを持つ生成可能なノードクラス |
get_niagara_node_type_info | ノードクラスまたはスクリプトアセットのピンスキーマ |
search_niagara_functions | 使用状況と名前で Niagara スクリプトアセットを検索 |
get_niagara_schema_actions | グラフの右クリックメニュー全体 — エディターが使用するものと同じソースです。add_niagara_graph_node で直接使える op_name / function_script / input_name を返します |
describe_niagara_type | 型の照会 — FNiagaraTypeRegistry の型に加え、スクリプトプロパティの列挙型やカスタム型向けの UEnum / UScriptStruct リフレクションフォールバック |
get_niagara_data_interface_schema | DI クラスの編集可能なプロパティスキーマをたどります |
find_niagara_scratch_pad_usage | 逆引き — このスクラッチパッドはどこから参照されていますか? |
resolve_niagara_built_in_dynamic_input | エンジン同梱の DI スクリプトを AssetRegistry で検索します(ハードコードされたパスは不要です) |
StateTree(33、新規)
StateTree アセットの読み取りと作成に対応します — ステート、タスク、評価器、トランジション、条件、パラメーター、バインディングを扱います。スキーマを認識し、StateTreeSchemaBase と Mass スキーマの両方で動作します。
読み取り
| コマンド | 説明 |
|---|---|
get_statetree_info | アセットの概要(スキーマ、ステート、評価器) |
get_statetree_full_info | 再帰的な完全ダンプ(ステート + タスク + トランジション + バインディング) |
get_statetree_states | すべてのステートを一覧表示(フラット形式) |
get_statetree_state | ID または名前で指定した単一ステートの詳細 |
get_statetree_node | 任意のノード(タスク/評価器/条件)を調査 |
get_statetree_evaluators | グローバル評価器 |
get_statetree_global_tasks | グローバルタスク |
get_statetree_parameters | ツリーパラメーター |
get_statetree_bindings | すべてのプロパティバインディング |
get_statetree_transition_targets | ステートで有効なトランジション先 |
search_statetree_nodes | 名前/型でノードを検索 |
作成
| コマンド | 説明 |
|---|---|
create_statetree | 新しい StateTree アセットを作成 |
set_statetree_schema | スキーマを設定(例:Mass スキーマ) |
add_statetree_state | ステートを追加(親またはルート) |
add_statetree_task | ステートにタスクを追加 |
add_statetree_evaluator | グローバル評価器を追加 |
add_statetree_global_task | グローバルタスクを追加 |
add_statetree_condition | 開始条件/トランジション条件を追加 |
add_statetree_transition | トランジションを追加(イベント/完了/デリゲート) |
add_statetree_parameter | ツリーパラメーターを追加 |
add_statetree_binding | ノード間でプロパティをバインド |
compile_statetree | 編集後にコンパイル |
変更
| コマンド | 説明 |
|---|---|
set_statetree_state_property | ステートプロパティを編集 |
set_statetree_node_property | タスク/評価器/条件のプロパティを編集 |
set_statetree_transition_property | トランジションプロパティを編集 |
set_statetree_color | ステートの色を設定 |
削除
| コマンド | 説明 |
|---|---|
remove_statetree_state | ステートを削除 |
remove_statetree_node | タスク/評価器/条件を削除 |
remove_statetree_transition | トランジションを削除 |
remove_statetree_binding | バインディングを削除 |
remove_statetree_parameter | パラメーターを削除 |
検索
| コマンド | 説明 |
|---|---|
list_statetree_node_types | 利用可能なすべてのタスク/評価器/条件の型 |
list_statetree_enum_values | プロパティのドロップダウンに表示する列挙値 |
パフォーマンスのプロファイリング(3)
| コマンド | 説明 |
|---|---|
performance_start_trace | .utrace の記録を開始します |
performance_stop_trace | 停止して自動的に読み込みます |
performance_analyze_insight | スマート分析(診断、スパイク、フレーム、ホットパス、検索、ヒストグラムなど) |
デバッグ(2)
| コマンド | 説明 |
|---|---|
set_mcp_debug | トークン追跡を有効にします |
get_mcp_token_stats | トークン使用状況の統計情報を取得します |
使用例
これらは CLI と MCP サーバーの両方で動作します。CLI では、AI が Bash 経由で ue-cli を呼び出します。MCP では、AI がツールを直接呼び出します。
マテリアルの作成
Create a red metallic material at /Game/Materials/M_RedMetal
with roughness 0.3 and metallic 1.0
AI は create_material を呼び出し、続いて build_material_graph を呼び出して、定数ノードを Base Color、Metallic、Roughness ピンに接続します。
アクターのスポーン
Spawn 5 point lights in a circle around the origin at height 300
AI は、計算した位置を指定して actor_type: "PointLight" の spawn_actor を 5 回呼び出します。
ブループリントの作成
Create a Blueprint actor called BP_HealthPickup based on Actor,
add a Sphere Collision component and a Static Mesh component,
set it up so on BeginOverlap it prints "Health Picked Up"
AI は create_blueprint、add_component_to_blueprint、add_event_node、add_blueprint_node、connect_blueprint_nodes を使用します。
パフォーマンスのプロファイリング
Start a performance trace, play for 10 seconds, stop it,
then diagnose the bottlenecks
AI は performance_start_trace を呼び出し、待機してから performance_stop_trace を呼び出し、その後 query: "diagnose" を指定して performance_analyze_insight を呼び出します。
データテーブルの管理
Show me the schema of DT_Items, then add a new row called
"IronIngot" with StackSize 100
AI は get_data_table_schema を呼び出し、続いて適切なデータを指定して add_data_table_row を呼び出します。
設定
カスタムポート
Config/DefaultEngine.ini に追加します:
[UnrealMCP]
Port=55557
環境変数
# Force a specific port (overrides port file)
set UNREAL_MCP_PORT=55560
複数のエディターインスタンス
各エディターは固有のポートを自動的に選択します。CLI と MCP サーバーは Saved/UnrealMCP/port.txt からポートを読み込みます。特定のインスタンスを指定するには、--port フラグまたは UNREAL_MCP_PORT 環境変数を使用します。
アーキテクチャ
プラグイン構成
Plugins/UnrealMCP/
├── UnrealMCP.uplugin # Plugin manifest
├── cli/ # Go CLI source (ue-cli)
│ ├── cmd/ # Command definitions (288 commands)
│ ├── internal/bridge/ # TCP client
│ ├── internal/project/ # Plugin embedding & project detection
│ └── npm/ # npm package wrapper
├── unrealmcp/ # Python MCP server
│ ├── _tcp_bridge.py # TCP communication
│ └── tools/ # Tool modules (one per category)
├── Source/UnrealMCPBridge/ # C++ editor plugin
│ ├── Public/ # Headers
│ └── Private/ # Implementation + command handlers
└── .github/workflows/release.yml # CI: builds + GitHub Release + npm publish
通信プロトコル
長さプレフィックス方式のフレーミングを使用する TCP:
[4 bytes: big-endian payload length] [N bytes: UTF-8 JSON]
リクエスト:{"type": "command_name", "params": {...}}
レスポンス:{"status": "success", "result": {...}}
カスタムコマンドの追加
CLI 側(Go)
適切な cmd/*.go ファイルに CommandSpec を追加します:
{
Name: "my_command",
Group: "mygroup",
Short: "What it does",
Long: "Detailed description.",
Example: "ue-cli my_command --param value",
Params: []ParamSpec{
{Name: "param", Type: "string", Required: true, Help: "Description"},
},
},
MCP 側(Python)
unrealmcp/tools/ に新しいファイルを作成します:
# unrealmcp/tools/my_tools.py
from unrealmcp._bridge import mcp
from unrealmcp._tcp_bridge import _call
@mcp.tool()
def my_command(param: str) -> str:
"""Description shown to the AI assistant."""
return _call("my_command", {"param": param})
unrealmcp/tools/__init__.py に登録します:
from unrealmcp.tools import my_tools # noqa: F401
C++ 側
Source/UnrealMCPBridge/Private/Commands/ にコマンドハンドラーを追加し、ExecuteCommand() に登録します。
対応する AI ツール
| ツール | インターフェース | 設定ファイル | 状態 |
|---|---|---|---|
| Claude Code | CLI または MCP | Bash(CLI) / .mcp.json(MCP) | テスト済み |
| Cursor | MCP | .cursor/mcp.json | テスト済み |
| VS Code / Copilot | MCP | .vscode/mcp.json | 対応 |
| Windsurf | MCP | ~/.codeium/windsurf/mcp_config.json | 対応 |
| Gemini CLI | MCP | .gemini/settings.json | 対応 |
| JetBrains / Rider | MCP | .junie/mcp/mcp.json | 対応 |
| Zed | MCP | ~/.config/zed/settings.json | 対応 |
| Amazon Q | MCP | .amazonq/mcp.json | 対応 |
トラブルシューティング
| 問題 | 解決方法 |
|---|---|
| "Connection refused" | UE5 エディターは起動していますか?出力ログで MCP Bridge initialized on port XXXXX を確認してください |
ue-cli doctor でポートファイルが見つからないと表示される | エディターがまだ起動していないか、Saved/UnrealMCP/port.txt を確認してください |
| コマンドがタイムアウトする | 大規模な操作(プロファイリング、複雑なグラフ)のタイムアウトは 300 秒です。増やすには --timeout 600 を使用してください |
| 複数のエディター | 特定のインスタンスを指定するには、--port <num> または UNREAL_MCP_PORT 環境変数を使用してください |
| プラグインをコンパイルできない | PythonScriptPlugin、EditorScriptingUtilities、EnhancedInput が有効になっていることを確認してください |
| Python のインポートエラー | pip install fastmcp requests を実行してください。PATH 上の Python が使用する AI ツールの Python と一致していることを確認してください |
| プラグインが読み込まれない | UnrealMCP.uplugin に "Type": "Editor" が設定されていて、必要なプラグインがエンジンのビルドで利用可能であることを確認してください |
リリースと配布
| チャンネル | コマンド |
|---|---|
| npm | npm install -g unrealcli |
| GitHub Releases | バイナリをダウンロード |
| pip(MCP のみ) | pip install unrealmcp |
リリースは GitHub Actions によって自動化されています。タグをプッシュすると、次の処理が実行されます:
git tag v1.2.2 && git push origin v1.2.2
# → Builds 5 platform binaries
# → Creates GitHub Release
# → Publishes to npm + PyPI
コントリビューション
ガイドラインについては、CONTRIBUTING.mdをご覧ください。
エンタープライズおよびスタジオとの連携
Unreal MCP をスタジオの制作パイプラインに統合したいですか?このツールを基盤に、AI を活用したカスタムワークフローを構築するため、ゲームスタジオと直接連携しています。
提供内容:
- パイプライン統合 — Unreal MCP を既存のビルドシステム、CI/CD、チームのワークフローに導入し、すべてのアーティストと開発者が、Unreal プロジェクトですぐに AI アシスタントを利用できるようにします
- カスタムツールの開発 — オープンソース版では対応していない、スタジオ独自の形式や内部ツール、具体的な制作ニーズに合わせた MCP コマンドを構築します
- AI ワークフローの設計 — マテリアル作成からレベルデザイン、アセットパイプラインまで、Unreal Engine でチームが AI アシスタント(Claude、Cursor、Copilot)を活用する方法を設計・実装します
- 高度なマテリアルおよび Substrate システム — プロシージャルなマテリアル生成、Substrate ワークフロー、複雑なシェーダーパイプラインを MCP で完全に自動化します
お問い合わせ:
- メール:[email protected]
- LinkedIn:linkedin.com/in/aadeshyadav
- Discord:
destroyerpal - ポートフォリオ:aadeshyadav.vercel.app
カスタム開発とサポート
Unreal プロジェクトについてサポートが必要ですか?ゲームプレイやマルチプレイヤーから、エディターツールや Mass Entity システムまで、UE5 C++ スタック全般の契約業務に対応しています。詳細はSUPPORT.mdをご覧ください。
[email protected] · LinkedIn · ポートフォリオ · Discord:destroyerpal
ライセンス
MPL-2.0 — 詳細はLICENSEをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。