mcpField
C
ChiR24-unreal_mcp_server

ChiR24-unreal_mcp_server

远程服务
github.com/ChiR24媒体与设计993今天更新
代码仓库

关于 ChiR24-unreal_mcp_server

EngineWire 是面向 Unreal Engine 5.0–5.8 的编辑器插件和 MCP 服务,让 AI 客户端操作 Unreal Editor。它通过可搜索的单一 `unreal` 工具,提供 450 多项编辑器能力,并支持 HTTP 或 stdio。

主要功能

  1. 01创建和编辑关卡、Actor、Blueprint 与 UI
  2. 02处理材质、世界、玩法和特效
  3. 03运行 Play-In-Editor、截取画面并查看日志
  4. 04通过单一 `unreal` 工具搜索和执行能力
  5. 05通过原生 HTTP 或 stdio 代理连接

适用场景

  1. 01通过 AI 客户端构建或修改关卡
  2. 02创建 Blueprint 事件图和 UMG 布局
  3. 03测试玩法并检查编辑器输出
  4. 04生成材质、景观或 Niagara 特效

MCP 相关

EngineWire 插件在 Unreal Editor 内提供 MCP 服务。客户端可通过原生 HTTP 或 `unreal-engine-mcp-server` stdio 代理使用单一 `unreal` 工具。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://server.smithery.ai/@ChiR24/unreal_mcp_server/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

全部服务地址
Streamable HTTPhttps://server.smithery.ai/@ChiR24/unreal_mcp_server/mcp需要授权

工具

详细介绍

EngineWire:让任意 AI 助手都能在 Unreal Editor 中工作

EngineWire

许可证:MIT npm 在 Fab 上获取 MCP SDK Unreal Engine 5.0-5.8 MCP Registry 文档:Wiki 项目看板 讨论区

EngineWire 可将 Claude、Cursor、VS Code 或任何其他 MCP 客户端连接到正在运行的 Unreal Editor,
并通过原生 C++ 编辑器插件让它构建关卡、Blueprint、UI、材质、特效等内容。

🧭 一个工具,超过 400 项功能  ·  ⚙️ 原生 C++ 编辑器插件  ·  🌐 HTTP 或 stdio  ·  🔐 默认仅限本地且受令牌保护  ·  🎮 Unreal Engine 5.0 – 5.8

🌐 enginewire.dev  ·  🛒 Fab  ·  🚀 快速开始  ·  📖 Wiki  ·  📦 发布版本  ·  💬 讨论区

📌 这是哪个版本? 本 README 介绍的是稳定版 0.6.0:可在 Fab 和发布页面获取的插件,以及 npm 上的 unreal-engine-mcp-server(latest)。上一版本 0.5.30 提供 23 个独立工具,而不是一个工具;若继续使用 0.5.30 插件,就需要固定使用 [email protected]。请参阅从 0.5.x 升级。

目录 · 功能介绍 · 工作原理 · 快速开始 · unreal 工具 · 配置 · 安全性 · 引擎插件 · Docker · 文档 · 开发 · 社区


功能

🏗️ 关卡和 Actor
一次调用即可生成一个或数百个 Actor,将它们放置并附加到其他对象上,查找沉入地面的对象,以及加载、流式传输和保存关卡。

🧩 蓝图和 UI
创建蓝图、变量和组件,一次批量构建完整的事件图表,并布局 UMG 控件,还可通过预览图像进行检查。

🎨 材质和世界
材质图表和实例、程序化纹理、光照、地形、植被、Niagara 效果和 PCG 图表。

🕹️ 游戏玩法
角色和动画、Gameplay Ability System、AI(Behavior Trees、State Trees、EQS)、库存、网络和 Enhanced Input。

🎬 电影和音频
Level Sequences、摄像机、Movie Render Queue 和 Take Recorder;Sound Cues 和 MetaSounds。

🧪 运行并验证
使用合成输入运行 Play-In-Editor,截取模型可查看的屏幕截图,读取日志、进行性能分析、运行 Python,并打包构建版本。

