unreal-engine-mcp-server 0.4.7 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (438) hide show
  1. package/.env.example +26 -0
  2. package/.env.production +38 -7
  3. package/.eslintrc.json +0 -54
  4. package/.eslintrc.override.json +8 -0
  5. package/.github/ISSUE_TEMPLATE/bug_report.yml +94 -0
  6. package/.github/ISSUE_TEMPLATE/config.yml +8 -0
  7. package/.github/ISSUE_TEMPLATE/feature_request.yml +56 -0
  8. package/.github/copilot-instructions.md +478 -45
  9. package/.github/dependabot.yml +19 -0
  10. package/.github/labeler.yml +24 -0
  11. package/.github/labels.yml +70 -0
  12. package/.github/pull_request_template.md +42 -0
  13. package/.github/release-drafter.yml +148 -0
  14. package/.github/workflows/auto-merge.yml +38 -0
  15. package/.github/workflows/ci.yml +38 -0
  16. package/.github/workflows/dependency-review.yml +17 -0
  17. package/.github/workflows/gemini-issue-triage.yml +172 -0
  18. package/.github/workflows/greetings.yml +23 -0
  19. package/.github/workflows/labeler.yml +16 -0
  20. package/.github/workflows/links.yml +80 -0
  21. package/.github/workflows/pr-size-labeler.yml +137 -0
  22. package/.github/workflows/publish-mcp.yml +12 -7
  23. package/.github/workflows/release-drafter.yml +23 -0
  24. package/.github/workflows/release.yml +112 -0
  25. package/.github/workflows/semantic-pull-request.yml +35 -0
  26. package/.github/workflows/smoke-test.yml +36 -0
  27. package/.github/workflows/stale.yml +28 -0
  28. package/CHANGELOG.md +267 -31
  29. package/CONTRIBUTING.md +140 -0
  30. package/README.md +166 -71
  31. package/claude_desktop_config_example.json +7 -6
  32. package/dist/automation/bridge.d.ts +50 -0
  33. package/dist/automation/bridge.js +452 -0
  34. package/dist/automation/connection-manager.d.ts +23 -0
  35. package/dist/automation/connection-manager.js +107 -0
  36. package/dist/automation/handshake.d.ts +11 -0
  37. package/dist/automation/handshake.js +89 -0
  38. package/dist/automation/index.d.ts +3 -0
  39. package/dist/automation/index.js +3 -0
  40. package/dist/automation/message-handler.d.ts +12 -0
  41. package/dist/automation/message-handler.js +149 -0
  42. package/dist/automation/request-tracker.d.ts +25 -0
  43. package/dist/automation/request-tracker.js +98 -0
  44. package/dist/automation/types.d.ts +130 -0
  45. package/dist/automation/types.js +2 -0
  46. package/dist/cli.js +32 -5
  47. package/dist/config.d.ts +27 -0
  48. package/dist/config.js +60 -0
  49. package/dist/constants.d.ts +12 -0
  50. package/dist/constants.js +12 -0
  51. package/dist/graphql/resolvers.d.ts +268 -0
  52. package/dist/graphql/resolvers.js +743 -0
  53. package/dist/graphql/schema.d.ts +5 -0
  54. package/dist/graphql/schema.js +437 -0
  55. package/dist/graphql/server.d.ts +26 -0
  56. package/dist/graphql/server.js +115 -0
  57. package/dist/graphql/types.d.ts +7 -0
  58. package/dist/graphql/types.js +2 -0
  59. package/dist/handlers/resource-handlers.d.ts +20 -0
  60. package/dist/handlers/resource-handlers.js +180 -0
  61. package/dist/index.d.ts +31 -18
  62. package/dist/index.js +119 -619
  63. package/dist/prompts/index.js +4 -4
  64. package/dist/resources/actors.d.ts +17 -12
  65. package/dist/resources/actors.js +56 -76
  66. package/dist/resources/assets.d.ts +6 -14
  67. package/dist/resources/assets.js +115 -147
  68. package/dist/resources/levels.d.ts +13 -13
  69. package/dist/resources/levels.js +25 -34
  70. package/dist/server/resource-registry.d.ts +20 -0
  71. package/dist/server/resource-registry.js +37 -0
  72. package/dist/server/tool-registry.d.ts +23 -0
  73. package/dist/server/tool-registry.js +322 -0
  74. package/dist/server-setup.d.ts +21 -0
  75. package/dist/server-setup.js +111 -0
  76. package/dist/services/health-monitor.d.ts +34 -0
  77. package/dist/services/health-monitor.js +105 -0
  78. package/dist/services/metrics-server.d.ts +11 -0
  79. package/dist/services/metrics-server.js +105 -0
  80. package/dist/tools/actors.d.ts +147 -9
  81. package/dist/tools/actors.js +350 -311
  82. package/dist/tools/animation.d.ts +135 -4
  83. package/dist/tools/animation.js +510 -411
  84. package/dist/tools/assets.d.ts +117 -19
  85. package/dist/tools/assets.js +259 -284
  86. package/dist/tools/audio.d.ts +102 -42
  87. package/dist/tools/audio.js +272 -685
  88. package/dist/tools/base-tool.d.ts +17 -0
  89. package/dist/tools/base-tool.js +46 -0
  90. package/dist/tools/behavior-tree.d.ts +94 -0
  91. package/dist/tools/behavior-tree.js +39 -0
  92. package/dist/tools/blueprint/helpers.d.ts +29 -0
  93. package/dist/tools/blueprint/helpers.js +182 -0
  94. package/dist/tools/blueprint.d.ts +228 -118
  95. package/dist/tools/blueprint.js +685 -832
  96. package/dist/tools/consolidated-tool-definitions.d.ts +5462 -1781
  97. package/dist/tools/consolidated-tool-definitions.js +829 -496
  98. package/dist/tools/consolidated-tool-handlers.d.ts +2 -1
  99. package/dist/tools/consolidated-tool-handlers.js +211 -1026
  100. package/dist/tools/debug.d.ts +143 -85
  101. package/dist/tools/debug.js +234 -180
  102. package/dist/tools/dynamic-handler-registry.d.ts +11 -0
  103. package/dist/tools/dynamic-handler-registry.js +101 -0
  104. package/dist/tools/editor.d.ts +139 -18
  105. package/dist/tools/editor.js +239 -244
  106. package/dist/tools/engine.d.ts +10 -4
  107. package/dist/tools/engine.js +13 -5
  108. package/dist/tools/environment.d.ts +36 -0
  109. package/dist/tools/environment.js +267 -0
  110. package/dist/tools/foliage.d.ts +105 -14
  111. package/dist/tools/foliage.js +219 -331
  112. package/dist/tools/handlers/actor-handlers.d.ts +3 -0
  113. package/dist/tools/handlers/actor-handlers.js +232 -0
  114. package/dist/tools/handlers/animation-handlers.d.ts +3 -0
  115. package/dist/tools/handlers/animation-handlers.js +185 -0
  116. package/dist/tools/handlers/argument-helper.d.ts +16 -0
  117. package/dist/tools/handlers/argument-helper.js +80 -0
  118. package/dist/tools/handlers/asset-handlers.d.ts +3 -0
  119. package/dist/tools/handlers/asset-handlers.js +496 -0
  120. package/dist/tools/handlers/audio-handlers.d.ts +3 -0
  121. package/dist/tools/handlers/audio-handlers.js +166 -0
  122. package/dist/tools/handlers/blueprint-handlers.d.ts +4 -0
  123. package/dist/tools/handlers/blueprint-handlers.js +358 -0
  124. package/dist/tools/handlers/common-handlers.d.ts +14 -0
  125. package/dist/tools/handlers/common-handlers.js +56 -0
  126. package/dist/tools/handlers/editor-handlers.d.ts +3 -0
  127. package/dist/tools/handlers/editor-handlers.js +119 -0
  128. package/dist/tools/handlers/effect-handlers.d.ts +3 -0
  129. package/dist/tools/handlers/effect-handlers.js +171 -0
  130. package/dist/tools/handlers/environment-handlers.d.ts +3 -0
  131. package/dist/tools/handlers/environment-handlers.js +170 -0
  132. package/dist/tools/handlers/graph-handlers.d.ts +3 -0
  133. package/dist/tools/handlers/graph-handlers.js +90 -0
  134. package/dist/tools/handlers/input-handlers.d.ts +3 -0
  135. package/dist/tools/handlers/input-handlers.js +21 -0
  136. package/dist/tools/handlers/inspect-handlers.d.ts +3 -0
  137. package/dist/tools/handlers/inspect-handlers.js +383 -0
  138. package/dist/tools/handlers/level-handlers.d.ts +3 -0
  139. package/dist/tools/handlers/level-handlers.js +237 -0
  140. package/dist/tools/handlers/lighting-handlers.d.ts +3 -0
  141. package/dist/tools/handlers/lighting-handlers.js +144 -0
  142. package/dist/tools/handlers/performance-handlers.d.ts +3 -0
  143. package/dist/tools/handlers/performance-handlers.js +130 -0
  144. package/dist/tools/handlers/pipeline-handlers.d.ts +3 -0
  145. package/dist/tools/handlers/pipeline-handlers.js +110 -0
  146. package/dist/tools/handlers/sequence-handlers.d.ts +3 -0
  147. package/dist/tools/handlers/sequence-handlers.js +376 -0
  148. package/dist/tools/handlers/system-handlers.d.ts +4 -0
  149. package/dist/tools/handlers/system-handlers.js +506 -0
  150. package/dist/tools/input.d.ts +19 -0
  151. package/dist/tools/input.js +89 -0
  152. package/dist/tools/introspection.d.ts +103 -40
  153. package/dist/tools/introspection.js +425 -568
  154. package/dist/tools/landscape.d.ts +97 -36
  155. package/dist/tools/landscape.js +280 -409
  156. package/dist/tools/level.d.ts +130 -10
  157. package/dist/tools/level.js +639 -675
  158. package/dist/tools/lighting.d.ts +77 -38
  159. package/dist/tools/lighting.js +441 -943
  160. package/dist/tools/logs.d.ts +3 -3
  161. package/dist/tools/logs.js +5 -57
  162. package/dist/tools/materials.d.ts +91 -24
  163. package/dist/tools/materials.js +190 -118
  164. package/dist/tools/niagara.d.ts +149 -39
  165. package/dist/tools/niagara.js +232 -182
  166. package/dist/tools/performance.d.ts +27 -12
  167. package/dist/tools/performance.js +204 -122
  168. package/dist/tools/physics.d.ts +32 -77
  169. package/dist/tools/physics.js +171 -582
  170. package/dist/tools/property-dictionary.d.ts +13 -0
  171. package/dist/tools/property-dictionary.js +82 -0
  172. package/dist/tools/sequence.d.ts +73 -48
  173. package/dist/tools/sequence.js +196 -748
  174. package/dist/tools/tool-definition-utils.d.ts +59 -0
  175. package/dist/tools/tool-definition-utils.js +35 -0
  176. package/dist/tools/ui.d.ts +66 -34
  177. package/dist/tools/ui.js +134 -214
  178. package/dist/types/env.d.ts +0 -3
  179. package/dist/types/env.js +0 -7
  180. package/dist/types/tool-interfaces.d.ts +898 -0
  181. package/dist/types/tool-interfaces.js +2 -0
  182. package/dist/types/tool-types.d.ts +183 -19
  183. package/dist/types/tool-types.js +0 -4
  184. package/dist/unreal-bridge.d.ts +24 -131
  185. package/dist/unreal-bridge.js +364 -1506
  186. package/dist/utils/command-validator.d.ts +9 -0
  187. package/dist/utils/command-validator.js +67 -0
  188. package/dist/utils/elicitation.d.ts +1 -1
  189. package/dist/utils/elicitation.js +12 -15
  190. package/dist/utils/error-handler.d.ts +2 -51
  191. package/dist/utils/error-handler.js +11 -87
  192. package/dist/utils/ini-reader.d.ts +3 -0
  193. package/dist/utils/ini-reader.js +69 -0
  194. package/dist/utils/logger.js +9 -6
  195. package/dist/utils/normalize.d.ts +3 -0
  196. package/dist/utils/normalize.js +56 -0
  197. package/dist/utils/response-factory.d.ts +7 -0
  198. package/dist/utils/response-factory.js +33 -0
  199. package/dist/utils/response-validator.d.ts +3 -24
  200. package/dist/utils/response-validator.js +130 -81
  201. package/dist/utils/result-helpers.d.ts +4 -5
  202. package/dist/utils/result-helpers.js +15 -16
  203. package/dist/utils/safe-json.js +5 -11
  204. package/dist/utils/unreal-command-queue.d.ts +24 -0
  205. package/dist/utils/unreal-command-queue.js +120 -0
  206. package/dist/utils/validation.d.ts +0 -40
  207. package/dist/utils/validation.js +1 -78
  208. package/dist/wasm/index.d.ts +70 -0
  209. package/dist/wasm/index.js +535 -0
  210. package/docs/GraphQL-API.md +888 -0
  211. package/docs/Migration-Guide-v0.5.0.md +692 -0
  212. package/docs/Roadmap.md +53 -0
  213. package/docs/WebAssembly-Integration.md +628 -0
  214. package/docs/editor-plugin-extension.md +370 -0
  215. package/docs/handler-mapping.md +242 -0
  216. package/docs/native-automation-progress.md +128 -0
  217. package/docs/testing-guide.md +423 -0
  218. package/mcp-config-example.json +6 -6
  219. package/package.json +60 -27
  220. package/plugins/McpAutomationBridge/Config/FilterPlugin.ini +8 -0
  221. package/plugins/McpAutomationBridge/McpAutomationBridge.uplugin +64 -0
  222. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/McpAutomationBridge.Build.cs +189 -0
  223. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeGlobals.cpp +22 -0
  224. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeGlobals.h +30 -0
  225. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeHelpers.h +1983 -0
  226. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeModule.cpp +72 -0
  227. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeSettings.cpp +46 -0
  228. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeSubsystem.cpp +581 -0
  229. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AnimationHandlers.cpp +2394 -0
  230. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AssetQueryHandlers.cpp +300 -0
  231. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AssetWorkflowHandlers.cpp +2807 -0
  232. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AudioHandlers.cpp +1087 -0
  233. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BehaviorTreeHandlers.cpp +488 -0
  234. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintCreationHandlers.cpp +643 -0
  235. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintCreationHandlers.h +31 -0
  236. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintGraphHandlers.cpp +1184 -0
  237. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintHandlers.cpp +5652 -0
  238. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintHandlers_List.cpp +152 -0
  239. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_ControlHandlers.cpp +2614 -0
  240. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_DebugHandlers.cpp +42 -0
  241. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EditorFunctionHandlers.cpp +1237 -0
  242. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EffectHandlers.cpp +1701 -0
  243. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EnvironmentHandlers.cpp +2145 -0
  244. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_FoliageHandlers.cpp +954 -0
  245. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_InputHandlers.cpp +209 -0
  246. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_InsightsHandlers.cpp +41 -0
  247. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LandscapeHandlers.cpp +1164 -0
  248. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LevelHandlers.cpp +762 -0
  249. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LightingHandlers.cpp +634 -0
  250. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LogHandlers.cpp +136 -0
  251. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_MaterialGraphHandlers.cpp +494 -0
  252. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_NiagaraGraphHandlers.cpp +278 -0
  253. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_NiagaraHandlers.cpp +625 -0
  254. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PerformanceHandlers.cpp +401 -0
  255. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PipelineHandlers.cpp +67 -0
  256. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_ProcessRequest.cpp +735 -0
  257. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PropertyHandlers.cpp +2634 -0
  258. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_RenderHandlers.cpp +189 -0
  259. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SCSHandlers.cpp +917 -0
  260. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SCSHandlers.h +39 -0
  261. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SequenceHandlers.cpp +2670 -0
  262. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SequencerHandlers.cpp +519 -0
  263. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_TestHandlers.cpp +38 -0
  264. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_UiHandlers.cpp +668 -0
  265. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_WorldPartitionHandlers.cpp +346 -0
  266. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpBridgeWebSocket.cpp +1330 -0
  267. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpBridgeWebSocket.h +149 -0
  268. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpConnectionManager.cpp +783 -0
  269. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpAutomationBridgeSettings.h +115 -0
  270. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpAutomationBridgeSubsystem.h +796 -0
  271. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpConnectionManager.h +117 -0
  272. package/scripts/check-unreal-connection.mjs +19 -0
  273. package/scripts/clean-tmp.js +23 -0
  274. package/scripts/patch-wasm.js +26 -0
  275. package/scripts/run-all-tests.mjs +131 -0
  276. package/scripts/smoke-test.ts +94 -0
  277. package/scripts/sync-mcp-plugin.js +143 -0
  278. package/scripts/test-no-plugin-alternates.mjs +113 -0
  279. package/scripts/validate-server.js +46 -0
  280. package/scripts/verify-automation-bridge.js +200 -0
  281. package/server.json +57 -21
  282. package/src/automation/bridge.ts +558 -0
  283. package/src/automation/connection-manager.ts +130 -0
  284. package/src/automation/handshake.ts +99 -0
  285. package/src/automation/index.ts +2 -0
  286. package/src/automation/message-handler.ts +167 -0
  287. package/src/automation/request-tracker.ts +123 -0
  288. package/src/automation/types.ts +107 -0
  289. package/src/cli.ts +33 -6
  290. package/src/config.ts +73 -0
  291. package/src/constants.ts +12 -0
  292. package/src/graphql/resolvers.ts +1010 -0
  293. package/src/graphql/schema.ts +452 -0
  294. package/src/graphql/server.ts +154 -0
  295. package/src/graphql/types.ts +7 -0
  296. package/src/handlers/resource-handlers.ts +186 -0
  297. package/src/index.ts +152 -663
  298. package/src/prompts/index.ts +4 -4
  299. package/src/resources/actors.ts +58 -76
  300. package/src/resources/assets.ts +147 -134
  301. package/src/resources/levels.ts +28 -33
  302. package/src/server/resource-registry.ts +47 -0
  303. package/src/server/tool-registry.ts +354 -0
  304. package/src/server-setup.ts +148 -0
  305. package/src/services/health-monitor.ts +132 -0
  306. package/src/services/metrics-server.ts +142 -0
  307. package/src/tools/actors.ts +417 -322
  308. package/src/tools/animation.ts +671 -461
  309. package/src/tools/assets.ts +353 -289
  310. package/src/tools/audio.ts +323 -766
  311. package/src/tools/base-tool.ts +52 -0
  312. package/src/tools/behavior-tree.ts +45 -0
  313. package/src/tools/blueprint/helpers.ts +189 -0
  314. package/src/tools/blueprint.ts +787 -965
  315. package/src/tools/consolidated-tool-definitions.ts +993 -515
  316. package/src/tools/consolidated-tool-handlers.ts +272 -1139
  317. package/src/tools/debug.ts +292 -187
  318. package/src/tools/dynamic-handler-registry.ts +151 -0
  319. package/src/tools/editor.ts +309 -246
  320. package/src/tools/engine.ts +14 -3
  321. package/src/tools/environment.ts +287 -0
  322. package/src/tools/foliage.ts +314 -379
  323. package/src/tools/handlers/actor-handlers.ts +271 -0
  324. package/src/tools/handlers/animation-handlers.ts +237 -0
  325. package/src/tools/handlers/argument-helper.ts +142 -0
  326. package/src/tools/handlers/asset-handlers.ts +532 -0
  327. package/src/tools/handlers/audio-handlers.ts +194 -0
  328. package/src/tools/handlers/blueprint-handlers.ts +380 -0
  329. package/src/tools/handlers/common-handlers.ts +87 -0
  330. package/src/tools/handlers/editor-handlers.ts +123 -0
  331. package/src/tools/handlers/effect-handlers.ts +220 -0
  332. package/src/tools/handlers/environment-handlers.ts +183 -0
  333. package/src/tools/handlers/graph-handlers.ts +116 -0
  334. package/src/tools/handlers/input-handlers.ts +28 -0
  335. package/src/tools/handlers/inspect-handlers.ts +450 -0
  336. package/src/tools/handlers/level-handlers.ts +252 -0
  337. package/src/tools/handlers/lighting-handlers.ts +147 -0
  338. package/src/tools/handlers/performance-handlers.ts +132 -0
  339. package/src/tools/handlers/pipeline-handlers.ts +127 -0
  340. package/src/tools/handlers/sequence-handlers.ts +415 -0
  341. package/src/tools/handlers/system-handlers.ts +564 -0
  342. package/src/tools/input.ts +101 -0
  343. package/src/tools/introspection.ts +493 -584
  344. package/src/tools/landscape.ts +394 -489
  345. package/src/tools/level.ts +752 -694
  346. package/src/tools/lighting.ts +583 -984
  347. package/src/tools/logs.ts +9 -57
  348. package/src/tools/materials.ts +231 -121
  349. package/src/tools/niagara.ts +293 -168
  350. package/src/tools/performance.ts +320 -168
  351. package/src/tools/physics.ts +268 -613
  352. package/src/tools/property-dictionary.ts +98 -0
  353. package/src/tools/sequence.ts +255 -815
  354. package/src/tools/tool-definition-utils.ts +35 -0
  355. package/src/tools/ui.ts +207 -283
  356. package/src/types/env.ts +0 -10
  357. package/src/types/tool-interfaces.ts +250 -0
  358. package/src/types/tool-types.ts +243 -21
  359. package/src/unreal-bridge.ts +460 -1550
  360. package/src/utils/command-validator.ts +75 -0
  361. package/src/utils/elicitation.ts +10 -7
  362. package/src/utils/error-handler.ts +14 -90
  363. package/src/utils/ini-reader.ts +86 -0
  364. package/src/utils/logger.ts +8 -3
  365. package/src/utils/normalize.ts +60 -0
  366. package/src/utils/response-factory.ts +39 -0
  367. package/src/utils/response-validator.ts +176 -56
  368. package/src/utils/result-helpers.ts +21 -19
  369. package/src/utils/safe-json.ts +14 -11
  370. package/src/utils/unreal-command-queue.ts +152 -0
  371. package/src/utils/validation.ts +4 -1
  372. package/src/wasm/index.ts +838 -0
  373. package/test-server.mjs +100 -0
  374. package/tests/run-unreal-tool-tests.mjs +242 -14
  375. package/tests/test-animation.mjs +44 -0
  376. package/tests/test-asset-advanced.mjs +82 -0
  377. package/tests/test-asset-errors.mjs +35 -0
  378. package/tests/test-audio.mjs +219 -0
  379. package/tests/test-automation-timeouts.mjs +98 -0
  380. package/tests/test-behavior-tree.mjs +261 -0
  381. package/tests/test-blueprint-events.mjs +35 -0
  382. package/tests/test-blueprint-graph.mjs +79 -0
  383. package/tests/test-blueprint.mjs +577 -0
  384. package/tests/test-client-mode.mjs +86 -0
  385. package/tests/test-console-command.mjs +56 -0
  386. package/tests/test-control-actor.mjs +425 -0
  387. package/tests/test-control-editor.mjs +80 -0
  388. package/tests/test-extra-tools.mjs +38 -0
  389. package/tests/test-graphql.mjs +322 -0
  390. package/tests/test-inspect.mjs +72 -0
  391. package/tests/test-landscape.mjs +60 -0
  392. package/tests/test-manage-asset.mjs +438 -0
  393. package/tests/test-manage-level.mjs +70 -0
  394. package/tests/test-materials.mjs +356 -0
  395. package/tests/test-niagara.mjs +185 -0
  396. package/tests/test-no-inline-python.mjs +122 -0
  397. package/tests/test-plugin-handshake.mjs +82 -0
  398. package/tests/test-render.mjs +33 -0
  399. package/tests/test-runner.mjs +933 -0
  400. package/tests/test-search-assets.mjs +66 -0
  401. package/tests/test-sequence.mjs +68 -0
  402. package/tests/test-system.mjs +57 -0
  403. package/tests/test-wasm.mjs +193 -0
  404. package/tests/test-world-partition.mjs +215 -0
  405. package/tsconfig.json +3 -3
  406. package/wasm/Cargo.lock +363 -0
  407. package/wasm/Cargo.toml +42 -0
  408. package/wasm/LICENSE +21 -0
  409. package/wasm/README.md +253 -0
  410. package/wasm/src/dependency_resolver.rs +377 -0
  411. package/wasm/src/lib.rs +153 -0
  412. package/wasm/src/property_parser.rs +271 -0
  413. package/wasm/src/transform_math.rs +396 -0
  414. package/wasm/tests/integration.rs +109 -0
  415. package/.github/workflows/smithery-build.yml +0 -29
  416. package/dist/tools/build_environment_advanced.d.ts +0 -65
  417. package/dist/tools/build_environment_advanced.js +0 -633
  418. package/dist/tools/rc.d.ts +0 -110
  419. package/dist/tools/rc.js +0 -437
  420. package/dist/tools/visual.d.ts +0 -40
  421. package/dist/tools/visual.js +0 -282
  422. package/dist/utils/http.d.ts +0 -6
  423. package/dist/utils/http.js +0 -151
  424. package/dist/utils/python-output.d.ts +0 -18
  425. package/dist/utils/python-output.js +0 -290
  426. package/dist/utils/python.d.ts +0 -2
  427. package/dist/utils/python.js +0 -4
  428. package/dist/utils/stdio-redirect.d.ts +0 -2
  429. package/dist/utils/stdio-redirect.js +0 -20
  430. package/docs/unreal-tool-test-cases.md +0 -574
  431. package/smithery.yaml +0 -29
  432. package/src/tools/build_environment_advanced.ts +0 -732
  433. package/src/tools/rc.ts +0 -515
  434. package/src/tools/visual.ts +0 -281
  435. package/src/utils/http.ts +0 -187
  436. package/src/utils/python-output.ts +0 -351
  437. package/src/utils/python.ts +0 -3
  438. package/src/utils/stdio-redirect.ts +0 -18
