UE5.8 MCP Toolsets 分析
使用方法
在UE5.8启用 UnrealMcp、MCP Client Toolset插件。
!UnrealMcp_EnableMcpPlugin.png
根据需求启用相关的Toolset插件。
!UnrealMcp_EnableToolsetPlugin.png
在ModelContextProtocol.StartServer
!UnrealMcp_StartServer.png
!UnrealMcp_EnableAutoStart.png
给AI添加MCP信息。
总体架构
所有Toolset都位于 Engine\Plugins\Experimental\Toolsets,共18个插件。它们通过 ToolsetRegistry 插件(核心基础设施)将 AI-callable 工具暴露给 MCP 系统(如 UnrealMCP)。
功能维度总览
核心编辑器操作
资产与资源管理
Gameplay
Sequence
动画系统
特效系统 (Niagara)
PCG
测试与配置
插件与功能管理
其他工具
以上 3 个工具集均有 Python 实现,C++ 模块仅负责加载插件,实际逻辑和工具注册均在 Python 侧完成。
实现模式分类
| 模式 |
使用方 |
| UToolsetDefinition + 静态 AICallable 函数 |
几乎所有已实现的工具集 |
| EditorSubsystem 生命周期管理 |
AutomationTest, LiveCoding, SlateInspector, MCPClient |
| 多工具集模块注册 |
GASToolsets (3个), NiagaraToolsets (4个) |
| ON_SCOPE_EXIT 回滚保护 |
GameFeaturesToolset |
| 纯 Python 实现 (C++ 模块仅作加载器) |
AIModuleToolset, AnimationAssistant, ConversationToolset, StateTreeToolset |
| Python + C++ 混合实现 |
SequencerAnimMixerToolset (仅 Python), NiagaraToolsets (C++ + Python 注册) |
启用工具集的建议配置
| 场景 |
需要的工具集 |
| C++ 编译辅助 |
LiveCodingToolset |
| 自动化测试 |
AutomationTestToolset |
| Gameplay Ability System |
GASToolsets |
| Gameplay 标签管理 |
GameplayTagsToolset |
| Niagara 粒子/特效 |
NiagaraToolsets |
| 物理资产 |
PhysicsToolsets |
| Dataflow/破坏系统 |
DataflowAgent |
| UMG UI 构建 |
UMGToolSet |
| Sequencer 动画混合 |
SequencerAnimMixerToolset |
| 编辑器 UI 自动化 |
SlateInspectorToolset |
| 外部 MCP 服务器 |
MCPClientToolset |
| GameFeature 插件 |
GameFeaturesToolset |
| 世界条件 |
WorldConditionsToolset |
| 行为树 AI |
AIModuleToolset |
| Sequencer + Control Rig |
AnimationAssistantToolset |
| 对话系统 |
ConversationToolset |
| 状态树 |
StateTreeToolset |
第三方 MCP 比较
概述
调研了 8 个第三方 Unreal MCP 开源仓库,均为 GitHub 社区项目。它们与官方 UE5.8 ToolsetRegistry 在架构理念、传输协议和实现方式上有本质差异。
| 仓库 |
连接方式 |
需要插件? |
传输 |
语言 |
工具数 |
UE 版本 |
核心定位 |
| appleweed_UnrealMCPBridge |
TCP |
C++ 插件 |
TCP :9000 |
Python |
~35 |
5.5+ |
编辑器自动化 + Insights 性能追踪 |
| ChiR24_Unreal_mcp |
HTTP 原生 / TCP |
C++ 插件 (超大) |
HTTP :3000 或 TCP :8091 |
TS 或纯 C++ |
23 父工具(数百子动作) |
5.0-5.8 |
第三方中最全面 |
| chongdashu_unreal-mcp |
TCP |
C++ 插件 |
TCP :55557 |
Python |
~25 |
5.5+ |
Blueprint + Actor 开发 |
| prajwalshettydev_UnrealGenAISupport |
TCP |
C++ 插件 |
TCP :9877 |
Python |
~25 |
5.4-5.7+ |
LLM API 集成(主) + MCP(辅) |
| runeape-sats_unreal-mcp |
HTTP |
无 (用 Remote Control API) |
HTTP :30010 |
Python |
~15 |
5.3 |
场景搭建 + TLA+ 形式化验证 |
| runreal_unreal-mcp |
UDP + TCP |
无 (用 Python Remote Exec) |
UDP 多播 + TCP |
TypeScript |
19 |
5.4+ |
最快迭代,零插件 |
| winyunq_UnrealMotionGraphicsMCP |
TCP 异步 |
C++ UMG 插件 |
TCP 异步 |
Python |
~30 |
5.6+ |
UMG / Material / Sequencer 设计 |
架构差异
第三方主流模式:外部进程 + TCP 桥接
6/8 的仓库都采用此模式(appleweed、ChiR24 (Option B)、chongdashu、prajwalshettydev、winyunq)。外部进程运行 MCP 协议,通过自定义 JSON 帧协议将命令转发到 UE 内部的 C++ TCP 服务器。
- 特例
- runeape-sats:直接 HTTP 调用 UE 内置的 Remote Control API (
/remote/object/call),无需任何 C++ 代码
- runreal:通过 UE 内置的 Python Remote Execution (UDP 发现 + TCP 命令),所有工具本质是生成 Python 代码字符串在编辑器内执行
官方模式:引擎内原生 HTTP
TLS/SSE、会话管理、反射 Schema 生成全部在引擎进程内完成,无外部依赖。
架构对比表
| 维度 |
第三方主流方案 |
官方 UE5.8 ToolsetRegistry |
| 运行位置 |
外部 Python/Node.js 进程 + C++ 插件 |
所有逻辑在引擎进程内 |
| 传输协议 |
自定义 JSON-over-TCP(各仓库自造轮子) |
JSON-RPC 2.0 over Streamable HTTP (MCP 标准) |
| 类型安全 |
Python type hints 或 Zod,手动校验 |
C++ USTRUCT 反射自动生成 JSON Schema |
| 工具发现 |
装饰器或硬编码注册 |
UToolsetRegistry 自动扫描注册 |
| 会话管理 |
单会话为主(仅 ChiR24 支持多会话) |
原生多会话 + SSE 流式推送 |
| 错误处理 |
各仓库不一致 (status:error vs success:false) |
标准 JSON-RPC 错误码 |
| 流式传输 |
无(全为请求-响应模式) |
SSE 实时推送长时间操作进度 |
| 生命周期 |
外部进程需独立启动/停止 |
编辑器启动即自动运行 |
技术优势对比
- 第三方方案优势
- 开发速度快:Python 工具可在数分钟内添加,无需 C++ 编译
- 零插件可选:runreal 和 runeape-sats 只需启用内置引擎插件即可工作
- Python 生态:可引入任意 Python 库(requests、mss 截图等)
- 独立演化:MCP Server 和 UE 插件可独立更新,不受引擎版本约束
- 入门门槛低:Python/TypeScript 开发者即可贡献,无需 C++ 知识
- 第三方方案劣势
- 协议脆弱:每个仓库都自己实现 TCP 帧协议,缓冲区处理和断线重连无标准
- 双进程管理:外部进程 + UE 插件需要同时监控,调试困难
- 无类型安全:参数以原始字典/字符串传递,手动校验,Schema 漂移风险高
- 无标准工具发现:工具列表硬编码在源码中,运行时无动态注册机制
- 线程安全脆弱:多数通过
register_slate_post_tick_callback 切回主线程
- 官方方案优势
- 工程级集成:引擎内运行,零 IPC 开销,无外部进程管理
- 反射驱动类型安全:C++ USTRUCT 自动生成 JSON Schema,始终与实现同步
- 插件化可扩展:第三方可通过发布 UE 插件注册自定义 Toolset
- 原生多会话:SSE 流式推送 + Session ID 管理,支持并发 AI 客户端
- 标准协议:符合 MCP 规范的 JSON-RPC 2.0,任何 MCP 客户端可直接连接
- 官方方案劣势
- 高入门门槛:需要 C++ 知识创建新 Toolset
- 编译周期长:任何工具变更需要 C++ 重编译
- 生态受限:不能直接使用 Python 第三方库
- 版本锁定:紧耦合引擎版本
功能缺口分析:第三方有而官方没有 / 官方有而第三方没有
第三方 MCP 有,官方 UE5.8 MCP 没有
| 功能 |
来源仓库 |
说明 |
| C++ 源码静态分析 |
mcpanalyzer |
搜索 UCLASS/USTRUCT/UFUNCTION、反射解析、AST 分析、Build 编译、最佳实践检查——完全不需要运行编辑器 |
| Unreal Insights 性能追踪 |
appleweed |
启动/停止/分析 Unreal Insights trace、CSV profiling |
| 战斗/背包/网络/AI 系统 |
ChiR24 |
manage_combat、manage_inventory、manage_networking、manage_ai——GaAS 层面的完整系统管理 |
| PCG 管理 |
ChiR24 |
manage_pcg——程序化生成工具 |
| 音频管理 |
ChiR24 |
manage_audio——SoundCue/Metasound 操作 |
| HLSL 代码编辑 |
winyunq |
hlsl_set_target、hlsl_get、hlsl_set、hlsl_compile——直接在 MCP 中编辑 Material 的 HLSL 节点 |
| HTML 转 UMG |
winyunq |
将 HTML 结构自动转换为 UMG Widget 树 |
| LLM API 内置集成 |
prajwalshettydev |
在 UE 编辑器内直接调用 OpenAI/Anthropic/DeepSeek API(主功能,MCP 为副) |
| TLA+ 形式化验证 |
runeape-sats |
城堡搭建工作流的 TLA+ 形式化规格 |
| OS 级截图 |
prajwalshettydev |
使用 Python mss 库截取整个屏幕,用于 AI 看图理解编辑器状态 |
| Blueprint 图节点级编辑 |
appleweed/chongdashu |
获取 Blueprint 节点 ID、Pin 详情、连接 Pin、添加事件/函数节点——粒度比官方 BlueprintTools 更细 |
| Arbitrary Python 执行 |
runreal |
editor_run_python——在编辑器内执行任意 Python 代码,给了 AI 无限的引擎 API 访问能力 |
| 系统控制 |
ChiR24 |
system_control——编辑器进程层面的控制(重启、退出等) |
| 环境搭建 |
ChiR24 |
build_environment——构建环境管理 |
官方 UE5.8 MCP 有,第三方 MCP 没有
| 功能 |
来源 Toolset |
说明 |
| Slate UI 自动化 (Playwright 风格) |
SlateInspectorToolset |
快照、观察者、截图、点击/拖拽/Hover/输入/表单填充——以 AI Agent 视角驱动编辑器 UI |
| Dataflow 图编辑 |
DataflowAgent |
Geometry Collection 破坏系统的节点图完整编辑(17 个工具) |
| GAS 运行时检测 |
GASToolsets |
实时检测 AbilitySystemComponent 的属性值、活跃效果、技能、标签 |
| GameplayCue 管理 |
GASToolsets |
GameplayCue 标签增删、通知资产创建、缺少通知资产的标签发现 |
| GameplayTag 管理 |
GameplayTagsToolset |
完整的增删改查 + 资产引用者搜索 |
| Live Coding 热编译 |
LiveCodingToolset |
触发编译 + 收集 MSVC 诊断 + 线程安全日志捕获 |
| MCP 客户端桥接 |
MCPClientToolset |
接入外部 MCP 服务器(SSE/StreamableHTTP/OAuth+PKCE),聚合第三方工具 |
| GameFeature 插件创建 |
GameFeaturesToolset |
完整的 GFP 创建流程(目录→.uplugin→挂载→资产→保存),带 ON_SCOPE_EXIT 回滚 |
| WorldConditions 检查 |
WorldConditionsToolset |
查询/条件描述 + 自定义 JSON 转换器 |
| Conversation Graph 检查 |
ConversationToolset |
对话资产节点遍历、入口点、说话者、GUID 查找 |
| StateTree 检查 |
StateTreeToolset |
状态树结构导航、任务/条件/转换/求值器查询 |
| CurveTable / DataTable / StringTable |
Core Python 模块 |
专门的表格数据资产创建/编辑工具 |
| ProgrammaticToolset |
Core Python 模块 |
沙盒 Python 脚本编排——在同一脚本中调用多个 MCP 工具并编写自定义逻辑 |
| AgentSkill 系统 |
AgentSkillToolset |
Agent Skill 的列表/读取/创建/更新——AI Agent 的 prompt 上下文管理 |
| EditorAppToolset |
Core Python 模块 |
控制台变量管理、资产缩略图成像、内容浏览器导航 |
| LogsToolset |
Core Python 模块 |
输出日志类别动态控制、日志读取 |
| C++ JSON Schema 自动生成 |
架构层 |
从 USTRUCT 反射自动生成工具参数 Schema,永远与实现同步 |
| 原生多会话 SSE 流式推送 |
架构层 |
支持多个 AI 客户端同时连接,长时间操作进度实时推送 |
| 插件化 Toolset 扩展 |
架构层 |
第三方只需发布 UE 插件并注册 UToolsetDefinition,无需适配任何外部进程 |
| 标准 JSON-RPC 2.0 |
架构层 |
完全符合 MCP 协议规范,任何 MCP 客户端可直连 |
差距总结
| 对比维度 |
第三方领先 |
官方领先 |
| 代码分析 |
mcpanalyzer 独有 |
— |
| 性能分析 |
appleweed 的 Insights 集成 |
— |
| Gameplay 高级系统 |
ChiR24 的 combat/inventory/AI/PCG/audio |
GAS 运行时检测 + GameplayCue 官方更深入 |
| UI 自动化 |
— |
SlateInspectorToolset 独有 |
| 资产表格 |
— |
CurveTable/DataTable/StringTable 独有 |
| 容器/编排 |
runreal 的任意 Python 执行 |
ProgrammaticToolset 沙盒编排 |
| 工程架构 |
— |
反射 Schema、多会话 SSE、插件化扩展、标准协议 |
| 部署复杂度 |
runreal/runeape-sats 零 C++ 即可用 |
需引擎编译,但启动即运行 |
核心结论:第三方 MCP 在广度上占优(覆盖了更多非编辑器核心的领域),官方 MCP 在深度和工程品质上占优(单个领域的工具细粒度、类型安全、协议标准、可扩展性)。两者并非替代关系——各有独特优势,可以互补使用。
UAgentSkill 分析
1. 它是什么
UAgentSkill 是 UE5.8 MCP 的 AI prompt 增强机制,功能等价于 Claude Code 的 Skill:
|
UE5.8 UAgentSkill |
Claude Code Skill |
| 载体 |
Blueprint 资产(UAgentSkill 子类) |
Markdown 文件 |
| 作用 |
注入领域知识 + 指令到 AI 上下文 |
注入工作流指引到对话 |
| 依赖 |
Toolsets 字段声明需加载哪些 toolset |
无 |
| 动态生成 |
GeneratePrompt() 虚函数可编程 |
静态内容 |
| 创建 |
AI 通过 MCP CreateSkill 创建 |
文件写入 |
2. 相关类
- UAgentSkill:基类,核心属性 Description + Instructions + Toolsets,虚函数 GeneratePrompt()
- UAgentSkillBestPractices:改写 GeneratePrompt,追加技能编写规范
- UAgentSkill_NiagaraBase:改写 GeneratePrompt,前置 Niagara 概述 + 资产发现路径
- UAgentSkillToolset:继承 UToolsetDefinition,暴露 MCP CRUD(ListSkills / GetSkills / CreateSkill / UpdateSkill)
- FAgentSkillDetails:DTO,最终生成的 Instructions + 依赖 toolset 名列表
核心流程:GetDetails() → GeneratePrompt(Instructions) → FAgentSkillDetails → AI 拿到最终 prompt。
3. 编写一个基础 UAgentSkill
C++ 子类方式:
- 继承 UAgentSkill
- 设置 Description(简短摘要,ListSkills 返回它)
- 设置 Instructions(详细指令,会被 GeneratePrompt 处理)
- 在 Toolsets 中声明依赖的功能性 toolset(软引用,系统据此自动加载)
- 重写 GeneratePrompt_Implementation() 在指令前后注入额外上下文
Niagara Skill实现路径:前置概念概述 → 遍历 toolset 获取专属 prompt → 插入原始 Instructions → 追加资产发现路径。
MCP 运行时创建(AI 调用,需用户许可):
CreateSkill(/Game/Skills/, MySkill, "描述", {Instructions:"...", Toolsets:["/Script/..."]}),本质是创建以 UAgentSkill 为父类的 Blueprint 资产,写入 CDO 属性。