总计超过 450 项功能,由单个 MCP 工具提供。助手通过搜索普通词语来查找这些功能,因此无需记住它们的名称。完整列表请见生成的操作参考。

Unreal Editor 5.8 展示使用 MCP 构建的平台游戏关卡;状态栏显示 MCP :3000 (1)
使用 MCP 构建的平台游戏关卡,展示于 Unreal Editor 5.8 中。右下角是插件状态:MCP :3000 (1),表示原生服务正在端口 3000 上运行,且有一个客户端已连接。

工作原理

架构:AI 客户端通过端口 3000 上的 Streamable HTTP 连接到 Unreal Editor 内的 EngineWire 插件,可直接连接(Route A),也可通过 Node.js stdio 代理连接(Route B);插件在游戏线程上调用编辑器 API

EngineWire 插件在编辑器内运行,在编辑器的游戏线程上完成所有工作,并自行提供 MCP 服务。客户端可通过以下两种方式之一连接;两种方式都使用同一个工具 unreal:

🌐 Route A · 原生 HTTP🧩 Route B · stdio
路径客户端 → 插件的 Streamable HTTP 服务 http://127.0.0.1:3000/mcp客户端 → unreal-engine-mcp-server(Node.js,stdio)→ 同一个 /mcp
Node.js不需要20.19 或更高版本
能力令牌客户端在 X-MCP-Capability-Token 标头中发送从项目读取,需提供 UE_PROJECT_PATH
编辑器重启客户端需要手动重新连接会话保持不变:编辑器恢复运行前,调用会返回 NOT_CONNECTED
适用场景Claude Code、Cursor、VS Code,以及多个客户端共享一个编辑器Claude Desktop、仅能启动本地命令的客户端,以及跨编辑器重启的长会话

所有服务都监听 127.0.0.1,并且需要项目的能力令牌,除非你更改该令牌。

快速开始

快速入门页面配有截图,介绍了整个流程。你需要 Unreal Engine 5.0 到 5.8。从 Fab 安装无需其他条件;从源代码构建插件则需要包含 C++ 代码的项目(仅蓝图项目可从 Fab 安装,或使用预编译二进制文件)。

1. 添加插件

从 Fab 安装(无需编译器)。 在 Fab 上获取 EngineWire。在 Epic Games Launcher 中,打开 Unreal Engine › Library › Fab Library,找到 EngineWire,然后为你的引擎版本点击 Install to Engine。打开项目,在 Edit › Plugins 中启用 EngineWire,然后重启编辑器。Fab 版本默认关闭原生服务:在 Edit › Project Settings › Plugins › EngineWire › Native MCP 中开启 Enable Native MCP Server,然后再次重启。Fab 更新需要经过 Epic 审核,因此 Fab 版本可能晚于此处的最新版本。

从发行版安装。 从发行版页面下载最新发行版中的 EngineWire-plugin-<version>.zip,并将其中的 EngineWire 文件夹复制到你的项目中:

MyGame/Plugins/EngineWire/

或者克隆此仓库:复制 plugins/EngineWire/,或在 .uproject 中通过 "AdditionalPluginDirectories": ["C:/Path/To/Unreal_mcp/plugins"] 引用该文件夹。

打开项目,让 Unreal 重新构建插件。插件加载后,状态栏会显示 MCP :3000 (0):插件在端口 3000 上提供 MCP 服务。如果看到 “Engine modules cannot be compiled at runtime”,请先在 Visual Studio、Rider 或 Xcode 中构建一次项目。更多信息请参阅安装指南。

https://github.com/user-attachments/assets/d8b86ebc-4364-48c9-9781-de854bf3ef7d

预构建二进制文件(仅 Blueprint 项目、团队)

在装有引擎和编译器的机器上构建一次插件,然后分发 zip 文件。目标机器无需安装编译器:

node scripts/package-plugin.mjs "C:/Program Files/Epic Games/UE_5.7"