@@ -0,0 +1,140 @@
1
+ # Contributing to Unreal Engine MCP Server
2
+
3
+ Thank you for your interest in contributing! This document provides guidelines and instructions for contributing.
4
+
5
+ ## 📋 Table of Contents
6
+
7
+ - [Code of Conduct](#code-of-conduct)
8
+ - [Getting Started](#getting-started)
9
+ - [Development Workflow](#development-workflow)
10
+ - [Pull Request Process](#pull-request-process)
11
+ - [Coding Standards](#coding-standards)
12
+
13
+ ## Code of Conduct
14
+
15
+ Please be respectful and constructive in all interactions. We're building something together.
16
+
17
+ ## Getting Started
18
+
19
+ ### Prerequisites
20
+
21
+ - **Node.js** 18+
22
+ - **Unreal Engine** 5.0-5.7 (for live testing)
23
+ - **Git**
24
+
25
+ ### Setup
26
+
27
+ 1. Fork and clone the repository:
28
+ ```bash
29
+ git clone https://github.com/YOUR_USERNAME/unreal-engine-mcp-server.git
30
+ cd unreal-engine-mcp-server
31
+ ```
32
+
33
+ 2. Install dependencies:
34
+ ```bash
35
+ npm install
36
+ ```
37
+
38
+ 3. Build the project:
39
+ ```bash
40
+ npm run build
41
+ ```
42
+
43
+ 4. Run smoke tests (no Unreal needed):
44
+ ```bash
45
+ npm run test:smoke
46
+ ```
47
+
48
+ ## Development Workflow
49
+
50
+ ### Branch Naming
51
+
52
+ Use descriptive branch names:
53
+ - `feat/add-new-tool` - New features
54
+ - `fix/connection-timeout` - Bug fixes
55
+ - `docs/update-readme` - Documentation
56
+ - `refactor/cleanup-bridge` - Code refactoring
57
+
58
+ ### Running Tests
59
+
60
+ ```bash
61
+ # Smoke test (CI-compatible, no Unreal needed)
62
+ npm run test:smoke
63
+
64
+ # Live tests (requires Unreal Editor running with plugin)
65
+ npm run test:all
66
+ ```
67
+
68
+ ### Building
69
+
70
+ ```bash
71
+ npm run build # Full build (TypeScript + WASM)
72
+ npm run build:core # TypeScript only
73
+ npm run build:wasm # WASM only (requires wasm-pack)
74
+ ```
75
+
76
+ ## Pull Request Process
77
+
78
+ ### Before Submitting
79
+
80
+ 1. ✅ Run `npm run lint` and fix any issues
81
+ 2. ✅ Run `npm run test:smoke` to verify basic functionality
82
+ 3. ✅ Update documentation if adding new features
83
+ 4. ✅ Update `CHANGELOG.md` under `[Unreleased]`
84
+
85
+ ### PR Title Format
86
+
87
+ We use [Conventional Commits](https://www.conventionalcommits.org/). PR titles must follow this format:
88
+
89
+ ```
90
+ <type>: <description>
91
+
92
+ Examples:
93
+ feat: add new animation blending tool
94
+ fix: resolve WebSocket connection timeout
95
+ docs: update installation instructions
96
+ refactor: simplify blueprint graph handler
97
+ ```
98
+
99
+ **Types:** `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `build`, `ci`, `chore`, `revert`
100
+
101
+ ### Review Process
102
+
103
+ 1. All PRs require at least one approval
104
+ 2. CI must pass (lint, smoke test, CodeQL)
105
+ 3. Maintainers may request changes
106
+
107
+ ## Coding Standards
108
+
109
+ ### TypeScript
110
+
111
+ - Use strict TypeScript (`strict: true`)
112
+ - Prefer `async/await` over raw Promises
113
+ - Use descriptive variable names
114
+ - Add JSDoc comments for public APIs
115
+
116
+ ### C++ (Plugin)
117
+
118
+ - Follow Unreal Engine coding standards
119
+ - Use `UPROPERTY`/`UFUNCTION` macros appropriately
120
+ - Keep thread safety in mind for async operations
121
+
122
+ ### File Organization
123
+
124
+ ```
125
+ src/
126
+ ├── tools/ # MCP tool implementations
127
+ ├── automation/ # Unreal bridge logic
128
+ ├── utils/ # Shared utilities
129
+ └── services/ # Background services
130
+
131
+ Plugins/
132
+ └── McpAutomationBridge/ # C++ Unreal plugin
133
+ ```
134
+
135
+ ## Questions?
136
+
137
+ - Open a [Discussion](../../discussions) for questions
138
+ - Open an [Issue](../../issues) for bugs or feature requests
139
+
140
+ Thank you for contributing! 🎮
package/README.md CHANGED
@@ -3,10 +3,10 @@
3
3
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
4
4
  [![NPM Package](https://img.shields.io/npm/v/unreal-engine-mcp-server)](https://www.npmjs.com/package/unreal-engine-mcp-server)
5
5
  [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-TypeScript-blue)](https://github.com/modelcontextprotocol/sdk)
6
- [![Unreal Engine](https://img.shields.io/badge/Unreal%20Engine-5.0--5.6-orange)](https://www.unrealengine.com/)
6
+ [![Unreal Engine](https://img.shields.io/badge/Unreal%20Engine-5.0--5.7-orange)](https://www.unrealengine.com/)
7
7
  [![MCP Registry](https://img.shields.io/badge/MCP%20Registry-Published-green)](https://registry.modelcontextprotocol.io/)
8
8
 
9
- A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal Engine via Remote Control API. Built with TypeScript and designed for game development automation.
9
+ A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal Engine through the native C++ Automation Bridge plugin. Built with TypeScript, C++, and Rust (WebAssembly) for ultra-high-performance game development automation.
10
10
 
11
11
  ## Features
12
12
 
@@ -15,50 +15,120 @@ A comprehensive Model Context Protocol (MCP) server that enables AI assistants t
15
15
  - **Actor Control** - Spawn, delete, and manipulate actors with physics
16
16
  - **Editor Control** - PIE sessions, camera, and viewport management
17
17
  - **Level Management** - Load/save levels, lighting, and environment building
18
- - **Animation & Physics** - Blueprints, state machines, ragdolls, constraints
18
+ - **Animation & Physics** - Blueprints, state machines, ragdolls, constraints, vehicle setup
19
19
  - **Visual Effects** - Niagara particles, GPU simulations, procedural effects
20
20
  - **Sequencer** - Cinematics, camera animations, and timeline control
21
+ - **Graph Editing** - Blueprint, Niagara, Material, and Behavior Tree graph manipulation
22
+ - **World Partition** - Load cells, manage data layers
23
+ - **Render Management** - Render targets, Nanite, Lumen
24
+ - **Pipeline & Testing** - Run UBT, automated tests
25
+ - **Observability** - Log streaming, gameplay debugger, insights, asset queries
21
26
  - **Console Commands** - Safe execution with dangerous command filtering
27
+ - **GraphQL API** - Flexible data querying for assets, actors, and blueprints
28
+
29
+ ### High-Performance WebAssembly
30
+ - **5-8x faster JSON parsing** - WASM-accelerated property parsing
31
+ - **5-10x faster transform math** - Optimized 3D vector/matrix operations
32
+ - **3-5x faster dependency resolution** - Rapid asset graph traversal
33
+ - **Automatic fallbacks** - Works perfectly without WASM binary
34
+ - **Performance monitoring** - Built-in metrics tracking
22
35
 
23
36
  ## Quick Start
24
37
 
25
38
  ### Prerequisites
26
39
  - Node.js 18+
27
- - Unreal Engine 5.0-5.6
40
+ - Unreal Engine 5.0-5.7
28
41
  - Required UE Plugins (enable via **Edit ▸ Plugins**):
29
- - **Remote Control API** – core Remote Control HTTP/WS endpoints
30
- - **Remote Control Web Interface** – enables WebSocket bridge used by this server
31
- - **Python Editor Script Plugin** exposes Python runtime for automation
32
- - **Editor Scripting Utilities** – unlocks Editor Actor/Asset subsystems used throughout the tools
33
- - **Sequencer** *(built-in)* keep enabled for cinematic tools
34
- - **Level Sequence Editor** – required for `manage_sequence` operations
42
+ - **MCP Automation Bridge** – Native C++ WebSocket automation transport (ships inside `plugins/McpAutomationBridge`)
43
+ - **Editor Scripting Utilities** – Unlocks Editor Actor/Asset subsystems for native tool operations
44
+ - **Sequencer** *(built-in)*Keep enabled for cinematic tools
45
+ - **Level Sequence Editor** – Required for `manage_sequence` operations
46
+ - **Control Rig** – Required for animation and physics tools
47
+ - **Subobject Data Interface** – Required for Blueprint component manipulation (UE 5.7+)
35
48
 
36
- > 💡 After toggling any plugin, restart the editor to finalize activation. Keep `Editor Scripting Utilities` and `Python Editor Script Plugin` enabled prior to connecting, otherwise many subsystem-based tools (actor spawning, audio, foliage, UI widgets) will refuse to run for safety.
49
+ > 💡 After toggling any plugin, restart the editor to finalize activation. The MCP Automation Bridge provides all automation capabilities through native C++ handlers.
37
50
 
38
51
  ### Plugin feature map
39
52
 
40
53
  | Plugin | Location | Used By | Notes |
41
54
  |--------|----------|---------|-------|
42
- | Remote Control API | Developer ToolsRemote Control | All tools | Provides HTTP/WS endpoints consumed by the MCP bridge |
43
- | Remote Control Web Interface | Developer Tools Remote Control | All tools | Enables persistent WebSocket session |
44
- | Python Editor Script Plugin | Scripting | Landscapes, lighting, audio, physics, sequences, UI | Required for every Python execution path |
45
- | Editor Scripting Utilities | Scripting | Actors, foliage, assets, landscapes, UI | Supplies Editor Actor/Asset subsystems in UE5.6 |
55
+ | MCP Automation Bridge | Project PluginsMCP Automation Bridge | All automation operations | Primary C++ automation transport with native handlers |
56
+ | Editor Scripting Utilities | Scripting | Asset/Actor subsystem operations | Supplies Editor Actor/Asset subsystems |
46
57
  | Sequencer | Built-in | Sequencer tools | Ensure not disabled in project settings |
47
- | Level Sequence Editor | Animation | Sequencer tools | Activate before calling `manage_sequence` operations |
58
+ | Level Sequence Editor | Animation | Sequencer tools | Required for `manage_sequence` operations |
59
+ | Control Rig | Animation | Animation/Physics tools | Required for `animation_physics` operations |
60
+ | Subobject Data Interface | Scripting | Blueprint tools | Required for `manage_blueprint` component operations (UE 5.7+) |
48
61
 
49
- ### Installation
62
+ > Tools such as `physics.configureVehicle` accept an optional `pluginDependencies` array so you can list the specific Unreal plugins your project relies on (for example, Chaos Vehicles or third-party vehicle frameworks). When provided, the server will verify those plugins are active before running the configuration.
63
+
64
+ ### MCP Automation Bridge plugin
65
+ - Location: `plugins/McpAutomationBridge`
66
+ - Installation: copy the folder into your project's `Plugins/` directory and regenerate project files.
67
+ - Sync helper: run `npm run automation:sync -- --engine "X:/Unreal_Engine/UE_5.6/Engine/Plugins" --project "X:/Newfolder(2)/Game/Unreal/Trial/Plugins" --clean-engine --clean-project` after repo updates to copy the latest bridge build into both plugin folders and strip legacy entries (such as `SupportedTargetPlatforms: ["Editor"]`) that trigger startup warnings.
68
+ - Verification: run `node scripts/verify-automation-bridge.js --project "C:/Path/To/YourProject/Plugins" --config "C:/Path/To/YourProject/Config/DefaultEngine.ini"` to confirm the plugin files and automation bridge environment variables are in place before launching Unreal.
69
+ - Configuration: enable **MCP Automation Bridge** in **Edit ▸ Plugins**, restart the editor, then set the endpoint/token under **Edit ▸ Project Settings ▸ Plugins ▸ MCP Automation Bridge**. The bridge ships with its own lightweight WebSocket client, so you no longer need the engine's WebSockets plugin enabled.
70
+ - Startup: after configuration, the Output Log should show a successful connection and the `bridge_started` broadcast; `SendRawMessage` becomes available to Blueprint and C++ callers for manual testing.
71
+ - Current scope: manages a WebSocket session to the Node MCP server (`ws://127.0.0.1:8091` by default), performs optional capability-token handshakes, dispatches inbound JSON to native C++ handlers, implements reconnect backoff, and responds to editor functions, property operations, blueprint actions, and more through native implementations.
72
+ - Usage: all consolidated tools use the automation bridge for native C++ execution. Keep the plugin enabled for all workflows.
73
+ - Diagnostics: the `ue://automation-bridge` MCP resource surfaces handshake timestamps, recent disconnects, pending automation requests, and whether the Node listener is running—handy when validating editor connectivity from a client.
74
+ - Roadmap: expand the bridge with elevated actions (SCS authoring, typed property marshaling, modal mediation, asset workflows).
75
+
76
+ ### WebAssembly Performance (Optional)
50
77
 
51
- #### Option 1: NPM Package (Recommended)
78
+ The MCP server includes WebAssembly acceleration for computationally intensive operations. WASM is **automatically used when available** and **gracefully falls back** to pure TypeScript when the bundle or toolchain is missing.
79
+
80
+ **To enable full WASM acceleration (5–8x faster operations):**
52
81
 
53
82
  ```bash
54
- # Install globally
55
- npm install -g unreal-engine-mcp-server
83
+ # 1. Install Rust toolchain and wasm-pack (once per machine)
84
+ # See https://rustup.rs for installing Rust.
85
+ cargo install wasm-pack
86
+
87
+ # 2. Build TypeScript + WASM bundle
88
+ # The build script always runs the TypeScript compiler and then
89
+ # optionally builds the WASM bundle. If wasm-pack is missing the
90
+ # build will succeed with a warning and the server will use
91
+ # TypeScript fallbacks.
92
+ npm run build
93
+
94
+ # 3. Ensure WASM is enabled (default is enabled if WASM_ENABLED is unset)
95
+ # In .env or your process environment:
96
+ # WASM_ENABLED=true
56
97
 
57
- # Or install locally in your project
58
- npm install unreal-engine-mcp-server
98
+ # 4. Start the server or run tests – the logs will include a
99
+ # "WebAssembly module initialized successfully" message when the
100
+ # bundle is present and loaded.
101
+ npm start
59
102
  ```
60
103
 
61
- #### Option 2: Clone and Build
104
+ **Without WASM (still fully functional):**
105
+
106
+ ```bash
107
+ # Disable WASM explicitly (optional)
108
+ # In .env or environment:
109
+ # WASM_ENABLED=false
110
+
111
+ npm start
112
+ # Server will always use TypeScript implementations only.
113
+ ```
114
+
115
+ When the WASM bundle is not present or `wasm-pack` is not installed:
116
+
117
+ - `npm run build` prints a concise message:
118
+ > WASM build failed or wasm-pack missing; continuing with TypeScript-only build.
119
+ - At runtime, the server attempts to load the bundle once. On `ERR_MODULE_NOT_FOUND`
120
+ it logs a single warning suggesting `npm run build`/`cargo install wasm-pack` and
121
+ permanently falls back to TypeScript for that process.
122
+
123
+ WASM acceleration applies to:
124
+ - JSON property parsing (5-8x faster)
125
+ - Transform calculations (5-10x faster)
126
+ - Vector/matrix math (5x faster)
127
+ - Asset dependency resolution (3-5x faster)
128
+
129
+ ### Installation
130
+
131
+ Clone and Build
62
132
 
63
133
  ```bash
64
134
  # Clone the repository
@@ -75,20 +145,7 @@ node dist/cli.js
75
145
 
76
146
  ### Unreal Engine Configuration
77
147
 
78
- Add to your project's `Config/DefaultEngine.ini`:
79
-
80
- ```ini
81
- [/Script/PythonScriptPlugin.PythonScriptPluginSettings]
82
- bRemoteExecution=True
83
- bAllowRemotePythonExecution=True
84
-
85
- [/Script/RemoteControl.RemoteControlSettings]
86
- bAllowRemoteExecutionOfConsoleCommands=True
87
- bEnableRemoteExecution=True
88
- bAllowPythonExecution=True
89
- ```
90
-
91
- Then enable Python execution in: Edit > Project Settings > Plugins > Remote Control
148
+ No additional engine configuration required. The MCP Automation Bridge plugin handles all automation through native C++ code.
92
149
 
93
150
  ## MCP Client Configuration
94
151
 
@@ -103,10 +160,8 @@ Then enable Python execution in: Edit > Project Settings > Plugins > Remote Cont
103
160
  "command": "npx",
104
161
  "args": ["unreal-engine-mcp-server"],
105
162
  "env": {
106
- "UE_HOST": "127.0.0.1",
107
- "UE_RC_HTTP_PORT": "30010",
108
- "UE_RC_WS_PORT": "30020",
109
- "UE_PROJECT_PATH": "C:/Users/YourName/Documents/Unreal Projects/YourProject"
163
+ "UE_PROJECT_PATH": "C:/Users/YourName/Documents/Unreal Projects/YourProject",
164
+ "MCP_AUTOMATION_PORT": "8091"
110
165
  }
111
166
  }
112
167
  }
@@ -122,47 +177,63 @@ Then enable Python execution in: Edit > Project Settings > Plugins > Remote Cont
122
177
  "command": "node",
123
178
  "args": ["path/to/Unreal_mcp/dist/cli.js"],
124
179
  "env": {
125
- "UE_HOST": "127.0.0.1",
126
- "UE_RC_HTTP_PORT": "30010",
127
- "UE_RC_WS_PORT": "30020",
128
- "UE_PROJECT_PATH": "C:/Users/YourName/Documents/Unreal Projects/YourProject"
180
+ "UE_PROJECT_PATH": "C:/Users/YourName/Documents/Unreal Projects/YourProject",
181
+ "MCP_AUTOMATION_PORT": "8091"
129
182
  }
130
183
  }
131
184
  }
132
185
  }
133
186
  ```
134
187
 
135
- ## Available Tools (13)
188
+ ## Available Tools (17)
136
189
 
137
190
  | Tool | Description |
138
191
  |------|-------------|
139
- | `manage_asset` | List, create materials, import assets |
140
- | `control_actor` | Spawn, delete actors, apply physics |
141
- | `control_editor` | PIE control, camera, view modes |
142
- | `manage_level` | Load/save levels, lighting |
143
- | `animation_physics` | Animation blueprints, ragdolls |
144
- | `create_effect` | Particles, Niagara, debug shapes |
145
- | `manage_blueprint` | Create blueprints, add components |
146
- | `build_environment` | Landscapes, terrain, foliage |
147
- | `system_control` | Profiling, quality, UI, screenshots, Output Log reading |
148
- | `console_command` | Direct console command execution |
149
- | `manage_rc` | Remote Control presets |
150
- | `manage_sequence` | Sequencer/cinematics |
151
- | `inspect` | Object introspection |
192
+ | `manage_asset` | Assets, Materials, Render Targets, Behavior Trees |
193
+ | `control_actor` | Spawn, delete, modify, physics |
194
+ | `control_editor` | PIE, Camera, UI Input |
195
+ | `manage_level` | Load/Save, World Partition |
196
+ | `manage_lighting` | Spawn Lights, GI, Shadows, Build Lighting |
197
+ | `manage_performance` | Profiling, Optimization, Scalability |
198
+ | `animation_physics` | Animation BPs, Vehicles, Ragdolls |
199
+ | `manage_effect` | Niagara, Particles, Debug Shapes |
200
+ | `manage_blueprint` | Create, SCS, Graph Editing |
201
+ | `manage_blueprint_graph` | Direct Blueprint Graph Manipulation |
202
+ | `build_environment` | Landscape, Foliage, Procedural |
203
+ | `system_control` | UBT, Tests, Logs, Project Settings, CVars |
204
+ | `manage_sequence` | Sequencer/Cinematics |
205
+ | `inspect` | Object Introspection |
206
+ | `manage_audio` | Audio Assets & Components |
207
+ | `manage_behavior_tree` | Behavior Tree Graph Editing |
208
+ | `manage_input` | Enhanced Input Actions & Contexts |
209
+
210
+
211
+ ## Documentation
212
+
213
+ - [Handler Mappings](docs/handler-mapping.md) - TypeScript to C++ routing guide
214
+ - [GraphQL API](docs/GraphQL-API.md) - Query and mutation reference
215
+ - [Automation Progress](docs/native-automation-progress.md) - Implementation status
152
216
 
153
217
  ## Key Features
154
218
 
155
- - **Graceful Degradation** - Server starts even without UE connection
156
- - **Auto-Reconnection** - Attempts reconnection every 10 seconds
157
- - **Connection Timeout** - 5-second timeout with configurable retries
158
- - **Non-Intrusive Health Checks** - Uses echo commands every 30 seconds
219
+ - **Native C++ Automation** - All operations route through the MCP Automation Bridge plugin's native C++ handlers
220
+ - **Graceful Degradation** - Server starts even without an active Unreal connection
221
+ - **On-Demand Connection** - Retries automation handshakes with backoff instead of persistent polling
222
+ - **Non-Intrusive Health Checks** - Uses echo commands every 30 seconds while connected
159
223
  - **Command Safety** - Blocks dangerous console commands
160
224
  - **Input Flexibility** - Vectors/rotators accept object or array format
161
225
  - **Asset Caching** - 10-second TTL for improved performance
226
+ - **GraphQL** - Specialized endpoint for complex queries
227
+
228
+ ### Native C++ Architecture
229
+
230
+ The server uses a 100% native C++ approach: all automation operations are implemented as native C++ handlers in the MCP Automation Bridge plugin (under `plugins/McpAutomationBridge/Source/`). This eliminates dependencies and provides better performance, reliability, and type safety.
231
+
232
+ Configuration and runtime defaults are centralized in `src/constants.ts`. All operations route through the automation bridge's WebSocket protocol to native plugin handlers.
162
233
 
163
234
  ## Supported Asset Types
164
235
 
165
- Blueprints, Materials, Textures, Static/Skeletal Meshes, Levels, Sounds, Particles, Niagara Systems
236
+ Blueprints, Materials, Textures, Static/Skeletal Meshes, Levels, Sounds, Particles, Niagara Systems, Behavior Trees
166
237
 
167
238
  ## Example Console Commands
168
239
 
@@ -171,18 +242,42 @@ Blueprints, Materials, Textures, Static/Skeletal Meshes, Levels, Sounds, Particl
171
242
  - **Gameplay**: `slomo 0.5`, `god`, `fly`
172
243
  - **Rendering**: `r.screenpercentage 50`, `r.vsync 0`
173
244
 
174
- ## Configuration
245
+ ### Configuration
175
246
 
176
247
  ### Environment Variables
177
248
 
178
249
  ```env
179
- UE_HOST=127.0.0.1 # Unreal Engine host
180
- UE_RC_HTTP_PORT=30010 # Remote Control HTTP port
181
- UE_RC_WS_PORT=30020 # Remote Control WebSocket port
182
250
  UE_PROJECT_PATH="C:/Users/YourName/Documents/Unreal Projects/YourProject" # Absolute path to your .uproject file
183
- LOG_LEVEL=info # debug | info | warn | error
251
+ LOG_LEVEL=info # debug | info | warn | error
252
+
253
+ # Automation bridge WebSocket client (Node -> Unreal editor)
254
+ MCP_AUTOMATION_HOST=127.0.0.1 # Host/interface for the automation bridge connection
255
+ MCP_AUTOMATION_PORT=8091 # Primary bridge port (must match the plugin's port)
256
+ MCP_AUTOMATION_CLIENT_MODE=true # Set to false to disable the automation bridge client
257
+ MCP_AUTOMATION_CAPABILITY_TOKEN= # Optional capability token for handshake security
258
+
259
+ # Legacy/Alternative variables
260
+ # MCP_AUTOMATION_WS_PORT=8090 # Fallback port if MCP_AUTOMATION_PORT is unset
261
+ # MCP_AUTOMATION_BRIDGE_ENABLED=true # Legacy alias for MCP_AUTOMATION_CLIENT_MODE
262
+
263
+ # WebAssembly acceleration
264
+ WASM_ENABLED=true # Default: enabled if unset; set false to force TS-only
265
+ # Optional override when hosting the WASM bundle elsewhere:
266
+ # WASM_PATH=file:///absolute/path/to/unreal_mcp_wasm.js
267
+
268
+ # Timeouts / caching (advanced – safe defaults are baked in)
269
+ MCP_AUTOMATION_REQUEST_TIMEOUT_MS=120000
270
+ MCP_AUTOMATION_EVENT_TIMEOUT_MS=0
271
+ ASSET_LIST_TTL_MS=10000
184
272
  ```
185
273
 
274
+ Note on configuration precedence
275
+ - The server uses `dotenv` to load `.env` for local development. A `.env.production` file is included as a reference for production deployments; copy values into your real environment or secret store as appropriate.
276
+ - Environment variables (.env / system env) override the internal runtime defaults (for example, defaults in `src/index.ts`, `src/automation-bridge.ts`, and individual tool implementations). This lets you tune timeouts, logging, and WASM behavior without modifying source code. Keep secrets in `.env` or a secret manager — do not store secrets in source files.
277
+
278
+ Mock mode
279
+
280
+
186
281
  ### Docker
187
282
 
188
283
  ```bash
@@ -200,7 +295,7 @@ docker run --rm -it mcp/server/unreal-engine-mcp-server:latest
200
295
  ## Development
201
296
 
202
297
  ```bash
203
- npm run build # Build TypeScript
298
+ npm run build # Build TypeScript and (optionally) the WebAssembly bundle
204
299
  npm run lint # Run ESLint
205
300
  npm run lint:fix # Fix linting issues
206
301
  ```
@@ -214,4 +309,4 @@ Contributions welcome! Please:
214
309
 
215
310
  ## License
216
311
 
217
- MIT - See [LICENSE](LICENSE) file
312
+ MIT - See [LICENSE](LICENSE) file
@@ -2,13 +2,14 @@
2
2
  "mcpServers": {
3
3
  "unreal-engine": {
4
4
  "command": "node",
5
- "args": ["PathToMCP\\UnrealMCP\\unreal-engine-mcp-server\\dist\\cli.js"],
5
+ "args": [
6
+ "PathToMCP\\UnrealMCP\\unreal-engine-mcp-server\\dist\\cli.js"
7
+ ],
6
8
  "env": {
7
- "UE_HOST": "127.0.0.1",
8
- "UE_RC_WS_PORT": "30020",
9
- "UE_RC_HTTP_PORT": "30010",
10
- "UE_PROJECT_PATH": "C:/Users/YourName/Documents/Unreal Projects/YourProject"
9
+ "UE_PROJECT_PATH": "C:/Users/YourName/Documents/Unreal Projects/YourProject",
10
+ "MCP_AUTOMATION_HOST": "127.0.0.1",
11
+ "MCP_AUTOMATION_PORT": "8091"
11
12
  }
12
13
  }
13
14
  }
14
- }
15
+ }
@@ -0,0 +1,50 @@
1
+ import { EventEmitter } from 'node:events';
2
+ import { AutomationBridgeOptions, AutomationBridgeStatus, AutomationBridgeMessage, AutomationBridgeResponseMessage, AutomationBridgeEvents } from './types.js';
3
+ export declare class AutomationBridge extends EventEmitter {
4
+ private readonly host;
5
+ private readonly port;
6
+ private readonly ports;
7
+ private readonly negotiatedProtocols;
8
+ private readonly capabilityToken?;
9
+ private readonly enabled;
10
+ private readonly serverName;
11
+ private readonly serverVersion;
12
+ private readonly clientHost;
13
+ private readonly clientPort;
14
+ private readonly serverLegacyEnabled;
15
+ private readonly maxConcurrentConnections;
16
+ private connectionManager;
17
+ private requestTracker;
18
+ private handshakeHandler;
19
+ private messageHandler;
20
+ private log;
21
+ private lastHandshakeAt?;
22
+ private lastHandshakeMetadata?;
23
+ private lastHandshakeAck?;
24
+ private lastHandshakeFailure?;
25
+ private lastDisconnect?;
26
+ private lastError?;
27
+ private requestQueue;
28
+ private queuedRequestItems;
29
+ private connectionPromise?;
30
+ constructor(options?: AutomationBridgeOptions);
31
+ on<K extends keyof AutomationBridgeEvents>(event: K, listener: AutomationBridgeEvents[K]): this;
32
+ once<K extends keyof AutomationBridgeEvents>(event: K, listener: AutomationBridgeEvents[K]): this;
33
+ off<K extends keyof AutomationBridgeEvents>(event: K, listener: AutomationBridgeEvents[K]): this;
34
+ start(): void;
35
+ private startClient;
36
+ private handleClientConnection;
37
+ stop(): void;
38
+ isConnected(): boolean;
39
+ getStatus(): AutomationBridgeStatus;
40
+ sendAutomationRequest<T = AutomationBridgeResponseMessage>(action: string, payload?: Record<string, unknown>, options?: {
41
+ timeoutMs?: number;
42
+ }): Promise<T>;
43
+ private sendRequestInternal;
44
+ private processRequestQueue;
45
+ send(payload: AutomationBridgeMessage): boolean;
46
+ private broadcast;
47
+ private flushQueue;
48
+ private emitAutomation;
49
+ }
50
+ //# sourceMappingURL=bridge.d.ts.map