UECortex
运行完整虚幻引擎的原生虚幻引擎5插件 MCP(模型上下文协议) 虚幻编辑器内的服务器。直接从Claude Code、VS Code或任何MCP客户端控制您的项目——没有Python sidecar,没有Node.js进程,没有外部依赖。
169个内置工具 跨17个类别,加上Python支持的动态工具层。
______________________________________________________________________
快速开始
1.安装
复制 UECortex 将文件夹放入项目的 Plugins/ 目录并在您的 .uproject:
{
"Name": "UECortex",
"Enabled": true
}重新打开项目。服务器在编辑器启动时自动启动。
2.连接
克劳德代码:
claude mcp add uecortex --transport http http://localhost:7777/mcpVS Code (.vscode/mcp.json):
{ "servers": { "uecortex": { "url": "http://localhost:7777/mcp" } } }克劳德桌面版 (claude_desktop_config.json):
{ "mcpServers": { "uecortex": { "url": "http://localhost:7777/mcp" } } }健康检查:
GET http://localhost:7777/health______________________________________________________________________
工具类别
元
在深入了解完整的工具列表之前,先了解可用的工具。
| 工具 | 它做什么 |
|---|---|
list_tool_groups | 列出所有类别,包括工具数量和名称 |
______________________________________________________________________
级别和演员
生成、移动、删除和检查当前级别中的参与者。
| 工具 | 它做什么 |
|---|---|
actor_spawn | 在给定的位置/旋转/比例按类别生成演员 |
actor_spawn_on_surface | 一个演员迅速跳到一个点下最近的表面 |
actor_delete | 从级别中删除演员 |
actor_duplicate | 使用可选偏移量复制角色 |
actor_set_transform | 设置演员的位置、旋转和/或比例 |
actor_set_property | 按名称设置演员的属性 |
actor_get_properties | 读取演员的所有公开属性 |
actor_get_selected | 在编辑器中获取当前选定的演员 |
actor_list | 列出级别中的所有参与者,并使用可选的类过滤器 |
actor_find_by_name | 按标签名称查找演员 |
level_get_info | 获取级别名称、世界边界和演员数量 |
line_trace | 投射光线并返回其击中的物体(位置、法线、演员) |
viewport_focus | 将编辑器视口聚焦于演员 |
viewport_set_camera | 设置编辑器相机位置和旋转 |
console_command | 执行虚幻控制台命令 |
______________________________________________________________________
蓝图
以编程方式创建和连接蓝图资源。
| 工具 | 它做什么 |
|---|---|
blueprint_create | 从父类创建新的Blueprint类 |
blueprint_add_component | 将组件(网格、相机、音频等)添加到蓝图中 |
blueprint_set_component_property | 在Blueprint组件上设置属性 |
blueprint_set_cdo_property | 设置类默认对象属性 |
blueprint_set_inherited_component_property | 在继承的组件上设置属性 |
blueprint_add_variable | 将类型化变量添加到蓝图中 |
blueprint_set_variable | 设置Blueprint变量的默认值 |
blueprint_add_function | 向蓝图添加新功能 |
blueprint_add_event_node | 添加事件节点(BeginPlay、Tick、自定义事件等) |
blueprint_add_function_call | 将函数调用节点添加到蓝图图中 |
blueprint_connect_pins | 连接蓝图图中的两个引脚 |
blueprint_compile | 编译蓝图资产 |
blueprint_get_graph | 以JSON格式读取完整的节点/引脚/连接图 |
blueprint_find_node | 按类或标题查找节点 |
blueprint_set_node_property | 在图形节点上设置属性 |
blueprint_spawn_in_level | 将蓝图参与者添加到当前级别 |
blueprint_create_input_action | 创建增强输入操作并将其绑定 |
blueprint_add_gamemode | 创建游戏模式蓝图并将其设置为默认值 |
______________________________________________________________________
C++代码生成
生成C++源文件并触发编辑器重新编译。
| 工具 | 它做什么 |
|---|---|
cpp_create_actor | 生成一个新的AActor子类(.h+.cpp) |
cpp_create_component | 生成新的UActorComponent子类 |
cpp_create_interface | 生成一个新的UInterface |
cpp_create_gas_ability | 生成UGameplayAbility子类 |
cpp_create_gas_effect | 生成UGameplayEffect子类 |
cpp_create_attribute_set | 生成UAttributeSet子类 |
cpp_add_include | 在现有标头中添加#include |
cpp_add_uproperty | 向现有类添加UPROPERTY |
cpp_add_ufunction | 将UFUNCTION添加到现有类中 |
cpp_get_class_info | 读取类上声明的属性和函数 |
cpp_hot_reload | 触发项目模块的热重新加载 |
cpp_run_ubt | 运行完整的UnrealBuildTool编译 |
______________________________________________________________________
渲染和材质
在运行时控制管腔、Nanite、阴影、后处理、雾、天空和材质。
| 工具 | 它做什么 |
|---|---|
render_set_lumen | 启用/禁用Lumen GI并配置质量设置 |
render_get_lumen_settings | 读取当前流明设置 |
render_set_nanite | 在静态网格上启用/禁用Nanite |
render_get_nanite_settings | 阅读网格的Nanite设置 |
render_set_shadows | 配置阴影距离、级联和质量 |
render_set_post_process | 设置后处理体积设置(开花、AO、DOF等) |
render_get_post_process | 读取当前后处理设置 |
render_set_fog | 配置指数高度雾 |
render_set_sky_atmosphere | 配置天空大气组件 |
render_set_sky_light | 设置天空光强度和光源类型 |
render_set_ambient_occlusion | 配置SSAO设置 |
render_get_materials | 列出指定给网格的材质 |
render_set_material | 将材质指定给网格槽 |
render_set_material_param | 在材质实例上设置标量或矢量参数 |
render_create_material_instance | 从父材质创建材质实例 |
______________________________________________________________________
样条曲线和体积
构建样条线路径并放置触发/阻止体积。
| 工具 | 它做什么 |
|---|---|
spline_create | 在关卡中创建一个新的样条线演员 |
spline_add_point | 向样条曲线添加点 |
spline_modify_point | 移动或更改现有样条线点的切线 |
spline_query | 从样条曲线读取所有点和元数据 |
spline_attach_mesh | 沿样条线附着静态网格 |
volume_create | 创建一个音量调节器(触发器、阻塞、后处理等) |
volume_set_properties | 调整现有卷的大小和位置 |
______________________________________________________________________
共轭梯度 *(需要程序内容生成插件)*
构建并执行程序级填充的PCG图。
| 工具 | 它做什么 |
|---|---|
pcg_create_graph | 创建新的PCG图形资源 |
pcg_add_node | 将节点添加到PCG图中 |
pcg_connect_pins | 连接PCG图中的两个节点 |
pcg_disconnect_pins | 断开针脚连接 |
pcg_get_graph | 以JSON格式读取完整的PCG图 |
pcg_get_node_params | 读取PCG节点上的参数 |
pcg_set_node_param | 在PCG节点上设置参数 |
pcg_set_graph_param | 设置图形级参数(暴露的输入) |
pcg_list_node_types | 列出所有可用的PCG节点类型 |
pcg_execute_graph | 触发PCG图以重新生成 |
pcg_create_attribute_node | 使用给定的名称/类型创建属性节点 |
pcg_create_subgraph | 创建引用另一个PCG资源的子图节点 |
pcg_place_volume | 在标高中放置一个PCG体积并指定一个图形 |
pcg_place_seed_actor | 放置一个PCG种子角色用于基于点的生成 |
______________________________________________________________________
游戏玩法能力系统 *(需要GameplayAbilities插件)*
连接GAS组件、能力、属性和游戏标签。
| 工具 | 它做什么 |
|---|---|
gas_add_ability_component | 将能力系统组件添加到蓝图中 |
gas_grant_ability | 赋予演员游戏能力 |
gas_revoke_ability | 从演员身上删除授予的能力 |
gas_get_abilities | 列出授予演员的所有能力 |
gas_apply_effect | 将游戏效果应用于演员 |
gas_get_active_effects | 列出演员的活动效果 |
gas_get_attributes | 读取actor上的所有属性值 |
gas_set_attribute | 直接设置属性值 |
gas_add_gameplay_tag | 为演员添加游戏标签 |
gas_remove_gameplay_tag | 从参与者中删除游戏标签 |
gas_get_gameplay_tags | 列出演员的所有游戏标签 |
gas_list_registered_tags | 列出项目中注册的所有游戏标签 |
______________________________________________________________________
尼亚加拉视觉特效
生成、配置和控制Niagara粒子系统。
| 工具 | 它做什么 |
|---|---|
niagara_list_systems | 列出项目中的所有Niagara系统资产 |
niagara_create_system | 创建新的Niagara系统资源 |
niagara_list_emitters | 列出尼亚加拉系统内的发射器 |
niagara_get_parameters | 读取Niagara系统上用户公开的参数 |
niagara_set_parameter | 在Niagara系统资源上设置参数值 |
niagara_spawn_component | 在关卡中的演员身上生成尼亚加拉组件 |
niagara_activate_component | 激活或停用生成的Niagara组件 |
niagara_set_component_parameter | 在生成的Niagara组件上设置运行时参数 |
______________________________________________________________________
动画
构建动画蓝图、状态机,并跨骨架重定向动画。
检查
| 工具 | 它做什么 |
|---|---|
anim_list_skeletons | 列出项目中的所有骨架资产 |
anim_list_skeletal_meshes | 列出所有骨骼网格资源 |
anim_list_anim_blueprints | 列出所有动画蓝图 |
anim_list_sequences | 列出与给定骨架兼容的AnimSequences |
anim_get_skeleton_bones | 列出骨架中的每个骨骼名称和父级 |
anim_get_anim_graph | 检查AnimBP中的所有图形、状态和节点 |
构建动画蓝图
| 工具 | 它做什么 |
|---|---|
anim_create_anim_blueprint | 为骨架创建新的动画蓝图 |
anim_add_state_machine | 将状态机节点添加到AnimGraph |
anim_add_state | 将命名状态添加到状态机 |
anim_set_state_animation | 将AnimSequence或BlendSpace分配给状态 |
anim_add_transition | 在两个状态之间添加转换箭头 |
anim_set_transition_condition | 将可变条件连接到转换规则(支持 always_true) |
anim_set_entry_state | 将Entry节点连接到状态机中的命名状态 |
anim_compile_anim_blueprint | 编译并保存动画蓝图 |
anim_create_locomotion_setup | 一次呼叫全运动设置:SM+5个状态+转换+事件图接线 |
IK 重定向 *(需要IKRig插件)*
| 工具 | 它做什么 |
|---|---|
ik_rig_assign_mesh | 将骨骼网格指定给IK装备(必需的第一步) |
ik_rig_set_retarget_root | 在IK装备上设置重定目标根骨骼 |
ik_rig_add_retarget_chain | 添加重定向链(肢体、脊椎、头部等) |
ik_rig_remove_retarget_chain | 按名称删除重定向链 |
ik_retarget_create | 创建一个IK重定目标器,将两个IK Rig与自动链映射配对 |
anim_retarget_batch | 批量将动画列表重定向到新骨架 |
维护
| 工具 | 它做什么 |
|---|---|
skeleton_fix_broken_references | 修复动画资源中损坏的骨架引用 |
动画蓝图工作流程: 添加变量→ 添加状态机→ 添加状态→ 指定动画→ 添加过渡→ 编译 → 设置转换条件→ 再次编译。编译必须在anim_set_transition_condition因此变量getter可以解析其类型。 对于标准运动,请使用anim_create_locomotion_setup在一次调用中完成上述所有操作(包括Speed和IsInAir的EventGraph连接)。
______________________________________________________________________
UMG小部件
创建并填充小部件蓝图UI。
| 工具 | 它做什么 |
|---|---|
umg_list_widgets | 列出所有小部件蓝图资产 |
umg_create_widget | 创建新的小部件蓝图 |
umg_get_widget_tree | 以JSON格式读取完整的小部件树 |
umg_add_widget | 将小部件(文本、按钮、图像等)添加到树中 |
umg_set_text | 设置文本小部件的文本内容 |
umg_set_canvas_slot | 在画布面板上设置小部件的位置和大小 |
umg_set_anchor | 在画布槽上设置锚点对齐 |
umg_set_visibility | 显示或隐藏小部件 |
umg_add_variable | 向小部件蓝图添加变量 |
umg_compile_widget | 编译小部件蓝图 |
______________________________________________________________________
定序器
使用摄影机剪辑、轨迹和关键帧构建电影级序列。
| 工具 | 它做什么 |
|---|---|
seq_create | 创建新的Level Sequence资源 |
seq_list | 列出项目中的所有级别序列 |
seq_get_info | 读取序列持续时间、帧率和轨道布局 |
seq_set_playback_range | 设置序列的输入/输出点 |
seq_add_actor_binding | 将演员绑定到动画序列 |
seq_add_transform_track | 为绑定的演员添加变换(移动)轨迹 |
seq_add_keyframe | 在给定帧处设置关键帧值 |
seq_add_camera_cut | 添加相机剪切部分 |
seq_add_spawnable_camera | 将新的可生成摄影机演员添加到序列中 |
seq_add_visibility_track | 为绑定的参与者添加可见性轨迹 |
______________________________________________________________________
资产管理
浏览、移动、复制、删除和迁移内容浏览器资产。
| 工具 | 它做什么 |
|---|---|
asset_list | 列出文件夹中的资产(带可选类过滤器) |
asset_get_info | 获取资产的元数据(类、路径、大小、依赖关系) |
asset_get_references | 列出引用给定资产的资产 |
asset_get_dependencies | 列出给定资产所依赖的资产 |
asset_move | 移动或重命名资源 |
asset_copy | 将资源复制到新路径 |
asset_delete | 永久删除资产 |
asset_create_folder | 创建新的内容浏览器文件夹 |
asset_list_redirectors | 列出路径中的所有重定向器资产 |
asset_fix_redirectors | 整合和删除重定向程序 |
asset_migrate | 将资产和所有依赖项迁移到另一个项目 |
______________________________________________________________________
视口和输入
捕获屏幕截图并以编程方式驱动编辑器UI。
| 工具 | 它做什么 |
|---|---|
viewport_capture | 将3D视口或完整编辑器窗口捕获为PNG格式 |
viewport_focus | 将视口聚焦在演员身上 |
viewport_set_camera | 设置编辑器相机位置和旋转 |
editor_input | 在编辑器窗口上模拟鼠标点击和键盘输入 |
______________________________________________________________________
Fab市场
在编辑器内搜索和检查Fab市场中的资产。
| 工具 | 它做什么 |
|---|---|
fab_login_status | 检查EOS登录状态(购买前需要) |
fab_search | 按关键字搜索Fab资产 *(动态-每个会话加载一次)* |
fab_get_asset | 按ID获取Fab资产的完整详细信息 *(动态-每个会话加载一次)* |
每个会话加载一次动态工具:
python_reload_tools_from_file → Scripts/fab_tools.json购买同意政策:fab_get_asset这只是信息。每个响应都包含一个明确的CONSENT REQUIRED通知。未经用户明确确认,人工智能代理不得触发购买、添加到购物车或任何付款操作。
______________________________________________________________________
Python和动态工具
在编辑器上下文中执行Python,并在运行时注册新工具,而无需重新编译。
| 工具 | 它做什么 |
|---|---|
python_exec | 在编辑器的Python环境中运行Python代码段 |
python_exec_file | 从项目的Scripts文件夹运行Python脚本文件 |
python_check | 检查Python表达式的计算结果是否没有错误 |
python_set_var | 存储一个命名变量,以便在python_exec调用中使用 |
python_get_var | 读取存储的变量 |
python_list_scripts | 在scripts文件夹中列出可用的Python脚本 |
python_register_tool | 注册一个由Python代码段支持的新MCP工具 |
python_unregister_tool | 删除动态注册的工具 |
python_list_dynamic_tools | 列出当前注册的所有动态工具 |
python_reload_tools_from_file | 从JSON文件加载一批工具 |
示例——在运行时注册一个工具:
{
"name": "python_register_tool",
"arguments": {
"name": "count_actors",
"description": "Count all actors in the current level.",
"code": "import unreal\nactors = unreal.get_editor_subsystem(unreal.EditorActorSubsystem).get_all_level_actors()\n_mcp_result = f'{len(actors)} actors'"
}
}工具以如下方式接收其论点 _mcp_params (dict)并通过赋值返回结果 _mcp_result (字符串)。
从JSON文件批量加载:
[
{ "name": "tool_a", "description": "...", "code": "..." },
{ "name": "tool_b", "description": "...", "code": "..." }
]______________________________________________________________________
可选插件依赖关系
某些类别仅在启用插件时激活:
| 类别 | 必需插件 | 通过启用 |
|---|---|---|
| PCG | 程序内容生成 | 插件窗口 |
| GAS | 游戏能力 | 插件窗口 |
| Niagara | 尼亚加拉 | UE5默认启用 |
| IK Retarget | IKRig | 插件窗口 |
所有其他类别无条件加载。
______________________________________________________________________
建筑
- 运输: HTTP+SSE已打开
localhost:7777 - 协议: MCP 2024-11-05/JSON-RPC 2.0
- 发动机版本: UE 5.6+(兼容5.7)
- 模块类型: 编辑器插件,
PostEngineInit - 螺纹: HTTP处理程序在游戏线程tick上运行-所有UE API调用都是直接的,不是
AsyncTask包装器
模块布局
| 模块 | 内容 |
|---|---|
UECortex | 核心服务器、路由器、注册表、级别/蓝图/渲染/样条线/体积/cpp/视口/fab/元工具 |
UECortexAsset | 资产管理工具 |
UECortexAnim | 动画蓝图、骨架和状态机工具 |
UECortexIKRetarget | IK Rig设置和批重定目标工具 *(可选——需要IKRig)* |
UECortexUMG | 小部件蓝图工具 |
UECortexSequencer | 级别序列/电影工具 |
UECortexPCG | PCG图形工具 *(可选--需要PCG插件)* |
UECortexGAS | 游戏能力系统工具 *(可选——需要游戏能力)* |
UECortexNiagara | Niagara视觉特效工具 |
UECortexPython | Python执行器+动态工具注册 |