这会生成 build/EngineWire-v<version>-UE5.7-<Platform>.zip,其中 <version> 是 package.json 中的版本(当前为 0.6.0)。将其解压到 YourProject/Plugins/。二进制文件仅适用于构建时对应的引擎次版本和平台:为 5.6 构建的版本无法在 5.5、5.7 或 5.8 中加载。

### 2. 连接客户端

路线 A · 原生 HTTP(无需 Node.js)

  1. Enable Native MCP Server 默认已开启(Edit › Project Settings › Plugins › EngineWire,端口为 3000);Fab 构建版本默认关闭。如果项目中该选项处于关闭状态,则需要将其开启并重启编辑器。

    插件设置中的 Native MCP 部分,已勾选 Enable Native MCP Server
  2. 读取插件生成的能力令牌:<YourProject>/Saved/MCP/capability-token。请像对待密码一样妥善保管。

  3. 将服务添加到客户端,并在 X-MCP-Capability-Token 标头中发送令牌。Claude Code:

    claude mcp add --transport http unreal-engine http://127.0.0.1:3000/mcp --header "X-MCP-Capability-Token: <token>"
    

    或在项目的 .mcp.json(Claude Code)中从环境变量读取令牌:

    {
      "mcpServers": {
        "unreal-engine": {
          "type": "http",
          "url": "http://127.0.0.1:3000/mcp",
          "headers": { "X-MCP-Capability-Token": "${UNREAL_MCP_TOKEN}" }
        }
      }
    }
    

    Cursor(.cursor/mcp.json)使用相同的 url 和 headers,但不包含 type。VS Code、Windsurf 等客户端:请参阅连接客户端。

  4. **检查连接:**客户端连接后,状态栏中的计数会增加。

    Unreal Editor 状态栏显示 MCP :3000 (1):端口 3000 上的原生 MCP 服务,已有一个客户端连接

路线 B · stdio(Node.js 20.19+)

此程序包是一个位于同一 /mcp 前端的小型 stdio 代理。客户端直接连接 /mcp 时,每当编辑器关闭或崩溃,连接会话都会丢失,必须手动重新连接。通过代理连接时,编辑器关闭期间每次调用都会返回 NOT_CONNECTED;编辑器重新运行后,首次调用即可连接,无需重新连接。代理会保留编辑器最后一次提供的工具列表,因此即使会话在编辑器启动前就已开始,也能获取实际工具。

将以下内容添加到客户端的 MCP 配置中,例如 Claude Desktop 的 claude_desktop_config.json:

{
  "mcpServers": {
    "unreal-engine": {
      "command": "npx",
      "args": ["-y", "unreal-engine-mcp-server"],
      "env": {
        "UE_PROJECT_PATH": "C:/Path/To/YourProject"
      }
    }
  }
}

