【免费下载链接】Unreal_mcpA comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal Engine through the native C Automation Bridge plugin. Built with TypeScript and C.项目地址https://gitcode.com/gh_mirrors/un/Unreal_mcp点击查看免费下载Unreal_mcpEngineWire是一个开源的 MCPModel Context Protocol服务器通过原生 C 编辑器插件让 AI 助手直接控制 Unreal 编辑器建关卡、写蓝图、截图验证背后是 400 项能力。它最耐人寻味的设计是双传输架构——同一套编辑器操作既能通过插件内置的 HTTP 服务直连也能经 Node.js 服务器走 stdio WebSocket 桥接。而所有路径最终都汇入同一个安全枢纽游戏线程请求队列。一、先认识主角EngineWire 插件在系统里扮演什么角色 无论走哪条传输路径真正动手的永远是运行在编辑器进程内的EngineWireC 插件。它注册为编辑器子系统UEngineWireSubsystem负责接收两条传输线送来的自动化请求把请求排队、调度到游戏线程执行调用编辑器 API 完成实际操作生成 Actor、建蓝图、截图……把结果、进度、回执原路返回给客户端也就是说传输层只负责传话EngineWire 才是真正驱动 Unreal 编辑器的大脑。这也是理解整个架构的钥匙。核心子系统声明EngineWireSubsystem.h二、双传输架构全貌两条路同一个unreal工具 ️两条传输路径对外暴露完全相同的单一unreal网关工具区别只在于客户端怎么找到插件对比项 Route A · 原生 HTTP Route B · stdio链路客户端 → 插件http://127.0.0.1:3000/mcpStreamable HTTP/SSE客户端 → Node.js 服务器stdio→ 插件 WebSocket127.0.0.1:8090是否需要 Node.js❌ 不需要✅ 需要 20.19凭证方式X-MCP-Capability-Token请求头bridge_hello消息内携带 token适用场景Claude Code、Cursor、VS Code多客户端共享一个编辑器Claude Desktop、只能启动本地命令的客户端协议契约在 docs/protocol.md 中有完整定义网关客户端使用方式见 docs/gateway-client-guide.md。为什么要做两条路一句话让只支持本地命令的 MCP 客户端和支持 HTTP 的 MCP 客户端都能接入同一个编辑器且行为完全一致。Route B 的 TypeScript 桥接端位于 src/automation/其设计文档明确写着两条传输彼此独立、互不绕过src/automation/AGENTS.md。三、关键问题AI 指令如何安全地驱动编辑器Unreal 的编辑器 API不是线程安全的——在渲染线程或网络线程上直接调用会崩溃。EngineWire 的答案是一套请求队列 游戏线程单车道机制分四步走1️⃣ 入队传输线程只登记不动手无论请求从 WebSocket 还是原生 HTTP 进来都先调用QueueAutomationRequest()进入待处理队列。这一步发生在传输线程上加锁、限额、记录来源绝不调用任何编辑器 API。队列上限 64 个请求每个会话最多占 16 个防止单个客户端把队列灌满饿死别人见 McpQueueFairness.h 的注释。2️⃣ 心跳Core Ticker 每帧检查一次插件初始化时向 Unreal 的Core Ticker注册了一个每帧回调Tick()EngineWireSubsystemLifecycle.cpp。它有两个安全阀门编辑器正在保存、GC 或异步加载时直接跳过排空——这些时刻调用对象解析可能崩溃每个 tick 最多排空16 个请求避免一帧内堆积过多编辑器操作3️⃣ 排空游戏线程上的单条修改车道ProcessPendingAutomationRequests()是真正的工作者EngineWireSubsystemRequestQueue.cpp若不在游戏线程它会AsyncTask(ENamedThreads::GameThread, ...)把自己投递到游戏线程——这是排队请求最终必然跑在游戏线程的第一个保证每次派发前代码硬性断言DispatchDepth 1 IsInGameThread()同文件 L286-L290。注释写得很直白如果深度超过 1就意味着有两条修改车道同时开着这是调度器唯一可能出事的入口所以在现场就炸这套单一修改车道不变量是整套架构的承重墙编辑器同一时刻只会被一个请求修改绝不并行、绝不停叠。4️⃣ 执行派发前的最后三关真正执行前McpProcessRequest.cpp还要过三道闸关卡行为为什么线程闸不在游戏线程 → 重新入队保证 API 调用线程安全状态闸正在保存/GC/加载 → 重新入队这些状态下StaticFindObject可能崩溃模态闸编辑器有模态弹窗 → 直接拒绝不往冻结上再叠操作通过后请求按action名查表找到对应处理器执行。执行期间还开着错误捕获即使处理器自认为成功只要引擎日志里出现 ensure 失败响应就会被改写成ENGINE_ERROR——AI 拿到的结果永远和 Unreal 日志对得上。四、长任务怎么办8 秒报平安27 秒给回执 ⏱️编辑器操作比如一次光照构建可能远超 HTTP 客户端的耐心。原生传输有一条独立的保活线程专门处理这件事设计见 plugins/EngineWire/Source/EngineWire/Private/MCP/AGENTS.md静默 8 秒向仍在执行的调用推送一次心跳内容来自DescribeEditorWork()——当前在跑哪个 action、跑了多久、最后的进度百分比、还有多少 shader 在编译27 秒返回一个task.state running的收据工作继续客户端可稍后用get_task_result取最终结果这个设计让慢不再是挂AI 客户端始终知道编辑器没死、在忙什么。五、公平性多客户端共享一个编辑器时 多个 AI 客户端同时连一个编辑器是 Route A 的常见场景。队列排空时不是先来全办完而是按会话轮转选取一批请求每个会话的旧请求一定先于新请求会话内 FIFO但任何会话都不会连续霸占队列头——轮转状态跨 tick 保持上一批刚服务完的会话不能抢下一批的头位McpQueueFairness.h。效果洪水式请求的客户端拿不到全部槽位其他会话的请求在一个轮转周期内必被服务。六、安全防线本地、令牌、同意制 机制说明仅回环监听两条传输默认只绑127.0.0.1非回环绑定必须同时开启 token 校验否则拒绝启动监听fail-closed能力令牌每项目自动生成于Saved/MCP/capability-token用恒定时间比较防时序侧信道McpSecureTokenCompare.h破坏性操作同意制删除类操作必须回传describe给出的consentGrant插件侧自行校验路径围栏资产路径限定在/Game、/Engine、/Script等白名单根内每 socket 速率限制超限返回RATE_LIMIT_EXCEEDED并关闭连接更多细节见 docs/security-and-receipts.md。七、我该选哪条传输选 Route A原生 HTTP你的客户端支持 HTTP 传输Claude Code、Cursor、VS Code想省掉 Node.js或需要多个客户端同时挂在一个编辑器上选 Route Bstdio你用 Claude Desktop 这类只认command启动方式的客户端或希望编辑器重启后自动恢复连接Node.js 端在编辑器离线时返回NOT_CONNECTED回来即通两条路殊途同归同一个unreal工具、同一套search → describe → execute渐进发现流程、同一套回执与同意机制。完整配置对照表在 README.md 的Configuration一节插件传输层的安全不变量清单见 plugins/EngineWire/Source/EngineWire/Private/Transport/AGENTS.md。八、架构一句话总结 传输层多线程、执行层单线程、排队层有公平、异常层有兜底。EngineWire 用一条游戏线程单修改车道把 AI 的不确定性挡在编辑器之外传输线程只管登记Core Ticker 每帧安全排空派发前连过三道闸长任务有保活线程报平安。这正是让 AI 安全驱动一个非线程安全的实时引擎最务实的答案。赞分享【免费下载链接】Unreal_mcpA comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal Engine through the native C Automation Bridge plugin. Built with TypeScript and C.项目地址https://gitcode.com/gh_mirrors/un/Unreal_mcp点击查看免费下载相关推荐终极指南如何利用boardgame.io事件驱动架构实现游戏逻辑完美解耦终极指南如何利用boardgame.io事件驱动架构实现游戏逻辑完美解耦 boardgame.io是一个专为回合制游戏设计的状态管理和多人网络框架其核心优势游戏开发如何轻松编辑Unreal Engine游戏存档ue save-rs完整使用指南如何轻松编辑Unreal Engine游戏存档ue save rs完整使用指南 ue save rs是一款强大的开源工具专为解析和生成Unreal Engi序列化游戏开发开发工具WordPress 小部件编辑器架构解析wordpress/edit-widgets 如何用区块驱动传统小部件WordPress 小部件编辑器架构解析wordpress/edit widgets 如何用区块驱动传统小部件 本文以 Gutenberg 仓库中的 pac后端前端上一篇3个步骤搭建AO3镜像站点从环境配置到本地部署的开发者指南下一篇零基础上手AO3镜像站点搭建从环境部署到性能优化全指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考