unreal-engine-mcp-server 0.4.7 → 0.5.1

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 (454) 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-config.yml +51 -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 +27 -0
  19. package/.github/workflows/labeler.yml +17 -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 +13 -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 +338 -31
  29. package/CONTRIBUTING.md +140 -0
  30. package/GEMINI.md +115 -0
  31. package/Public/Plugin_setup_guide.mp4 +0 -0
  32. package/README.md +189 -128
  33. package/claude_desktop_config_example.json +7 -6
  34. package/dist/automation/bridge.d.ts +50 -0
  35. package/dist/automation/bridge.js +452 -0
  36. package/dist/automation/connection-manager.d.ts +23 -0
  37. package/dist/automation/connection-manager.js +107 -0
  38. package/dist/automation/handshake.d.ts +11 -0
  39. package/dist/automation/handshake.js +89 -0
  40. package/dist/automation/index.d.ts +3 -0
  41. package/dist/automation/index.js +3 -0
  42. package/dist/automation/message-handler.d.ts +12 -0
  43. package/dist/automation/message-handler.js +149 -0
  44. package/dist/automation/request-tracker.d.ts +25 -0
  45. package/dist/automation/request-tracker.js +98 -0
  46. package/dist/automation/types.d.ts +130 -0
  47. package/dist/automation/types.js +2 -0
  48. package/dist/cli.js +32 -5
  49. package/dist/config.d.ts +26 -0
  50. package/dist/config.js +59 -0
  51. package/dist/constants.d.ts +16 -0
  52. package/dist/constants.js +16 -0
  53. package/dist/graphql/loaders.d.ts +64 -0
  54. package/dist/graphql/loaders.js +117 -0
  55. package/dist/graphql/resolvers.d.ts +268 -0
  56. package/dist/graphql/resolvers.js +746 -0
  57. package/dist/graphql/schema.d.ts +5 -0
  58. package/dist/graphql/schema.js +437 -0
  59. package/dist/graphql/server.d.ts +26 -0
  60. package/dist/graphql/server.js +117 -0
  61. package/dist/graphql/types.d.ts +9 -0
  62. package/dist/graphql/types.js +2 -0
  63. package/dist/handlers/resource-handlers.d.ts +20 -0
  64. package/dist/handlers/resource-handlers.js +180 -0
  65. package/dist/index.d.ts +33 -18
  66. package/dist/index.js +130 -619
  67. package/dist/resources/actors.d.ts +17 -12
  68. package/dist/resources/actors.js +56 -76
  69. package/dist/resources/assets.d.ts +6 -14
  70. package/dist/resources/assets.js +115 -147
  71. package/dist/resources/levels.d.ts +13 -13
  72. package/dist/resources/levels.js +25 -34
  73. package/dist/server/resource-registry.d.ts +20 -0
  74. package/dist/server/resource-registry.js +37 -0
  75. package/dist/server/tool-registry.d.ts +23 -0
  76. package/dist/server/tool-registry.js +322 -0
  77. package/dist/server-setup.d.ts +20 -0
  78. package/dist/server-setup.js +71 -0
  79. package/dist/services/health-monitor.d.ts +34 -0
  80. package/dist/services/health-monitor.js +105 -0
  81. package/dist/services/metrics-server.d.ts +11 -0
  82. package/dist/services/metrics-server.js +105 -0
  83. package/dist/tools/actors.d.ts +163 -9
  84. package/dist/tools/actors.js +356 -311
  85. package/dist/tools/animation.d.ts +135 -4
  86. package/dist/tools/animation.js +510 -411
  87. package/dist/tools/assets.d.ts +75 -29
  88. package/dist/tools/assets.js +265 -284
  89. package/dist/tools/audio.d.ts +102 -42
  90. package/dist/tools/audio.js +272 -685
  91. package/dist/tools/base-tool.d.ts +17 -0
  92. package/dist/tools/base-tool.js +46 -0
  93. package/dist/tools/behavior-tree.d.ts +94 -0
  94. package/dist/tools/behavior-tree.js +39 -0
  95. package/dist/tools/blueprint.d.ts +208 -126
  96. package/dist/tools/blueprint.js +685 -832
  97. package/dist/tools/consolidated-tool-definitions.d.ts +5462 -1781
  98. package/dist/tools/consolidated-tool-definitions.js +829 -496
  99. package/dist/tools/consolidated-tool-handlers.d.ts +2 -1
  100. package/dist/tools/consolidated-tool-handlers.js +198 -1027
  101. package/dist/tools/debug.d.ts +143 -85
  102. package/dist/tools/debug.js +234 -180
  103. package/dist/tools/dynamic-handler-registry.d.ts +13 -0
  104. package/dist/tools/dynamic-handler-registry.js +23 -0
  105. package/dist/tools/editor.d.ts +30 -83
  106. package/dist/tools/editor.js +247 -244
  107. package/dist/tools/engine.d.ts +10 -4
  108. package/dist/tools/engine.js +13 -5
  109. package/dist/tools/environment.d.ts +30 -0
  110. package/dist/tools/environment.js +267 -0
  111. package/dist/tools/foliage.d.ts +65 -99
  112. package/dist/tools/foliage.js +221 -331
  113. package/dist/tools/handlers/actor-handlers.d.ts +3 -0
  114. package/dist/tools/handlers/actor-handlers.js +227 -0
  115. package/dist/tools/handlers/animation-handlers.d.ts +3 -0
  116. package/dist/tools/handlers/animation-handlers.js +185 -0
  117. package/dist/tools/handlers/argument-helper.d.ts +16 -0
  118. package/dist/tools/handlers/argument-helper.js +80 -0
  119. package/dist/tools/handlers/asset-handlers.d.ts +3 -0
  120. package/dist/tools/handlers/asset-handlers.js +496 -0
  121. package/dist/tools/handlers/audio-handlers.d.ts +3 -0
  122. package/dist/tools/handlers/audio-handlers.js +166 -0
  123. package/dist/tools/handlers/blueprint-handlers.d.ts +4 -0
  124. package/dist/tools/handlers/blueprint-handlers.js +358 -0
  125. package/dist/tools/handlers/common-handlers.d.ts +14 -0
  126. package/dist/tools/handlers/common-handlers.js +56 -0
  127. package/dist/tools/handlers/editor-handlers.d.ts +3 -0
  128. package/dist/tools/handlers/editor-handlers.js +119 -0
  129. package/dist/tools/handlers/effect-handlers.d.ts +3 -0
  130. package/dist/tools/handlers/effect-handlers.js +171 -0
  131. package/dist/tools/handlers/environment-handlers.d.ts +3 -0
  132. package/dist/tools/handlers/environment-handlers.js +170 -0
  133. package/dist/tools/handlers/graph-handlers.d.ts +3 -0
  134. package/dist/tools/handlers/graph-handlers.js +90 -0
  135. package/dist/tools/handlers/input-handlers.d.ts +3 -0
  136. package/dist/tools/handlers/input-handlers.js +21 -0
  137. package/dist/tools/handlers/inspect-handlers.d.ts +3 -0
  138. package/dist/tools/handlers/inspect-handlers.js +383 -0
  139. package/dist/tools/handlers/level-handlers.d.ts +3 -0
  140. package/dist/tools/handlers/level-handlers.js +237 -0
  141. package/dist/tools/handlers/lighting-handlers.d.ts +3 -0
  142. package/dist/tools/handlers/lighting-handlers.js +144 -0
  143. package/dist/tools/handlers/performance-handlers.d.ts +3 -0
  144. package/dist/tools/handlers/performance-handlers.js +130 -0
  145. package/dist/tools/handlers/pipeline-handlers.d.ts +3 -0
  146. package/dist/tools/handlers/pipeline-handlers.js +110 -0
  147. package/dist/tools/handlers/sequence-handlers.d.ts +3 -0
  148. package/dist/tools/handlers/sequence-handlers.js +376 -0
  149. package/dist/tools/handlers/system-handlers.d.ts +4 -0
  150. package/dist/tools/handlers/system-handlers.js +506 -0
  151. package/dist/tools/input.d.ts +19 -0
  152. package/dist/tools/input.js +89 -0
  153. package/dist/tools/introspection.d.ts +103 -40
  154. package/dist/tools/introspection.js +425 -568
  155. package/dist/tools/landscape.d.ts +54 -93
  156. package/dist/tools/landscape.js +284 -409
  157. package/dist/tools/level.d.ts +66 -27
  158. package/dist/tools/level.js +647 -675
  159. package/dist/tools/lighting.d.ts +77 -38
  160. package/dist/tools/lighting.js +445 -943
  161. package/dist/tools/logs.d.ts +3 -3
  162. package/dist/tools/logs.js +5 -57
  163. package/dist/tools/materials.d.ts +91 -24
  164. package/dist/tools/materials.js +194 -118
  165. package/dist/tools/niagara.d.ts +149 -39
  166. package/dist/tools/niagara.js +267 -182
  167. package/dist/tools/performance.d.ts +27 -13
  168. package/dist/tools/performance.js +203 -122
  169. package/dist/tools/physics.d.ts +32 -77
  170. package/dist/tools/physics.js +175 -582
  171. package/dist/tools/property-dictionary.d.ts +13 -0
  172. package/dist/tools/property-dictionary.js +82 -0
  173. package/dist/tools/sequence.d.ts +85 -60
  174. package/dist/tools/sequence.js +208 -747
  175. package/dist/tools/tool-definition-utils.d.ts +59 -0
  176. package/dist/tools/tool-definition-utils.js +35 -0
  177. package/dist/tools/ui.d.ts +64 -34
  178. package/dist/tools/ui.js +134 -214
  179. package/dist/types/automation-responses.d.ts +115 -0
  180. package/dist/types/automation-responses.js +2 -0
  181. package/dist/types/env.d.ts +0 -3
  182. package/dist/types/env.js +0 -7
  183. package/dist/types/responses.d.ts +249 -0
  184. package/dist/types/responses.js +2 -0
  185. package/dist/types/tool-interfaces.d.ts +898 -0
  186. package/dist/types/tool-interfaces.js +2 -0
  187. package/dist/types/tool-types.d.ts +183 -19
  188. package/dist/types/tool-types.js +0 -4
  189. package/dist/unreal-bridge.d.ts +24 -131
  190. package/dist/unreal-bridge.js +364 -1506
  191. package/dist/utils/command-validator.d.ts +9 -0
  192. package/dist/utils/command-validator.js +68 -0
  193. package/dist/utils/elicitation.d.ts +1 -1
  194. package/dist/utils/elicitation.js +12 -15
  195. package/dist/utils/error-handler.d.ts +2 -51
  196. package/dist/utils/error-handler.js +11 -87
  197. package/dist/utils/ini-reader.d.ts +3 -0
  198. package/dist/utils/ini-reader.js +69 -0
  199. package/dist/utils/logger.js +9 -6
  200. package/dist/utils/normalize.d.ts +3 -0
  201. package/dist/utils/normalize.js +56 -0
  202. package/dist/utils/path-security.d.ts +2 -0
  203. package/dist/utils/path-security.js +24 -0
  204. package/dist/utils/response-factory.d.ts +7 -0
  205. package/dist/utils/response-factory.js +27 -0
  206. package/dist/utils/response-validator.d.ts +3 -24
  207. package/dist/utils/response-validator.js +130 -81
  208. package/dist/utils/result-helpers.d.ts +4 -5
  209. package/dist/utils/result-helpers.js +15 -16
  210. package/dist/utils/safe-json.js +5 -11
  211. package/dist/utils/unreal-command-queue.d.ts +24 -0
  212. package/dist/utils/unreal-command-queue.js +120 -0
  213. package/dist/utils/validation.d.ts +0 -40
  214. package/dist/utils/validation.js +1 -78
  215. package/dist/wasm/index.d.ts +70 -0
  216. package/dist/wasm/index.js +535 -0
  217. package/docs/GraphQL-API.md +888 -0
  218. package/docs/Migration-Guide-v0.5.0.md +684 -0
  219. package/docs/Roadmap.md +53 -0
  220. package/docs/WebAssembly-Integration.md +628 -0
  221. package/docs/editor-plugin-extension.md +370 -0
  222. package/docs/handler-mapping.md +242 -0
  223. package/docs/native-automation-progress.md +128 -0
  224. package/docs/testing-guide.md +423 -0
  225. package/mcp-config-example.json +6 -6
  226. package/package.json +67 -28
  227. package/plugins/McpAutomationBridge/Config/FilterPlugin.ini +8 -0
  228. package/plugins/McpAutomationBridge/McpAutomationBridge.uplugin +64 -0
  229. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/McpAutomationBridge.Build.cs +189 -0
  230. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeGlobals.cpp +22 -0
  231. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeGlobals.h +30 -0
  232. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeHelpers.h +1983 -0
  233. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeModule.cpp +72 -0
  234. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeSettings.cpp +46 -0
  235. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeSubsystem.cpp +581 -0
  236. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AnimationHandlers.cpp +2394 -0
  237. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AssetQueryHandlers.cpp +300 -0
  238. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AssetWorkflowHandlers.cpp +2807 -0
  239. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AudioHandlers.cpp +1087 -0
  240. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BehaviorTreeHandlers.cpp +488 -0
  241. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintCreationHandlers.cpp +643 -0
  242. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintCreationHandlers.h +31 -0
  243. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintGraphHandlers.cpp +1184 -0
  244. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintHandlers.cpp +5652 -0
  245. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintHandlers_List.cpp +152 -0
  246. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_ControlHandlers.cpp +2614 -0
  247. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_DebugHandlers.cpp +42 -0
  248. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EditorFunctionHandlers.cpp +1237 -0
  249. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EffectHandlers.cpp +1701 -0
  250. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EnvironmentHandlers.cpp +2145 -0
  251. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_FoliageHandlers.cpp +954 -0
  252. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_InputHandlers.cpp +209 -0
  253. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_InsightsHandlers.cpp +41 -0
  254. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LandscapeHandlers.cpp +1164 -0
  255. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LevelHandlers.cpp +762 -0
  256. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LightingHandlers.cpp +634 -0
  257. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LogHandlers.cpp +136 -0
  258. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_MaterialGraphHandlers.cpp +494 -0
  259. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_NiagaraGraphHandlers.cpp +278 -0
  260. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_NiagaraHandlers.cpp +625 -0
  261. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PerformanceHandlers.cpp +401 -0
  262. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PipelineHandlers.cpp +67 -0
  263. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_ProcessRequest.cpp +735 -0
  264. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PropertyHandlers.cpp +2634 -0
  265. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_RenderHandlers.cpp +189 -0
  266. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SCSHandlers.cpp +917 -0
  267. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SCSHandlers.h +39 -0
  268. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SequenceHandlers.cpp +2670 -0
  269. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SequencerHandlers.cpp +519 -0
  270. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_TestHandlers.cpp +38 -0
  271. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_UiHandlers.cpp +668 -0
  272. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_WorldPartitionHandlers.cpp +346 -0
  273. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpBridgeWebSocket.cpp +1330 -0
  274. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpBridgeWebSocket.h +149 -0
  275. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpConnectionManager.cpp +783 -0
  276. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpAutomationBridgeSettings.h +115 -0
  277. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpAutomationBridgeSubsystem.h +796 -0
  278. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpConnectionManager.h +117 -0
  279. package/scripts/check-unreal-connection.mjs +19 -0
  280. package/scripts/clean-tmp.js +23 -0
  281. package/scripts/patch-wasm.js +26 -0
  282. package/scripts/run-all-tests.mjs +136 -0
  283. package/scripts/smoke-test.ts +94 -0
  284. package/scripts/sync-mcp-plugin.js +143 -0
  285. package/scripts/test-no-plugin-alternates.mjs +113 -0
  286. package/scripts/validate-server.js +46 -0
  287. package/scripts/verify-automation-bridge.js +200 -0
  288. package/server.json +58 -21
  289. package/src/automation/bridge.ts +558 -0
  290. package/src/automation/connection-manager.ts +130 -0
  291. package/src/automation/handshake.ts +99 -0
  292. package/src/automation/index.ts +2 -0
  293. package/src/automation/message-handler.ts +167 -0
  294. package/src/automation/request-tracker.ts +123 -0
  295. package/src/automation/types.ts +107 -0
  296. package/src/cli.ts +33 -6
  297. package/src/config.ts +73 -0
  298. package/src/constants.ts +19 -0
  299. package/src/graphql/loaders.ts +244 -0
  300. package/src/graphql/resolvers.ts +1008 -0
  301. package/src/graphql/schema.ts +452 -0
  302. package/src/graphql/server.ts +156 -0
  303. package/src/graphql/types.ts +10 -0
  304. package/src/handlers/resource-handlers.ts +186 -0
  305. package/src/index.ts +166 -664
  306. package/src/resources/actors.ts +58 -76
  307. package/src/resources/assets.ts +148 -134
  308. package/src/resources/levels.ts +28 -33
  309. package/src/server/resource-registry.ts +47 -0
  310. package/src/server/tool-registry.ts +354 -0
  311. package/src/server-setup.ts +114 -0
  312. package/src/services/health-monitor.ts +132 -0
  313. package/src/services/metrics-server.ts +142 -0
  314. package/src/tools/actors.ts +426 -323
  315. package/src/tools/animation.ts +672 -461
  316. package/src/tools/assets.ts +364 -289
  317. package/src/tools/audio.ts +323 -766
  318. package/src/tools/base-tool.ts +52 -0
  319. package/src/tools/behavior-tree.ts +45 -0
  320. package/src/tools/blueprint.ts +792 -970
  321. package/src/tools/consolidated-tool-definitions.ts +993 -515
  322. package/src/tools/consolidated-tool-handlers.ts +258 -1146
  323. package/src/tools/debug.ts +292 -187
  324. package/src/tools/dynamic-handler-registry.ts +33 -0
  325. package/src/tools/editor.ts +329 -253
  326. package/src/tools/engine.ts +14 -3
  327. package/src/tools/environment.ts +281 -0
  328. package/src/tools/foliage.ts +330 -392
  329. package/src/tools/handlers/actor-handlers.ts +265 -0
  330. package/src/tools/handlers/animation-handlers.ts +237 -0
  331. package/src/tools/handlers/argument-helper.ts +142 -0
  332. package/src/tools/handlers/asset-handlers.ts +532 -0
  333. package/src/tools/handlers/audio-handlers.ts +194 -0
  334. package/src/tools/handlers/blueprint-handlers.ts +380 -0
  335. package/src/tools/handlers/common-handlers.ts +87 -0
  336. package/src/tools/handlers/editor-handlers.ts +123 -0
  337. package/src/tools/handlers/effect-handlers.ts +220 -0
  338. package/src/tools/handlers/environment-handlers.ts +183 -0
  339. package/src/tools/handlers/graph-handlers.ts +116 -0
  340. package/src/tools/handlers/input-handlers.ts +28 -0
  341. package/src/tools/handlers/inspect-handlers.ts +450 -0
  342. package/src/tools/handlers/level-handlers.ts +252 -0
  343. package/src/tools/handlers/lighting-handlers.ts +147 -0
  344. package/src/tools/handlers/performance-handlers.ts +132 -0
  345. package/src/tools/handlers/pipeline-handlers.ts +127 -0
  346. package/src/tools/handlers/sequence-handlers.ts +415 -0
  347. package/src/tools/handlers/system-handlers.ts +564 -0
  348. package/src/tools/input.ts +101 -0
  349. package/src/tools/introspection.ts +493 -584
  350. package/src/tools/landscape.ts +418 -507
  351. package/src/tools/level.ts +786 -708
  352. package/src/tools/lighting.ts +588 -984
  353. package/src/tools/logs.ts +9 -57
  354. package/src/tools/materials.ts +237 -121
  355. package/src/tools/niagara.ts +335 -168
  356. package/src/tools/performance.ts +320 -169
  357. package/src/tools/physics.ts +274 -613
  358. package/src/tools/property-dictionary.ts +98 -0
  359. package/src/tools/sequence.ts +276 -820
  360. package/src/tools/tool-definition-utils.ts +35 -0
  361. package/src/tools/ui.ts +205 -283
  362. package/src/types/automation-responses.ts +119 -0
  363. package/src/types/env.ts +0 -10
  364. package/src/types/responses.ts +355 -0
  365. package/src/types/tool-interfaces.ts +250 -0
  366. package/src/types/tool-types.ts +243 -21
  367. package/src/unreal-bridge.ts +460 -1550
  368. package/src/utils/command-validator.ts +76 -0
  369. package/src/utils/elicitation.ts +10 -7
  370. package/src/utils/error-handler.ts +14 -90
  371. package/src/utils/ini-reader.ts +86 -0
  372. package/src/utils/logger.ts +8 -3
  373. package/src/utils/normalize.test.ts +162 -0
  374. package/src/utils/normalize.ts +60 -0
  375. package/src/utils/path-security.ts +43 -0
  376. package/src/utils/response-factory.ts +44 -0
  377. package/src/utils/response-validator.ts +176 -56
  378. package/src/utils/result-helpers.ts +21 -19
  379. package/src/utils/safe-json.test.ts +90 -0
  380. package/src/utils/safe-json.ts +14 -11
  381. package/src/utils/unreal-command-queue.ts +152 -0
  382. package/src/utils/validation.test.ts +184 -0
  383. package/src/utils/validation.ts +4 -1
  384. package/src/wasm/index.ts +838 -0
  385. package/test-server.mjs +100 -0
  386. package/tests/run-unreal-tool-tests.mjs +242 -14
  387. package/tests/test-animation.mjs +369 -0
  388. package/tests/test-asset-advanced.mjs +82 -0
  389. package/tests/test-asset-errors.mjs +35 -0
  390. package/tests/test-asset-graph.mjs +311 -0
  391. package/tests/test-audio.mjs +417 -0
  392. package/tests/test-automation-timeouts.mjs +98 -0
  393. package/tests/test-behavior-tree.mjs +444 -0
  394. package/tests/test-blueprint-graph.mjs +410 -0
  395. package/tests/test-blueprint.mjs +577 -0
  396. package/tests/test-client-mode.mjs +86 -0
  397. package/tests/test-console-command.mjs +56 -0
  398. package/tests/test-control-actor.mjs +425 -0
  399. package/tests/test-control-editor.mjs +112 -0
  400. package/tests/test-graphql.mjs +372 -0
  401. package/tests/test-input.mjs +349 -0
  402. package/tests/test-inspect.mjs +302 -0
  403. package/tests/test-landscape.mjs +316 -0
  404. package/tests/test-lighting.mjs +428 -0
  405. package/tests/test-manage-asset.mjs +438 -0
  406. package/tests/test-manage-level.mjs +89 -0
  407. package/tests/test-materials.mjs +356 -0
  408. package/tests/test-niagara.mjs +185 -0
  409. package/tests/test-no-inline-python.mjs +122 -0
  410. package/tests/test-performance.mjs +539 -0
  411. package/tests/test-plugin-handshake.mjs +82 -0
  412. package/tests/test-runner.mjs +933 -0
  413. package/tests/test-sequence.mjs +104 -0
  414. package/tests/test-system.mjs +96 -0
  415. package/tests/test-wasm.mjs +283 -0
  416. package/tests/test-world-partition.mjs +215 -0
  417. package/tsconfig.json +3 -3
  418. package/vitest.config.ts +35 -0
  419. package/wasm/Cargo.lock +363 -0
  420. package/wasm/Cargo.toml +42 -0
  421. package/wasm/LICENSE +21 -0
  422. package/wasm/README.md +253 -0
  423. package/wasm/src/dependency_resolver.rs +377 -0
  424. package/wasm/src/lib.rs +153 -0
  425. package/wasm/src/property_parser.rs +271 -0
  426. package/wasm/src/transform_math.rs +396 -0
  427. package/wasm/tests/integration.rs +109 -0
  428. package/.github/workflows/smithery-build.yml +0 -29
  429. package/dist/prompts/index.d.ts +0 -21
  430. package/dist/prompts/index.js +0 -217
  431. package/dist/tools/build_environment_advanced.d.ts +0 -65
  432. package/dist/tools/build_environment_advanced.js +0 -633
  433. package/dist/tools/rc.d.ts +0 -110
  434. package/dist/tools/rc.js +0 -437
  435. package/dist/tools/visual.d.ts +0 -40
  436. package/dist/tools/visual.js +0 -282
  437. package/dist/utils/http.d.ts +0 -6
  438. package/dist/utils/http.js +0 -151
  439. package/dist/utils/python-output.d.ts +0 -18
  440. package/dist/utils/python-output.js +0 -290
  441. package/dist/utils/python.d.ts +0 -2
  442. package/dist/utils/python.js +0 -4
  443. package/dist/utils/stdio-redirect.d.ts +0 -2
  444. package/dist/utils/stdio-redirect.js +0 -20
  445. package/docs/unreal-tool-test-cases.md +0 -574
  446. package/smithery.yaml +0 -29
  447. package/src/prompts/index.ts +0 -249
  448. package/src/tools/build_environment_advanced.ts +0 -732
  449. package/src/tools/rc.ts +0 -515
  450. package/src/tools/visual.ts +0 -281
  451. package/src/utils/http.ts +0 -187
  452. package/src/utils/python-output.ts +0 -351
  453. package/src/utils/python.ts +0 -3
  454. 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/ChiR24/Unreal_mcp.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/GEMINI.md ADDED
