基于 yangskin/UEBlueprintMCP 修改扩展。
** yangskin/UEBlueprintMCP 基于 lilklon/UEBlueprintMCP(https://github.com/lilklon/UEBlueprintMCP) 修改。**
原项目采用 MIT 协议,本插件在其基础上进行了大量重构与功能增强,同样遵循 MIT 协议发布。
一个面向 AI 辅助开发的 MCP 插件,用于 Unreal Engine 5.7+ 编辑器自动化。
对外暴露 7 个固定 MCP 工具,由后端 动作注册表(Action Registry) 驱动,支持 259 个动作,提供持久 TCP 连接、多客户端支持与自动保存。
同时包含一个可选的独立日志 MCP 服务器(ue-editor-mcp-logs),暴露 unreal.logs.get、unreal.asset_thumbnail.get、unreal.asset_diff.get 和 unreal.asset_history.get 四个工具。
仅限编辑器 — C++ 模块类型为
Editor,在所有游戏打包构建(Shipping、Development Game 等)中完全排除,不会对运行时性能或打包产物产生任何影响。
- 7 个固定 MCP 工具 — 单一
ue-editor-mcp服务器,工具接口永远不变 - 259 个动作 — 蓝图、图节点、材质、UMG 控件、MVVM、增强输入、组件事件绑定、PIE 启停/状态查询、日志断言、Outliner 管理、资产缩略图提取、Level Viewport 截图、静态网格体尺寸查询与摆放、编辑器 Python 执行、Niagara、批量资产重命名及重定向修复、与版本控制仓库的历史/差异对比 — 均可通过动作注册表动态发现
- Niagara MCP 自动化 — 99 个
niagara.*动作覆盖 System、Emitter、Module、Parameter、Renderer、Runtime、Scratch Pad 与 Niagara Graph 编辑 - 编辑器 Python 执行 —
editor.execute_python可在当前 Unreal Editor 会话中运行 Python,并通过result返回结构化结果 - 资产与蓝图清理 — 支持删除关卡 Actor、Content Browser 资产、图节点、变量、函数、UMG Widget 蓝图、Niagara System、材质表达式等
- 搜索 → 模式 → 执行 — AI 动态发现动作,无需记忆命令名
- 批量执行 —
ue_batch通过 C++batch_execute在单次 TCP 往返中执行最多 50 个动作 - 多客户端 TCP — 端口 55558,最多支持 8 路并发连接(每连接独立线程)
- 持久连接 — Socket 在命令间保持开启,支持心跳检测与自动重连
- 自动保存 — 每次成功操作后自动保存脏包
- 崩溃保护 — 动作执行管道启用了 SEH + C++ 异常防护
- 字符串解析 — 接受蓝图名称、资产路径或引擎类名
- 嵌入式文档 —
ue_resources_read将约定规范、错误码和补丁规范暴露给 AI
VS Code / MCP 客户端(GitHub Copilot 等)
│
│ 7 个 MCP 工具(stdio)
▼
server_unified.py(动作注册表 + 分发器)
│
│ TCP/JSON(端口 55558,持久连接,长度前缀帧)
▼
C++ 插件(FMCPServer → 每连接一个 FMCPClientHandler)
│
│ 游戏线程分发
▼
FEditorAction 子类(177 个处理器)→ 校验 → 执行 → 自动保存
│
▼
Unreal Editor
单一 Python 服务器进程与 C++ 服务器建立持久 TCP 连接。C++ 侧为每个连接派生独立的 FMCPClientHandler 线程,所有编辑器变更均被序列化到游戏线程以保证线程安全。
对于日志上下文场景,第二个轻量服务器(server_unreal_logs.py)可并行运行,提供:
unreal.logs.get(即使 UE 未运行也可通过Saved/Logs离线读取)unreal.asset_thumbnail.get(需要 UE 编辑器连接,以 PNG base64 格式返回资产缩略图)unreal.asset_diff.get(需要 UE 编辑器 + 源码控制连接,返回资产与仓库版本的结构化差异)unreal.asset_history.get(需要 UE 编辑器 + 源码控制连接,用于列出资产提交历史并辅助选择 diff revision)
| # | 工具 | 用途 |
|---|---|---|
| 1 | ue_ping |
测试与 Unreal Engine 的连接,存活时返回 {pong: true} |
| 2 | ue_actions_search |
按关键字或标签搜索动作,返回排序后的动作 ID 列表及描述 |
| 3 | ue_actions_schema |
获取指定动作的完整输入模式、示例和元数据 |
| 4 | ue_actions_run |
执行单个带参数的动作 |
| 5 | ue_batch |
通过 C++ batch_execute 在单次 TCP 往返中执行多个动作,最多 50 个 |
| 6 | ue_resources_read |
读取嵌入式文档:conventions.md、error_codes.md、patch_spec.md |
| 7 | ue_logs_tail |
追踪近期日志(Python 命令日志 / 编辑器环形缓冲区 / 两者),支持分类和详细级别过滤 |
# 当动作 ID 及参数已知时,直接跳过搜索/模式步骤:
ue_batch(actions=[
{action_id: "blueprint.create", params: {name: "BP_Player", parent_class: "Character"}},
{action_id: "variable.create", params: {blueprint_name: "BP_Player", variable_name: "Speed", variable_type: "Float"}},
{action_id: "blueprint.compile", params: {blueprint_name: "BP_Player"}}
])
→ 所有动作在 1 次 TCP 往返中完成
第 1 步:ue_actions_search(query="create blueprint")
→ [{id: "blueprint.create", desc: "..."}, ...]
第 2 步:ue_actions_schema(action_id="blueprint.create")
→ {input_schema: {required: ["name","parent_class"], ...}, examples: [...]}
第 3 步:ue_actions_run(action_id="blueprint.create", params={name: "BP_Player", parent_class: "Character"})
→ {success: true, blueprint_name: "BP_Player", path: "/Game/Blueprints/BP_Player"}
| 域 | 数量 | 说明 | 示例 ID |
|---|---|---|---|
blueprint.* |
11 | 蓝图创建、编译、属性、父类、接口、组件、快照 | blueprint.create、blueprint.compile、blueprint.add_component、blueprint.describe_full |
batch.* |
1 | 批量命令执行 | batch.execute |
component.* |
4 | 组件属性、网格体、物理、事件绑定 | component.set_property、component.set_static_mesh、component.bind_event |
editor.* |
36 | 关卡 Actor、资产、视口、日志、PIE、Outliner、生命周期、Python 执行、源码控制历史/差异 | editor.execute_python、editor.delete_asset、editor.get_static_mesh_infos、editor.spawn_static_mesh_actor、editor.capture_viewport、editor.list_assets、editor.get_logs、editor.is_ready、editor.request_shutdown |
layout.* |
4 | 节点自动布局和注释 | layout.auto_selected、layout.auto_subtree、layout.auto_blueprint、layout.layout_and_comment |
node.* |
24 | 蓝图图节点创建、通用节点搜索、异步节点、自演进建议 | node.add_event、node.add_function_call、node.add_branch、node.add_generic、node.search_catalog |
variable.* |
8 | 变量增删改查、默认值、元数据 | variable.create、variable.add_getter、variable.set_default |
function.* |
4 | 函数创建、管理与重构 | function.create、function.call、function.delete、function.rename |
dispatcher.* |
4 | 事件派发器管理 | dispatcher.create、dispatcher.call、dispatcher.bind |
graph.* |
20 | 图连线、检视、注释、补丁、折叠重构、节点导入导出 | graph.connect_nodes、graph.describe、graph.export_nodes、graph.import_nodes、graph.collapse_selection_to_function、graph.auto_comment、graph.apply_patch |
macro.* |
1 | 宏管理 | macro.rename |
material.* |
17 | 材质创建、编辑、编译诊断、图检视与布局、关卡应用、编辑器刷新、选中节点读取 | material.create、material.add_expression、material.compile、material.get_summary、material.auto_layout、material.auto_comment、material.remove_expression、material.apply_to_component、material.apply_to_actor、material.refresh_editor |
widget.* |
22 | UMG 控件蓝图(24 种类型)、控件删除/重命名、MVVM | widget.create、widget.delete、widget.add_component、widget.delete_component、widget.mvvm_add_viewmodel、widget.mvvm_remove_viewmodel |
input.* |
4 | 增强输入系统 | input.create_action、input.create_mapping_context |
niagara.* |
99 | Niagara System、Emitter、Module、Parameter、Renderer、Runtime、Scratch Pad、Graph | niagara.create_system、niagara.add_emitter、niagara.set_module_input、niagara.add_renderer、niagara.spawn_effect、niagara.create_scratch_pad_module、niagara.connect_pins |
editor.execute_python 可在当前 Unreal Editor 进程中执行 Python 代码,适合调用 Unreal Python API、触发项目内生成流程或查询编辑器状态。执行环境会预导入 unreal 模块;若脚本中给变量 result 赋值,该值会作为结构化结果返回。
{
"action_id": "editor.execute_python",
"params": {
"code": "assets = unreal.EditorUtilityLibrary.get_selected_assets()\nresult = [asset.get_path_name() for asset in assets]"
}
}也可用于触发编辑器命令,例如:
{
"action_id": "editor.execute_python",
"params": {
"code": "unreal.SystemLibrary.execute_console_command(None, 'Puerts.Gen FULL')\nresult = 'Puerts.Gen FULL dispatched'"
}
}
editor.execute_python属于高权限动作,可修改资源、执行控制台命令或关闭编辑器。调用前应明确目标,并优先使用专门动作完成常见编辑器操作。
注册表中可直接发现的删除/清理动作包括:
-
editor.delete_actor:删除当前关卡中的 Actor -
graph.delete_node:删除蓝图图节点 -
variable.delete/function.delete:删除蓝图成员变量或自定义函数图 -
widget.delete/widget.delete_component:删除 UMG Widget 蓝图资产或 Widget Tree 中的控件 -
material.remove_expression:删除材质表达式节点并断开相关连接 -
niagara.delete_system/niagara.remove_emitter/niagara.remove_module/niagara.remove_renderer/niagara.delete_scratch_pad_module/niagara.delete_graph_node:删除 Niagara 资源或内部元素 -
editor.delete_asset:删除 Content Browser 资产;执行前会关闭已打开的资源编辑器,参数为asset_path
Niagara 能力由 99 个 niagara.* 动作组成,覆盖常见特效资产生产闭环:
- System:创建、列出、删除、编译、读取错误、设置系统属性、播放范围
- Emitter:添加、移除、复制、重命名、排序、属性设置、模板列表
- Module:查询 Stack、添加/删除/排序模块、启停模块、读取/设置输入、动态输入、曲线、快速迭代参数
- Parameter:用户参数增删改查、类型列表、参数链接、Data Interface schema
- Renderer:添加/删除 Renderer、读取/设置 Renderer 属性与绑定
- Runtime:在关卡中生成 Niagara Actor、控制播放、给 Actor 添加 NiagaraComponent、读取运行实例统计
- Scratch Pad / Graph:创建 Scratch Pad、Apply/Apply & Save、Custom HLSL、脚本参数、图节点增删、Pin 管理、连线/断线、类型与函数搜索
完整参数与返回字段见 docs/Niagara.md。
blueprint.compile返回状态及汇总计数(status、error_count、warning_count),但对某些 UMG/MVVM 编译失败可能不包含完整编译器文本。- 如需详细诊断,请调用
editor.get_logs(或带source="editor"的ue_logs_tail),并按category="LogBlueprint"+min_verbosity="Error"过滤。 - 推荐排查流程:
blueprint.compileeditor.get_logs(count=200, category="LogBlueprint", min_verbosity="Error")- 如需进一步扩展,可将过滤类别改为
category="LogOutputDevice"获取 Ensure/Fatal 上下文
material.compile现已同步等待材质着色器编译完成,并返回真实编译诊断。- 响应中包含
error_count、warning_count以及errors[]列表。 errors[]的每一项包含:message、expression_name、expression_class、node_name(如可解析)。- 推荐排查流程:
material.compile- 若有需要,再结合
ue_logs_tail(source="editor", category="LogMaterial", min_verbosity="Error")查看上下文日志
插件在蓝图编辑器菜单(编辑 → Auto Layout)中直接注册了自动布局命令,并提供默认快捷键:
Auto Layout:Ctrl+Alt+L
行为:
- 若有节点被选中,对当前选中节点执行布局
- 若无选中,对整个焦点图执行布局
这些是编辑器命令,可在 Unreal Editor 快捷键设置中重映射。
插件在材质编辑器菜单(Edit)中注册了 Auto Layout 菜单项。
行为:
- 对当前焦点材质的
UMaterialGraph执行自动布局 - 与
material.auto_layout动作配套,便于在编辑器内直接整理材质图
插件已位于 Plugins/UEEditorMCP/,编译编辑器目标:
& "E:\CPP_UnrealEngine\UE_5.7\UnrealEngine\Engine\Build\BatchFiles\Build.bat" LingqiResetEditor Win64 Development -Project="E:\My Project\LingqiReset\LingqiReset.uproject" -WaitMutex无需安装外部 Python。 配置脚本会自动找到 Unreal Engine 内置的 Python 3.11,创建虚拟环境并安装 MCP 包。
PowerShell(推荐):
cd Plugins/UEEditorMCP
.\setup_mcp.ps1
# 或显式指定引擎路径:
.\setup_mcp.ps1 -EngineRoot "${workspaceFolder:UE5}"命令提示符:
cd Plugins\UEEditorMCP
setup_mcp.bat脚本将会:
- 自动检测 UE 引擎内置 Python(
Engine/Binaries/ThirdParty/Python3/Win64/python.exe) - 在
Python/.venv创建虚拟环境 - 安装
mcp包 - 在项目根目录生成
.vscode/mcp.json,并填入正确路径
手动配置(可选)
如需手动配置或使用自定义 Python:
cd Plugins/UEEditorMCP/Python
python -m venv .venv
.venv\Scripts\activate # Windows
pip install -r requirements.txt然后在项目根目录创建 .vscode/mcp.json:
ue-editor-mcp-logs 暴露四个工具:
unreal.logs.get
mode:auto|live|saved(默认auto)tailLines:默认200(范围20..2000)maxBytes:默认65536(范围8192..1048576)cursor:增量游标(live:<seq>或file:<hash>:<offset>:<mtime_ns>:<size>)workspaceRoot:UE 不可达时的离线读取必填项
推荐用法:
- 首次调用:
mode=auto, tailLines=200, maxBytes=65536 - 保存返回的
cursor - 后续调用传入
cursor,仅获取增量日志,避免 token 爆炸
行为说明:
mode=auto:若日志在 2 秒内更新则优先读取实时环形缓冲区,否则回退到Saved/Logsmode=live:仅读取内存中的实时环形缓冲区,无文件 IOmode=saved:使用反向块读取方式追踪最新Saved/Logs文件- UE 不可达时:若提供
workspaceRoot则从磁盘返回offline_saved
unreal.asset_thumbnail.get
assetPath:可选,单个资产完整路径assetPaths:可选,多个完整路径assetIds/ids:可选,路径数组别名(批量)size:可选,缩略图尺寸(默认256,上限1..256)- 返回
thumbnails[](每个输入对应一项),并保留首项兼容字段image_base64 - 需要 UE 编辑器连接
unreal.asset_diff.get
assetPath(必填):完整资产路径(如/Game/Blueprints/BP_Foo)revision(可选):指定版本号(默认最新版本)- 返回结构化差异数据:
hasDifferences、summary(新增/删除/修改/次要变更计数)、diffs[](类型、分类、显示字符串、所属图、节点/引脚名称) - 对于蓝图:逐图节点级别变更(NODE_ADDED、NODE_REMOVED、PIN_DEFAULT_VALUE、NODE_MOVED 等)
- 对于通用资产:属性级别差异(PropertyValueChanged、PropertyAddedToA/B)
- 包含
revisionInfo(版本号、日期、用户名、描述) - 需要 UE 编辑器运行且源码控制(SVN/Perforce/Git)已连接
unreal.asset_history.get
assetPath(必填):完整资产路径(如/Game/Blueprints/BP_Foo)maxCount(可选):最多返回多少条实际修改过该资源的版本记录- 返回源码控制历史记录,通常用于先查 revision,再把指定版本传给
unreal.asset_diff.get - 需要 UE 编辑器运行且源码控制(SVN/Perforce/Git)已连接
- 在编辑器中打开 Unreal 项目(插件自动在端口 55558 启动 TCP 服务器)
- 打开 VS Code —
ue-editor-mcp服务器通过 stdio 启动并连接到端口 55558 - 使用 GitHub Copilot Chat 或任意兼容 MCP 的客户端发出命令
若要为插件扩展新能力:
// Source/Public/Actions/MyActions.h
class FMyNewAction : public FBlueprintNodeAction
{
public:
FMyNewAction() : FBlueprintNodeAction(TEXT("my_new_action")) {}
FString Validate(const TSharedPtr<FJsonObject>& Params) override;
TSharedPtr<FJsonObject> ExecuteInternal(const TSharedPtr<FJsonObject>& Params) override;
};在 MCPBridge.cpp 中注册:
ActionHandlers.Add(TEXT("my_new_action"), MakeShared<FMyNewAction>());在 registry/actions.py 中添加动作定义:
ActionDef(
id="domain.my_new_action",
command="my_new_action",
description="这个动作的用途说明",
tags=["domain", "keyword1", "keyword2"],
input_schema={
"type": "object",
"properties": {
"param1": {"type": "string", "description": "..."},
},
"required": ["param1"],
},
examples=[{"param1": "value"}],
)& "E:\CPP_UnrealEngine\UE_5.7\UnrealEngine\Engine\Build\BatchFiles\Build.bat" LingqiResetEditor Win64 Development -Project="E:\My Project\LingqiReset\LingqiReset.uproject" -WaitMutex无需修改任何服务器代码 — ue_actions_search / ue_actions_run 将自动识别新动作。
本插件通过三重机制保证永远不出现在打包构建中:
| 层级 | 机制 | 效果 |
|---|---|---|
.uplugin |
"Type": "Editor" |
UBT 对所有非编辑器目标跳过此模块 |
.Build.cs |
依赖 UnrealEd、BlueprintGraph、Kismet、UMGEditor 等 |
无法链接到游戏目标(这些模块在游戏构建中不存在) |
.uplugin |
"PlatformAllowList": ["Win64", "Mac", "Linux"] |
仅限桌面编辑器平台 |
TCP 服务器、所有 MCP 工具以及所有蓝图操作代码仅存在于编辑器 DLL 中。
- 监听
127.0.0.1:55558(仅限本地,不对网络暴露) - Accept 循环为每个连接派生独立的
FMCPClientHandler(每个独立线程) ping和close直接在客户端线程处理(无需游戏线程)- 所有其他命令通过
AsyncTask+FEvent同步分发到游戏线程 - 客户端超时:120 秒无活动后断开
- 启用
SO_REUSEADDR,避免编辑器重启时端口冲突
- 对外暴露 7 个固定工具的单一 MCP 服务器
- 动作注册表含 259 个 ActionDef 条目,支持关键字搜索和模式自省
- UMG 控件类型通过内部组件类型映射分发(支持 24 种控件类型)
ue_batch批量执行(每次最多 50 个动作)- 命令日志环形缓冲区,供
ue_logs_tail使用 - 通过
ue_resources_read暴露嵌入式资源文档
[4 字节:消息长度(大端序)] [UTF-8 JSON 载荷]
请求:
{ "type": "create_blueprint", "params": { "name": "BP_MyActor", "parent_class": "Actor" } }响应:
{ "success": true, "blueprint_name": "BP_MyActor", "path": "/Game/Blueprints/BP_MyActor" }| 文件 | 用途 |
|---|---|
Python/ue_editor_mcp/server_unified.py |
单一 MCP 服务器,7 个工具,动作分发 |
Python/ue_editor_mcp/registry/__init__.py |
ActionRegistry 类,关键字搜索引擎 |
Python/ue_editor_mcp/registry/actions.py |
259 个带模式/标签/示例的 ActionDef 条目 |
Python/ue_editor_mcp/server_unreal_logs.py |
独立日志/缩略图/资产历史/资产差异 MCP 服务器 |
docs/Niagara.md |
Niagara MCP 动作参数与返回字段说明 |
Python/ue_editor_mcp/resources/*.md |
供 ue_resources_read 使用的嵌入式文档 |
Python/ue_editor_mcp/connection.py |
PersistentUnrealConnection(TCP、心跳、自动重连) |
Source/Private/MCPServer.cpp |
TCP Accept 循环 + 每客户端处理线程 |
Source/Private/MCPBridge.cpp |
动作处理器注册表(177 条命令) |
Source/Private/Actions/*.cpp |
FEditorAction 子类具体实现 |
- Unreal Engine 5.7+(内置 Python 3.11,无需另行安装)
- Visual Studio 2022(插件编译所需)
- VS Code + GitHub Copilot(或任意兼容 MCP 的客户端)
开发计划详见 DEVPLAN.md。当前状态:
7 工具统一 MCP 服务器,动作注册表(259 个动作)、关键字搜索、批量执行、嵌入式文档和结构化日志——全部完成。
| # | Feature | Description | Status |
|---|---|---|---|
| P6.1 | editor.start_pie / editor.stop_pie / editor.get_pie_state |
PIE 启动、停止与状态查询,支持自动化运行闭环 | ✅ |
| P6.2 | editor.clear_logs / editor.assert_log |
日志会话分段与断言验证,支持基于游标的自动化检查 | ✅ |
| P6.3 | Outliner 管理动作 | 支持 Actor 重命名、文件夹归类、选择与层级查询 | ✅ |
| # | Feature | Description | Status |
|---|---|---|---|
| P5.1 | material.compile 诊断增强 |
同步等待编译完成,返回真实 errors[](错误文本 + 关联表达式信息)与准确计数 |
✅ |
| P5.2 | material.apply_to_component |
将材质应用到关卡 Actor 指定组件(支持 component_name、slot_index) |
✅ |
| P5.3 | 材质编辑器 Auto Layout 菜单 |
在材质编辑器 Edit 菜单注册布局命令,直接整理当前材质图 |
✅ |
| P5.4 | material.apply_to_actor |
将材质批量应用到 Actor 全部 UPrimitiveComponent |
✅ |
| # | 功能 | 说明 | 状态 |
|---|---|---|---|
| P2.1 | graph.describe |
完整图拓扑转储(所有节点、引脚、连接、位置) | ✅ |
| P2.2 | SEH 崩溃保护 | ExecuteWithCrashProtection() 中的 __try/__except 封装 |
✅ |
| P2.3 | editor.get_logs |
通过自定义 FOutputDevice 环形缓冲区进行结构化日志捕获 |
✅ |
| P2.4 | batch.execute(C++) |
单次 TCP 请求 → 串行游戏线程执行多条命令 | ✅ |
| P2.5 | Python 集成 | 新增 ActionDef + ue_logs_tail 编辑器日志桥接 |
✅ |
| P2.6 | 自定义日志分类 | 全动作范围内以 LogMCP 替换 LogTemp |
✅ |
| # | 功能 | 说明 | 状态 |
|---|---|---|---|
| P3.1 | graph.describe_enhanced |
扩展拓扑信息(变量引用、完整 PinType、节点元数据);支持 compact 模式降低输出量 |
✅ |
| P3.2 | 补丁操作定义 | EPatchOpType 枚举 + FPatchOp 结构体(8 种操作类型) |
✅ |
| P3.3 | graph.apply_patch |
通过 JSON 补丁文档进行声明式图编辑 | ✅ |
| P3.4 | graph.validate_patch |
试运行校验 — 验证所有操作而不修改图 | ✅ |
| P3.5 | Python 补丁 ActionDef | 补丁动作的注册表条目、模式与示例 | ✅ |
| P3.6 | 补丁规范文档 | 更新 patch_spec.md,含完整操作参考 |
✅ |
layout.auto_selected/layout.auto_subtree/layout.auto_blueprint已完成 Enhanced Sugiyama 改造:最长路径分层、Barycenter 交叉优化、宽高感知间距、Pure Pin 对齐、周围节点避让、Comment 框调整。layer_spacing/row_spacing语义:>0固定间距,<=0自动间距(默认自动)。- 新参数(按动作范围):
horizontal_gap、vertical_gap、crossing_passes、pin_align_pure、avoid_surrounding、include_pure_deps、surrounding_margin、preserve_comments。
- 插件开发计划唯一来源:
Plugins/UEEditorMCP/DEVPLAN.md。 - 其他临时计划文档在需求完成后应合并回该文件并移除,避免多份计划口径冲突。
| # | Feature | Description | Status |
|---|---|---|---|
| P4.1 | material.get_summary |
只读 Action,一次性返回材质图完整结构(表达式/连接/属性/注释) | ✅ |
| P4.2 | 通用连线方案 | 将 ConnectToExpressionInput() 从硬编码 Cast<> 重构为通用 GetInput(index) 方案 |
✅ |
| P4.3 | TextureParameter | ExpressionClassMap 新增 TextureParameter/TextureObjectParameter/TextureSampleParameter2D + create_instance 纹理覆写 |
✅ |
| P4.4 | material.auto_layout |
数据流拓扑排序分层布局 | ✅ |
| P4.5 | material.auto_comment |
包围盒注释 + 碰撞避让(60px gap, 5 iterations) | ✅ |
| P4.6 | material.remove_expression |
安全删除(断连 + ExpressionCollection 移除 + Context 反注册) | ✅ |
| P4.7 | StaticSwitchParameter | ExpressionClassMap 新增 StaticSwitchParameter/StaticComponentMaskParameter + create_instance switch 覆写 |
✅ |
| P4.8 | MaterialFunction 引用 | ExpressionClassMap 新增 MaterialFunctionCall + SetMaterialFunction() 绑定 |
✅ |
- DEVPLAN.md — 详细开发计划(各阶段设计文档)
MIT
本项目基于 yangskin/UEBlueprintMCP(MIT 许可证)修改扩展。
原始代码版权归 @lilklon 所有。
{ "servers": { "ue-editor-mcp": { "command": "./Plugins/UEEditorMCP/Python/.venv/Scripts/python.exe", "args": ["-m", "ue_editor_mcp.server_unified"], "env": { "PYTHONPATH": "./Plugins/UEEditorMCP/Python" } }, "ue-editor-mcp-logs": { "command": "./Plugins/UEEditorMCP/Python/.venv/Scripts/python.exe", "args": ["-m", "ue_editor_mcp.server_unreal_logs"], "env": { "PYTHONPATH": "./Plugins/UEEditorMCP/Python" } } } }