UE_PROJECT_PATH(项目文件夹或其 .uproject 文件)用于让代理查找能力令牌(MCP_AUTOMATION_CAPABILITY_TOKEN 可覆盖此设置)。UNREAL_MCP_URL 用于将代理指向其他端点(默认为 http://127.0.0.1:3000/mcp)。请搭配 0.6 插件使用;0.5.x 插件提供的是 23 个独立工具,而非 unreal 网关。

3. 试用

保持编辑器打开,让助手执行 “列出当前关卡中的 Actor”、“在原点上方 300 个单位处生成一个点光源”,或 “截取视口截图”。如果无法连接,请参阅故障排除。

unreal 工具

两种路由都只公开一个 MCP 工具 unreal,包含四种操作。系统只会加载模型即将使用的契约,而不是数百个工具架构:

操作功能
search根据 2-4 个普通词语查找功能,例如 spawn actor 或 save level。每一行都包含可直接发送的 nextCall。
describe返回某项功能的准确契约:参数、架构、示例,以及必要时所需的同意授权
execute使用经过验证的参数运行某项功能,并返回数据以及一份变更回执
configure启用或禁用内部工具组;不会触及编辑器

网关流程:使用查询进行搜索会返回带有 nextCall 的行;使用工具和操作进行 describe 会返回契约;使用参数执行,并在需要时提供同意授权,会返回数据和一份列出变更、句柄和警告的回执

一次典型的交互:

{ "operation": "search", "query": "spawn actor" }
{ "operation": "describe", "tool": "control_actor", "action": "spawn" }
{
  "operation": "execute",
  "tool": "control_actor",
  "action": "spawn",
  "params": { "classPath": "/Script/Engine.PointLight", "actorName": "KeyLight", "location": [0, 0, 300] }
}
  • 参数严格校验。 未声明的名称会被拒绝,并返回 UNDECLARED_PARAMETER 以及允许的名称列表;每个错误都包含可执行的 nextCall。
  • 删除需要同意。 所有破坏性功能,以及某些有风险的写入操作,只有在提供来自 describe 的 consentGrant,并将其作为顶层 consent 字段传回后才会运行。
  • 名称。 调用时指定 tool + action 组合或功能 ID,例如 "capability": "control_actor.spawn"。

包含真实回复的完整参考:使用网关。

从直接工具调用迁移

两种路由上的单一 unreal 工具都是永久设置;无法选择退出,也无法恢复 23 个工具的列表。仍直接调用规范工具名称的客户端(通过 tools/call 使用 name: "manage_asset"、name: "control_actor" 等)会收到有界、可复制粘贴执行的 DIRECT_TOOL_CALL_REMOVED 回执,而不是路由调用。其 nextCall 只推进一级:对于未知名称,提供 { "operation": "search" };未提供操作时,提供 { "operation": "describe", "tool": "<tool>" };调用中已指定操作时,提供 { "operation": "execute", "tool": "<tool>", "action": "<action>", "params": { ... } }。通过 unreal 运行该 nextCall,即可完成迁移。参见升级。

协议版本

两种路由都会在 initialize 时协商 MCP 协议版本:2025-11-25(最新版本)、2025-06-18 或 2025-03-26。客户端请求较旧版本时,会收到 2025-11-25 作为响应。原生路由收到不受支持的 MCP-Protocol-Version 标头时,会返回 HTTP 400。两种路由也会按请求提供 MCP 2026-07-28,无需 initialize 或会话,并会用该版本响应 server/discover。详情请见:docs/protocol.md。

`unreal` 背后的 23 个内部工具

这些工具会在网关内部路由请求;客户端不会列出它们。更多信息请参阅工具参考。

类别工具涵盖内容
核心manage_asset资产和文件夹、材质和材质图、纹理和渲染目标、数据表、结构体、枚举、源代码管理
核心manage_blueprint蓝图、组件、变量、事件图、UMG 小部件、布局、绑定、小部件动画
核心control_actor生成、变换、附加、组件、材质、标签、放置审查
核心control_editor编辑器内运行、合成输入、屏幕截图、视口摄像机、撤销、编辑器偏好设置
核心manage_level创建、加载、保存、流送、导入和导出关卡;世界设置;光照构建
核心system_control控制台命令、日志、项目设置、性能分析、构建和打包、测试、Python
核心inspect读取和写入任意 UObject 的属性、组件和类信息
核心manage_tools哪些内部工具已启用(通过 configure)
世界build_environment地形、植被、灯光和天空、水、天气、样条线、程序化地形
世界manage_level_structure子关卡、World Partition、流送、数据层、HLOD、体积
世界manage_geometryGeometry Script 网格:布尔运算、变形器、UV、碰撞、LOD、多边形笼、细分曲面、材质 ID、顶点颜色遮罩
世界manage_pcgPCG 图:创建、添加和连接节点、执行
游戏玩法animation_physics动画蓝图、混合空间、蒙太奇、骨架、Control Rig 和 IK、布娃娃、布料、载具
游戏玩法manage_character角色蓝图、移动、MetaHuman
游戏玩法manage_combat武器、投射物、命中检测
游戏玩法manage_effectNiagara 系统、发射器和模块、调试形状
游戏玩法manage_gasGameplay Ability System:能力、属性、效果
游戏玩法manage_aiAI 控制器、行为树、EQS、State Trees、Smart Objects、感知、导航
游戏玩法manage_inventory物品、战利品表、制作配方
游戏玩法manage_interaction门和其他可交互对象
实用工具manage_audio声音、音频组件、Sound Cues、MetaSounds、衰减、混音
实用工具manage_sequenceLevel Sequences、Movie Render Queue、媒体、Take Recorder、回放
实用工具manage_networking复制、RPC、会话、游戏框架类、Enhanced Input
## 配置

大多数配置只需修改一项设置:Route B 需要设置 UE_PROJECT_PATH;Route A 无需设置。所有设置均列在配置页面。

插件设置(项目设置 › 插件 › EngineWire,保存在 Config/DefaultGame.ini 中):

设置默认值
启用 Native MCP Server开通过 HTTP 在 /mcp 提供 MCP 服务(两种路由都会使用)
Native MCP Port3000编辑器进程的 MCP_NATIVE_PORT 环境变量会覆盖此设置
Listen Ports8090,8091插件的 WebSocket 监听端口;两种路由都不会使用
要求 Capability Token开两种路由都会拒绝不带令牌的客户端
允许非回环地址关两种监听器的 LAN 访问。请参阅安全。

环境变量(仅用于 Route B,在客户端的 env 块中):

变量默认值
UE_PROJECT_PATH未设置项目文件夹或 .uproject;用于查找令牌
MCP_AUTOMATION_CAPABILITY_TOKEN从令牌文件读取当代理无法读取项目文件夹时要提供的令牌
UNREAL_MCP_URLhttp://127.0.0.1:3000/mcp编辑器的 /mcp 端点
LOG_LEVELinfodebug、info、warn 或 error;日志输出到 stderr

安全

  • 默认仅限本地访问。 两种路由都只监听 127.0.0.1。LAN 访问需要启用 允许非回环地址,且原生服务只有在启用 要求 Capability Token 时才会绑定到非回环地址。
  • Capability Token。 每个项目都会生成一个令牌,保存在 <Project>/Saved/MCP/capability-token(输入 Capability Token 的值可覆盖该令牌),并通过恒定时间比较进行校验。删除该文件并重启编辑器即可轮换令牌。
  • 破坏性操作需征得同意。 删除操作和其他部分写入操作需要为每次调用授予同意,插件会自行检查。
  • 安全防护。 资源路径仅限 /Game、/Engine、/Script、/Temp 和 /Niagara,内容路径也可以位于已连接编辑器报告的挂载点下;服务器视为文件的参数(例如 filePath,以及即使命名的是资源也包括 outputPath)绝不会使用报告的挂载点;会串联命令或退出编辑器的控制台命令会被阻止;自动化无法访问插件自身的设置。

详情请参阅安全。请通过 GitHub 安全公告私下报告漏洞。

引擎插件

该桥接插件声明了对引擎插件的依赖,因此 Unreal 会在启用该桥接插件时一并启用它们。

必需(始终与桥接插件一同启用)
插件用途
Python Editor Script Plugin基于 Python 的编辑器自动化、system_control Python 执行
Editor Scripting Utilities资产和 Actor 子系统操作
Niagara视觉效果
Gameplay Abilitiesmanage_gas
Smart ObjectsAI 智能对象
可选(存在时使用,不存在时跳过)
插件用途
Level Sequence Editor、Takes、Movie Render Pipeline、Movie Pipeline Mask Render Pass、Electra Playermanage_sequence:Sequencer、Take Recorder、Movie Render Queue、媒体播放
Control Rig、RigVM、IK Rig、Animation Dataanimation_physics:Control Rig 和 IK
Chaos Vehicles、Chaos Clothanimation_physics:车辆和布料
Niagara Editormanage_effect:Niagara 创作
Behavior Tree Editor、Environment Query Editor、StateTree、Mass Gameplaymanage_ai
Geometry Scripting、Geometry Processing、Mesh Modeling Toolset、Procedural Mesh Componentmanage_geometry(Catmull-Clark、Loop 和双线性细分需要 Mesh Modeling Toolset)
PCGmanage_pcg,仅当项目本身启用 PCG 插件时才会编译进去
MetaSound、Synthesismanage_audio:MetaSound 创作
Enhanced Input、Online Subsystem、Online Subsystem Utilsmanage_networking:输入映射、会话
Interchange、Interchange OpenUSD、Data Validation、StructUtils导入/导出、验证、结构体辅助工具
Fab、BridgeFab 资产库访问(可选的 EngineWireFab 模块)

该插件支持从 5.0 到 5.8 的所有 Unreal Engine 次要版本。如果无法在你的版本上构建,请附上构建日志提交问题。

Docker

该镜像运行 stdio 代理。它必须能够访问编辑器的 127.0.0.1:3000 上的 /mcp,因此请使用主机网络(Linux),并传入令牌,因为容器无法读取你的项目文件夹:

docker build -t unreal-mcp .
docker run -i --rm --network host -e MCP_AUTOMATION_CAPABILITY_TOKEN=<token> unreal-mcp

使用 -i,不要使用 -t:TTY 会破坏 stdout 上的 MCP 流。

文档

📖 Wiki快速入门、安装、连接客户端、使用网关、配置、安全、故障排除、常见问题、升级
📋 操作参考每项功能及其影响、范围和许可要求,内容由功能记录生成
🔌 网关客户端指南网关契约,以及支持每项声明的源文件
📡 协议传输方式、版本协商、取消
🔐 安全与回执范围、许可、路径门控、幂等性、拒绝代码
🧪 测试指南测试套件以及如何添加测试用例
🧩 扩展插件添加编辑器操作:记录、处理器、路由和测试,以及插件代码规则
🗺️ 路线图开发路线图
📝 变更日志各版本的变更内容

开发

npm install
npm run build              # clean + compile TypeScript to dist/
npm run dev                # run from source with ts-node
npm run lint               # ESLint (CI fails on any warning)
npm run type-check         # tsc --noEmit, sources and tests
npm run test:unit          # Vitest unit tests (no Unreal required)
npm run test:params        # strict parameter audit
npm run registry:generate  # capability records -> generated contracts, native shards, action reference
npm run registry:check     # fail if generated artifacts drift
npm run manifest:check     # fail if the gateway manifest drifts
npm run eval:check         # search-ranking corpus
npm run version:check      # all version sources agree
npm test                   # integration suite (needs a live Unreal Editor serving /mcp)

src/tools/catalog/capabilities/records/ 中的能力记录是唯一事实来源;所有 *.generated.* 文件、插件的 MCP/Generated/ 分片和操作参考文档均由它们生成。切勿手动编辑生成的文件。如何添加能力:开发。

CI 按顺序运行:ESLint(npx eslint . --max-warnings=0)、类型检查、单元测试、registry:check、manifest:check、headers:check、严格参数审计(test:params)和 eval:check,然后运行阻断式运行时依赖审计(npm audit --omit=dev --audit-level=moderate)以及仅供参考的全树审计。Node 20.19 / 26 矩阵还会执行 build。仅当配置了 Unreal Engine 根目录时才会打包插件,因为 CI 运行器不包含引擎。发布压缩包不包含 Binaries/、Intermediate/ 和 Saved/。

社区

💬 讨论提问、分享想法和展示成果
🐞 问题Bug 报告和功能请求
🗺️ 项目看板路线图进展和优先事项

**贡献:**请保持拉取请求小而专注,并使用 Conventional Commits 标题;报告 Bug 时请附上复现步骤;遵循现有代码风格。请参阅 CONTRIBUTING.md。

许可证

MIT。请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。