@@ -0,0 +1,115 @@
1
+ # Unreal Engine MCP Server
2
+
3
+ ## Project Overview
4
+
5
+ The **Unreal Engine MCP Server** (`unreal-engine-mcp-server`) is a comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal Engine via a native automation bridge. It facilitates bidirectional communication between an AI agent (running via MCP) and an active Unreal Engine Editor session.
6
+
7
+ ### Architecture
8
+
9
+ The system is composed of three main components:
10
+
11
+ 1. **MCP Server (Node.js/TypeScript):**
12
+ * **Role:** The core server that implements the MCP protocol, handles client requests, and orchestrates communication.
13
+ * **Location:** `src/`
14
+ * **Key File:** `src/index.ts` (Entry point), `src/unreal-bridge.ts` (Connection management).
15
+ * **Tools:** Defines MCP tools for Actor manipulation, Asset management, Blueprints, etc. (found in `src/tools/`).
16
+
17
+ 2. **Unreal Engine Plugin (C++):**
18
+ * **Role:** Acts as the receiver and executor within the Unreal Engine process. It runs a WebSocket server to listen for commands from the Node.js server.
19
+ * **Location:** `Plugins/McpAutomationBridge/`
20
+ * **Key Functionality:** Handles `execute_console_command`, `set_object_property`, and other engine-level operations on the Game Thread.
21
+ * **Communication:** Listens on `ws://localhost:8091` (default).
22
+
23
+ 3. **WebAssembly Module (Rust):**
24
+ * **Role:** Provides high-performance utilities for the Node.js server, such as complex property parsing and vector math.
25
+ * **Location:** `wasm/`
26
+ * **Key File:** `wasm/src/lib.rs`.
27
+
28
+ ## Building and Running
29
+
30
+ ### Prerequisites
31
+ * Node.js (v18 or higher)
32
+ * Unreal Engine (5.0-5.7)
33
+ * Rust (optional, if modifying WASM components)
34
+
35
+ ### Setup
36
+
37
+ 1. **Install Dependencies:**
38
+ ```bash
39
+ npm install
40
+ ```
41
+
42
+ 2. **Build the Server:**
43
+ ```bash
44
+ npm run build
45
+ ```
46
+
47
+ 3. **Build WebAssembly (Optional):**
48
+ If you are working on the Rust module:
49
+ ```bash
50
+ npm run build:wasm
51
+ ```
52
+
53
+ 4. **Unreal Plugin Installation:**
54
+ * Copy the `Plugins/McpAutomationBridge` folder into your Unreal Project's `Plugins` directory (e.g., `YourProject/Plugins/`).
55
+ * Regenerate project files and recompile your Unreal project.
56
+ * Enable the plugin in the Unreal Editor if it's not automatically enabled.
57
+ * Ensure the plugin is running (it should log "MCP Automation Bridge listening" to the Output Log).
58
+
59
+ ### Running the Server
60
+ To start the MCP server:
61
+ ```bash
62
+ npm start
63
+ ```
64
+ Or for development with `ts-node`:
65
+ ```bash
66
+ npm run dev
67
+ ```
68
+
69
+ ### Testing
70
+ The project includes a suite of integration tests located in the `tests/` directory. These scripts act as "fake" MCP clients to verify functionality.
71
+
72
+ * **Run All Tests:**
73
+ ```bash
74
+ npm test
75
+ ```
76
+ * **Run Specific Test:**
77
+ ```bash
78
+ npm run test:control_actor
79
+ npm run test:manage_asset
80
+ npm run test:wasm
81
+ ```
82
+
83
+ ## Development Conventions
84
+
85
+ * **Language:**
86
+ * Server logic is written in **TypeScript**.
87
+ * Unreal integration is written in **C++**.
88
+ * Performance modules are written in **Rust**.
89
+ * **Safety:**
90
+ * The `UnrealBridge` class (`src/unreal-bridge.ts`) includes safety mechanisms like command throttling and "Safe ViewMode" switching to prevent crashing the engine with invalid commands.
91
+ * **Do not** bypass these safety checks when adding new functionality.
92
+ * **Linting:**
93
+ * TypeScript: `npm run lint`
94
+ * C++/C#: Scripts provided (`npm run lint:cpp`, `npm run lint:csharp`) rely on external tools like `cpplint` and `dotnet-format`.
95
+
96
+ ## Directory Structure
97
+
98
+ * `src/`: Source code for the Node.js MCP server.
99
+ * `tools/`: Definitions for MCP tools (Actors, Assets, etc.).
100
+ * `resources/`: Definitions for MCP resources.
101
+ * `wasm/`: Compiled WebAssembly bindings.
102
+ * `Plugins/`: Source code for the Unreal Engine C++ plugin.
103
+ * `wasm/`: Source code for the Rust WebAssembly module.
104
+ * `tests/`: Integration tests and test runners.
105
+ * `scripts/`: Utility scripts for build and maintenance.
106
+
107
+ # Project Rules Agent
108
+
109
+ - The user explicitly wants real, working code only. I must never add mocks, placeholders, false-passed success code, or any non-functional code. All solutions should be directly applicable to a live editor and pass all relevant tests genuinely.
110
+ - The user explicitly requires real, working code only. I must never add mocks, placeholders, false-passed success codes, or any non-functional code. All solutions must be directly applicable to a live editor and pass all relevant tests genuinely.
111
+ - Always read full file content.
112
+ - Engine path: X:\Unreal_Engine\UE_5.0\Engine
113
+ - Engine path: X:\Unreal_Engine\UE_5.6\Engine
114
+ - Engine path: X:\Unreal_Engine\UE_5.7\Engine
115
+ - Before editing codes in plugin make sure to check before in engine's code so that all code are correct.
Binary file
package/README.md CHANGED
@@ -3,208 +3,267 @@
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 a native C++ Automation Bridge plugin. Built with TypeScript, C++, and Rust (WebAssembly).
10
+
11
+ ---
12
+
13
+ ## Table of Contents
14
+
15
+ - [Features](#features)
16
+ - [Getting Started](#getting-started)
17
+ - [Configuration](#configuration)
18
+ - [Available Tools](#available-tools)
19
+ - [WebAssembly Acceleration](#webassembly-acceleration)
20
+ - [GraphQL API](#graphql-api)
21
+ - [Docker](#docker)
22
+ - [Documentation](#documentation)
23
+ - [Development](#development)
24
+ - [Contributing](#contributing)
25
+
26
+ ---
10
27
 
11
28
  ## Features
12
29
 
13
- ### Core Capabilities
14
- - **Asset Management** - Browse, import, and create materials
15
- - **Actor Control** - Spawn, delete, and manipulate actors with physics
16
- - **Editor Control** - PIE sessions, camera, and viewport management
17
- - **Level Management** - Load/save levels, lighting, and environment building
18
- - **Animation & Physics** - Blueprints, state machines, ragdolls, constraints
19
- - **Visual Effects** - Niagara particles, GPU simulations, procedural effects
20
- - **Sequencer** - Cinematics, camera animations, and timeline control
21
- - **Console Commands** - Safe execution with dangerous command filtering
30
+ | Category | Capabilities |
31
+ |----------|-------------|
32
+ | **Asset Management** | Browse, import, duplicate, rename, delete assets; create materials |
33
+ | **Actor Control** | Spawn, delete, transform, physics, tags, components |
34
+ | **Editor Control** | PIE sessions, camera, viewport, screenshots, bookmarks |
35
+ | **Level Management** | Load/save levels, streaming, World Partition, data layers |
36
+ | **Animation & Physics** | Animation BPs, state machines, ragdolls, vehicles, constraints |
37
+ | **Visual Effects** | Niagara particles, GPU simulations, procedural effects, debug shapes |
38
+ | **Sequencer** | Cinematics, timeline control, camera animations, keyframes |
39
+ | **Graph Editing** | Blueprint, Niagara, Material, and Behavior Tree graph manipulation |
40
+ | **Audio** | Sound cues, audio components, sound mixes, ambient sounds |
41
+ | **System** | Console commands, UBT, tests, logs, project settings, CVars |
22
42
 
23
- ## Quick Start
43
+ ### Architecture
24
44
 
25
- ### Prerequisites
26
- - Node.js 18+
27
- - Unreal Engine 5.0-5.6
28
- - 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
45
+ - **Native C++ Automation** — All operations route through the MCP Automation Bridge plugin
46
+ - **Graceful Degradation** — Server starts even without an active Unreal connection
47
+ - **On-Demand Connection** — Retries automation handshakes with exponential backoff
48
+ - **Command Safety** Blocks dangerous console commands
49
+ - **Asset Caching** 10-second TTL for improved performance
35
50
 
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.
51
+ ---
37
52
 
38
- ### Plugin feature map
53
+ ## Getting Started
39
54
 
40
- | Plugin | Location | Used By | Notes |
41
- |--------|----------|---------|-------|
42
- | Remote Control API | Developer Tools ▸ Remote 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 |
46
- | Sequencer | Built-in | Sequencer tools | Ensure not disabled in project settings |
47
- | Level Sequence Editor | Animation | Sequencer tools | Activate before calling `manage_sequence` operations |
55
+ ### Prerequisites
48
56
 
49
- ### Installation
57
+ - **Node.js** 18+
58
+ - **Unreal Engine** 5.0–5.7
50
59
 
51
- #### Option 1: NPM Package (Recommended)
60
+ ### Step 1: Install MCP Server
52
61
 
62
+ **Option A: NPX (Recommended)**
53
63
  ```bash
54
- # Install globally
55
- npm install -g unreal-engine-mcp-server
56
-
57
- # Or install locally in your project
58
- npm install unreal-engine-mcp-server
64
+ npx unreal-engine-mcp-server
59
65
  ```
60
66
 
61
- #### Option 2: Clone and Build
62
-
67
+ **Option B: Clone & Build**
63
68
  ```bash
64
- # Clone the repository
65
69
  git clone https://github.com/ChiR24/Unreal_mcp.git
66
70
  cd Unreal_mcp
67
-
68
- # Install dependencies and build
69
71
  npm install
70
72
  npm run build
71
-
72
- # Run directly
73
73
  node dist/cli.js
74
74
  ```
75
75
 
76
- ### Unreal Engine Configuration
76
+ ### Step 2: Install Unreal Plugin
77
77
 
78
- Add to your project's `Config/DefaultEngine.ini`:
78
+ The MCP Automation Bridge plugin is included at `Unreal_mcp/plugins/McpAutomationBridge`.
79
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
80
+ **Method 1: Copy Folder**
81
+ ```
82
+ Copy: Unreal_mcp/plugins/McpAutomationBridge/
83
+ To: YourUnrealProject/Plugins/McpAutomationBridge/
89
84
  ```
85
+ Regenerate project files after copying.
86
+
87
+ **Method 2: Add in Editor**
88
+ 1. Open Unreal Editor → **Edit → Plugins**
89
+ 2. Click **"Add"** → Browse to `Unreal_mcp/plugins/`
90
+ 3. Select the `McpAutomationBridge` folder
90
91
 
91
- Then enable Python execution in: Edit > Project Settings > Plugins > Remote Control
92
+ **Video Guide:**
92
93
 
93
- ## MCP Client Configuration
94
+ https://github.com/user-attachments/assets/d8b86ebc-4364-48c9-9781-de854bf3ef7d
94
95
 
95
- ### Claude Desktop / Cursor
96
+ ### Step 3: Enable Required Plugins
96
97
 
97
- #### For NPM Installation (Local)
98
+ Enable via **Edit Plugins**, then restart the editor:
98
99
 
100
+ | Plugin | Required For |
101
+ |--------|--------------|
102
+ | **MCP Automation Bridge** | All automation operations |
103
+ | **Editor Scripting Utilities** | Asset/Actor subsystem operations |
104
+ | **Sequencer** | Sequencer tools |
105
+ | **Level Sequence Editor** | `manage_sequence` operations |
106
+ | **Control Rig** | `animation_physics` operations |
107
+ | **Subobject Data Interface** | Blueprint components (UE 5.7+) |
108
+
109
+ ### Step 4: Configure MCP Client
110
+
111
+ Add to your Claude Desktop / Cursor config file:
112
+
113
+ **Using Clone/Build:**
99
114
  ```json
100
115
  {
101
116
  "mcpServers": {
102
117
  "unreal-engine": {
103
- "command": "npx",
104
- "args": ["unreal-engine-mcp-server"],
118
+ "command": "node",
119
+ "args": ["path/to/Unreal_mcp/dist/cli.js"],
105
120
  "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"
121
+ "UE_PROJECT_PATH": "C:/Path/To/YourProject",
122
+ "MCP_AUTOMATION_PORT": "8091"
110
123
  }
111
124
  }
112
125
  }
113
126
  }
114
127
  ```
115
128
 
116
- #### For Clone/Build Installation
117
-
129
+ **Using NPX:**
118
130
  ```json
119
131
  {
120
132
  "mcpServers": {
121
133
  "unreal-engine": {
122
- "command": "node",
123
- "args": ["path/to/Unreal_mcp/dist/cli.js"],
134
+ "command": "npx",
135
+ "args": ["unreal-engine-mcp-server"],
124
136
  "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"
137
+ "UE_PROJECT_PATH": "C:/Path/To/YourProject"
129
138
  }
130
139
  }
131
140
  }
132
141
  }
133
142
  ```
134
143
 
135
- ## Available Tools (13)
136
-
137
- | Tool | Description |
138
- |------|-------------|
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 |
152
-
153
- ## Key Features
154
-
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
159
- - **Command Safety** - Blocks dangerous console commands
160
- - **Input Flexibility** - Vectors/rotators accept object or array format
161
- - **Asset Caching** - 10-second TTL for improved performance
162
-
163
- ## Supported Asset Types
164
-
165
- Blueprints, Materials, Textures, Static/Skeletal Meshes, Levels, Sounds, Particles, Niagara Systems
166
-
167
- ## Example Console Commands
168
-
169
- - **Statistics**: `stat fps`, `stat gpu`, `stat memory`
170
- - **View Modes**: `viewmode wireframe`, `viewmode unlit`
171
- - **Gameplay**: `slomo 0.5`, `god`, `fly`
172
- - **Rendering**: `r.screenpercentage 50`, `r.vsync 0`
144
+ ---
173
145
 
174
146
  ## Configuration
175
147
 
176
148
  ### Environment Variables
177
149
 
178
150
  ```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
- UE_PROJECT_PATH="C:/Users/YourName/Documents/Unreal Projects/YourProject" # Absolute path to your .uproject file
183
- LOG_LEVEL=info # debug | info | warn | error
151
+ # Required
152
+ UE_PROJECT_PATH="C:/Path/To/YourProject"
153
+
154
+ # Automation Bridge
155
+ MCP_AUTOMATION_HOST=127.0.0.1
156
+ MCP_AUTOMATION_PORT=8091
157
+
158
+ # Logging
159
+ LOG_LEVEL=info # debug | info | warn | error
160
+
161
+ # Optional
162
+ WASM_ENABLED=true
163
+ MCP_AUTOMATION_REQUEST_TIMEOUT_MS=120000
164
+ ASSET_LIST_TTL_MS=10000
184
165
  ```
185
166
 
186
- ### Docker
167
+ ---
168
+
169
+ ## Available Tools
170
+
171
+ | Tool | Description |
172
+ |------|-------------|
173
+ | `manage_asset` | Assets, Materials, Render Targets, Behavior Trees |
174
+ | `control_actor` | Spawn, delete, transform, physics, tags |
175
+ | `control_editor` | PIE, Camera, viewport, screenshots |
176
+ | `manage_level` | Load/Save, World Partition, streaming |
177
+ | `manage_lighting` | Spawn lights, GI, shadows, build lighting |
178
+ | `manage_performance` | Profiling, optimization, scalability |
179
+ | `animation_physics` | Animation BPs, Vehicles, Ragdolls |
180
+ | `manage_effect` | Niagara, Particles, Debug Shapes |
181
+ | `manage_blueprint` | Create, SCS, Graph Editing |
182
+ | `manage_blueprint_graph` | Direct Blueprint Graph Manipulation |
183
+ | `build_environment` | Landscape, Foliage, Procedural |
184
+ | `system_control` | UBT, Tests, Logs, Project Settings, CVars |
185
+ | `manage_sequence` | Sequencer / Cinematics |
186
+ | `inspect` | Object Introspection |
187
+ | `manage_audio` | Audio Assets & Components |
188
+ | `manage_behavior_tree` | Behavior Tree Graph Editing |
189
+ | `manage_input` | Enhanced Input Actions & Contexts |
190
+
191
+ ### Supported Asset Types
192
+
193
+ Blueprints • Materials • Textures • Static Meshes • Skeletal Meshes • Levels • Sounds • Particles • Niagara Systems • Behavior Trees
194
+
195
+ ---
196
+
197
+ ## WebAssembly Acceleration
198
+
199
+ Optional WASM acceleration for computationally intensive operations. **Enabled by default** when available, falls back to TypeScript automatically.
200
+
201
+ | Operation | Speedup |
202
+ |-----------|---------|
203
+ | JSON parsing | 5–8x |
204
+ | Transform calculations | 5–10x |
205
+ | Vector/matrix math | 5x |
206
+ | Dependency resolution | 3–5x |
207
+
208
+ ### Building WASM (Optional)
187
209
 
188
210
  ```bash
189
- docker build -t unreal-mcp .
190
- docker run -it --rm unreal-mcp
211
+ cargo install wasm-pack # Once per machine
212
+ npm run build # Builds TS + WASM
213
+ ```
214
+
215
+ To disable: `WASM_ENABLED=false`
216
+
217
+ ---
218
+
219
+ ## GraphQL API
220
+
221
+ Optional GraphQL endpoint for complex queries. **Disabled by default.**
222
+
223
+ ```env
224
+ GRAPHQL_ENABLED=true
225
+ GRAPHQL_PORT=4000
191
226
  ```
192
227
 
193
- Pull from Docker Hub
228
+ See [GraphQL API Documentation](docs/GraphQL-API.md).
229
+
230
+ ---
231
+
232
+ ## Docker
194
233
 
195
234
  ```bash
196
- docker pull mcp/server/unreal-engine-mcp-server:latest
197
- docker run --rm -it mcp/server/unreal-engine-mcp-server:latest
235
+ docker build -t unreal-mcp .
236
+ docker run -it --rm -e UE_PROJECT_PATH=/project unreal-mcp
198
237
  ```
199
238
 
239
+ ---
240
+
241
+ ## Documentation
242
+
243
+ | Document | Description |
244
+ |----------|-------------|
245
+ | [Handler Mappings](docs/handler-mapping.md) | TypeScript to C++ routing |
246
+ | [GraphQL API](docs/GraphQL-API.md) | Query and mutation reference |
247
+ | [WebAssembly Integration](docs/WebAssembly-Integration.md) | WASM performance guide |
248
+ | [Plugin Extension](docs/editor-plugin-extension.md) | C++ plugin architecture |
249
+ | [Testing Guide](docs/testing-guide.md) | How to run and write tests |
250
+ | [Migration Guide v0.5.0](docs/Migration-Guide-v0.5.0.md) | Upgrade to v0.5.0 |
251
+ | [Roadmap](docs/Roadmap.md) | Development phases |
252
+ | [Automation Progress](docs/native-automation-progress.md) | Implementation status |
253
+
254
+ ---
255
+
200
256
  ## Development
201
257
 
202
258
  ```bash
203
- npm run build # Build TypeScript
204
- npm run lint # Run ESLint
205
- npm run lint:fix # Fix linting issues
259
+ npm run build # Build TypeScript + WASM
260
+ npm run lint # Run ESLint
261
+ npm run test:unit # Run unit tests
262
+ npm run test:all # Run all tests
206
263
  ```
207
264
 
265
+ ---
266
+
208
267
  ## Contributing
209
268
 
210
269
  Contributions welcome! Please:
@@ -212,6 +271,8 @@ Contributions welcome! Please:
212
271
  - Keep PRs focused and small
213
272
  - Follow existing code style
214
273
 
274
+ ---
275
+
215
276
  ## License
216
277
 
217
- MIT - See [LICENSE](LICENSE) file
278
+ MIT See [LICENSE](LICENSE)
@@ -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
+ }