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,684 @@
1
+ # Migration Guide: v0.5.0 - GraphQL API & WebAssembly Integration
2
+
3
+ ## Overview
4
+
5
+ Version 0.5.0 introduces two major new features to the Unreal Engine MCP Server:
6
+
7
+ 1. **GraphQL API** - A flexible query interface for complex data retrieval
8
+ 2. **WebAssembly Integration** - High-performance operations for critical tasks
9
+
10
+ This guide explains what's new, how to upgrade, and how to take advantage of these features.
11
+
12
+ ## What's New in v0.5.0
13
+
14
+ ### GraphQL API
15
+
16
+ The GraphQL API provides a modern alternative to MCP tools for complex queries:
17
+
18
+ - **Flexible Queries**: Request exactly the data you need
19
+ - **Nested Queries**: Fetch related data in a single request
20
+ - **Real-time Schema**: Introspection and strongly-typed API
21
+ - **Multiple Endpoints**: Run alongside existing MCP tools
22
+ - **Better Performance**: Reduce over-fetching and under-fetching
23
+
24
+ **Endpoint**: `http://127.0.0.1:4000/graphql` (configurable)
25
+
26
+ ### WebAssembly Integration
27
+
28
+ WebAssembly provides 3-8x performance improvements for computational tasks:
29
+
30
+ - **Property Parsing**: 5-8x faster JSON parsing
31
+ - **Transform Math**: 5-10x faster vector/matrix operations
32
+ - **Dependency Resolution**: 3-5x faster asset dependency traversal
33
+ - **Graceful Fallbacks**: Automatic TypeScript fallback if WASM unavailable
34
+
35
+ ## Breaking Changes
36
+
37
+ ### None! ✅
38
+
39
+ All changes are **backward compatible**. Existing MCP tools continue to work exactly as before.
40
+
41
+ ## New Dependencies
42
+
43
+ The following npm dependencies have been added:
44
+
45
+ ```json
46
+ {
47
+ "@graphql-tools/schema": "^10.0.0",
48
+ "@graphql-tools/utils": "^10.0.0",
49
+ "graphql": "^16.8.1",
50
+ "graphql-yoga": "^5.1.0"
51
+ }
52
+ ```
53
+
54
+ **Installation**: These are automatically installed when you run `npm install`.
55
+
56
+ ## Configuration
57
+
58
+ ### Environment Variables
59
+
60
+ #### GraphQL Configuration
61
+
62
+ ```bash
63
+ # Enable/disable GraphQL server
64
+ GRAPHQL_ENABLED=true
65
+
66
+ # Server host and port (default: 127.0.0.1:4000)
67
+ GRAPHQL_HOST=127.0.0.1
68
+ GRAPHQL_PORT=4000
69
+
70
+ # GraphQL endpoint path (default: /graphql)
71
+ GRAPHQL_PATH=/graphql
72
+
73
+ # CORS configuration
74
+ GRAPHQL_CORS_ORIGIN=*
75
+ GRAPHQL_CORS_CREDENTIALS=false
76
+ ```
77
+
78
+ #### WebAssembly Configuration
79
+
80
+ ```bash
81
+ # Enable/disable WebAssembly
82
+ WASM_ENABLED=true
83
+
84
+ # Path to WASM module (default: ./pkg/unreal_mcp_wasm.js)
85
+ WASM_PATH=./pkg/unreal_mcp_wasm.js
86
+
87
+ # Enable/disable TypeScript fallbacks (default: true)
88
+ WASM_FALLBACK_ENABLED=true
89
+
90
+ # Enable/disable performance monitoring (default: true)
91
+ WASM_MONITORING_ENABLED=true
92
+ ```
93
+
94
+ ### Configuration File Example
95
+
96
+ Create a `.env` file in your project root:
97
+
98
+ ```bash
99
+ # GraphQL Settings
100
+ GRAPHQL_ENABLED=true
101
+ GRAPHQL_PORT=4000
102
+ GRAPHQL_HOST=127.0.0.1
103
+
104
+ # WebAssembly Settings
105
+ WASM_ENABLED=true
106
+ WASM_MONITORING_ENABLED=true
107
+
108
+ # Existing MCP settings
109
+ MCP_AUTOMATION_HOST=127.0.0.1
110
+ MCP_AUTOMATION_PORT=8091
111
+ ```
112
+
113
+ ## Migration Steps
114
+
115
+ ### Step 1: Update Dependencies
116
+
117
+ ```bash
118
+ npm install
119
+ ```
120
+
121
+ This installs the new GraphQL dependencies.
122
+
123
+ ### Step 2: Build the Project
124
+
125
+ ```bash
126
+ npm run build
127
+ ```
128
+
129
+ ### Step 3: (Optional) Build WebAssembly Module
130
+
131
+ To enable WebAssembly features:
132
+
133
+ ```bash
134
+ # Install wasm-pack (one-time setup)
135
+ curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
136
+
137
+ # Build the WebAssembly module
138
+ npm run build:wasm
139
+ ```
140
+
141
+ This creates the WebAssembly binary in `src/wasm/pkg/`.
142
+
143
+ **Note**: WebAssembly is optional. The server works with TypeScript fallbacks if WASM is not built.
144
+
145
+ ### Step 4: Update Client Code (Optional)
146
+
147
+ If you want to use the new GraphQL API from your client:
148
+
149
+ ```typescript
150
+ // Old approach (MCP Tool)
151
+ const result = await callTool('manage_asset', {
152
+ action: 'list',
153
+ directory: '/Game'
154
+ });
155
+
156
+ // New approach (GraphQL)
157
+ const query = `
158
+ {
159
+ assets(filter: { pathStartsWith: "/Game" }) {
160
+ edges {
161
+ node {
162
+ name
163
+ path
164
+ class
165
+ }
166
+ }
167
+ totalCount
168
+ }
169
+ }
170
+ `;
171
+
172
+ const result = await fetch('http://127.0.0.1:4000/graphql', {
173
+ method: 'POST',
174
+ headers: { 'Content-Type': 'application/json' },
175
+ body: JSON.stringify({ query })
176
+ });
177
+ ```
178
+
179
+ ### Step 5: Update Docker Configuration (Optional)
180
+
181
+ If you're using Docker:
182
+
183
+ ```dockerfile
184
+ # Dockerfile
185
+ FROM node:18
186
+
187
+ # Install Rust and wasm-pack for WASM builds
188
+ RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
189
+ ENV PATH="/root/.cargo/bin:${PATH}"
190
+ RUN curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
191
+
192
+ WORKDIR /app
193
+ COPY package*.json ./
194
+ RUN npm install
195
+
196
+ # Build TypeScript
197
+ RUN npm run build
198
+
199
+ # Build WebAssembly (optional)
200
+ RUN npm run build:wasm
201
+
202
+ EXPOSE 8090
203
+ EXPOSE 4000
204
+
205
+ CMD ["npm", "start"]
206
+ ```
207
+
208
+ ## Using the New Features
209
+
210
+ ### GraphQL API
211
+
212
+ #### 1. Access the GraphQL Endpoint
213
+
214
+ The GraphQL server runs on a separate port from the MCP server:
215
+
216
+ - **URL**: `http://127.0.0.1:4000/graphql`
217
+ - **Default Port**: 4000
218
+ - **Default Host**: 127.0.0.1
219
+
220
+ #### 2. Use a GraphQL Client
221
+
222
+ You can use any GraphQL client:
223
+
224
+ **GraphiQL (In-browser IDE)**
225
+ ```bash
226
+ # Start the server
227
+ npm start
228
+
229
+ # Open in browser:
230
+ # http://127.0.0.1:4000/graphql
231
+ ```
232
+
233
+ **Apollo Studio**
234
+ ```typescript
235
+ import { ApolloClient, InMemoryCache, gql } from '@apollo/client/core';
236
+
237
+ const client = new ApolloClient({
238
+ uri: 'http://127.0.0.1:4000/graphql',
239
+ cache: new InMemoryCache(),
240
+ });
241
+
242
+ const GET_ASSETS = gql`
243
+ query GetAssets {
244
+ assets {
245
+ edges {
246
+ node {
247
+ name
248
+ path
249
+ class
250
+ }
251
+ }
252
+ }
253
+ }
254
+ `;
255
+
256
+ const result = await client.query({ query: GET_ASSETS });
257
+ ```
258
+
259
+ **Postman/REST Client**
260
+ ```bash
261
+ curl -X POST http://127.0.0.1:4000/graphql \
262
+ -H "Content-Type: application/json" \
263
+ -d '{"query": "{ assets { edges { node { name path } } } }"}'
264
+ ```
265
+
266
+ #### 3. Example Queries
267
+
268
+ **List All Assets**
269
+ ```graphql
270
+ {
271
+ assets {
272
+ edges {
273
+ node {
274
+ name
275
+ path
276
+ class
277
+ packagePath
278
+ }
279
+ }
280
+ totalCount
281
+ }
282
+ }
283
+ ```
284
+
285
+ **Get Actor with Properties**
286
+ ```graphql
287
+ {
288
+ actor(name: "Cube_001") {
289
+ name
290
+ class
291
+ location {
292
+ x
293
+ y
294
+ z
295
+ }
296
+ properties
297
+ }
298
+ }
299
+ ```
300
+
301
+ **Nested Query (Assets + Dependencies)**
302
+ ```graphql
303
+ {
304
+ asset(path: "/Game/Materials/M_Master") {
305
+ name
306
+ class
307
+ dependencies {
308
+ name
309
+ path
310
+ }
311
+ dependents {
312
+ name
313
+ path
314
+ }
315
+ }
316
+ }
317
+ ```
318
+
319
+ **Search Across Types**
320
+ ```graphql
321
+ {
322
+ search(query: "Player", type: ALL) {
323
+ ... on Asset {
324
+ name
325
+ path
326
+ __typename
327
+ }
328
+ ... on Actor {
329
+ name
330
+ class
331
+ __typename
332
+ }
333
+ ... on Blueprint {
334
+ name
335
+ path
336
+ __typename
337
+ }
338
+ }
339
+ }
340
+ ```
341
+
342
+ ### WebAssembly Features
343
+
344
+ WebAssembly features are enabled automatically if the module is built. No client changes needed!
345
+
346
+ #### Performance Monitoring
347
+
348
+ Check WASM performance from your code:
349
+
350
+ ```typescript
351
+ import { wasmIntegration } from 'unreal-mcp-server/src/wasm/index.js';
352
+
353
+ // Initialize WASM
354
+ await wasmIntegration.initialize();
355
+
356
+ // Get performance metrics
357
+ const metrics = wasmIntegration.getMetrics();
358
+ console.log(`WASM operations: ${metrics.wasmOperations}`);
359
+ console.log(`TypeScript operations: ${metrics.tsOperations}`);
360
+ console.log(`Average time: ${metrics.averageTime.toFixed(2)}ms`);
361
+
362
+ // Print full report
363
+ console.log(wasmIntegration.reportPerformance());
364
+ ```
365
+
366
+ #### Using WASM in Your Code
367
+
368
+ The WASM integration is used automatically in:
369
+
370
+ 1. **Property Parsing**: Automatic in GraphQL resolvers and MCP tools
371
+ 2. **Transform Calculations**: Automatic in actor operations
372
+ 3. **Dependency Resolution**: Automatic in asset management
373
+
374
+ You can also use WASM directly:
375
+
376
+ ```typescript
377
+ import { wasmIntegration } from 'unreal-mcp-server/src/wasm/index.js';
378
+
379
+ await wasmIntegration.initialize();
380
+
381
+ // Parse properties with WASM
382
+ const properties = await wasmIntegration.parseProperties(jsonString);
383
+
384
+ // Compose transforms with WASM
385
+ const matrix = wasmIntegration.composeTransform(
386
+ [100, 200, 300], // location
387
+ [0, 90, 0], // rotation
388
+ [1, 1, 1] // scale
389
+ );
390
+
391
+ // Vector operations with WASM
392
+ const sum = wasmIntegration.vectorAdd([1, 2, 3], [4, 5, 6]);
393
+ ```
394
+
395
+ ## Migration Examples
396
+
397
+ ### Example 1: Migrate from MCP Tools to GraphQL
398
+
399
+ **Before (MCP Tool)**
400
+
401
+ ```typescript
402
+ // List assets
403
+ const assetsResult = await callTool('manage_asset', {
404
+ action: 'list',
405
+ directory: '/Game/Materials'
406
+ });
407
+
408
+ // List actors
409
+ const actorsResult = await callTool('control_actor', {
410
+ action: 'list'
411
+ });
412
+
413
+ // Requires 2 separate calls
414
+ ```
415
+
416
+ **After (GraphQL)**
417
+
418
+ ```typescript
419
+ // Single GraphQL query
420
+ const query = `
421
+ {
422
+ assets(filter: { pathStartsWith: "/Game/Materials" }) {
423
+ edges {
424
+ node { name path class }
425
+ }
426
+ }
427
+ actors {
428
+ edges {
429
+ node { name class location { x y z } }
430
+ }
431
+ }
432
+ }
433
+ `;
434
+
435
+ const result = await fetch('http://127.0.0.1:4000/graphql', {
436
+ method: 'POST',
437
+ headers: { 'Content-Type': 'application/json' },
438
+ body: JSON.stringify({ query })
439
+ });
440
+
441
+ // Single call retrieves everything!
442
+ ```
443
+
444
+ ### Example 2: Using WebAssembly for Performance
445
+
446
+ **Before (Pure TypeScript)**
447
+
448
+ ```typescript
449
+ // Parse properties
450
+ function parseProperties(jsonStr) {
451
+ return JSON.parse(jsonStr); // Slow for large objects
452
+ }
453
+
454
+ // Calculate transform
455
+ function composeTransform(location, rotation, scale) {
456
+ // Complex matrix math in JavaScript
457
+ // Can be slow for many operations
458
+ }
459
+ ```
460
+
461
+ **After (With WASM)**
462
+
463
+ ```typescript
464
+ import { wasmIntegration } from 'unreal-mcp-server/src/wasm/index.js';
465
+
466
+ // WASM automatically used if available
467
+ const properties = await wasmIntegration.parseProperties(jsonStr);
468
+ const matrix = wasmIntegration.composeTransform(location, rotation, scale);
469
+
470
+ // 3-8x faster! No code changes needed.
471
+ ```
472
+
473
+ ### Example 3: Client Migration Pattern
474
+
475
+ **Step 1: Detect GraphQL Support**
476
+
477
+ ```typescript
478
+ async function queryUnreal(query: string) {
479
+ // Try GraphQL first
480
+ try {
481
+ const response = await fetch('http://127.0.0.1:4000/graphql', {
482
+ method: 'POST',
483
+ headers: { 'Content-Type': 'application/json' },
484
+ body: JSON.stringify({ query })
485
+ });
486
+
487
+ if (response.ok) {
488
+ return await response.json();
489
+ }
490
+ } catch (error) {
491
+ console.warn('GraphQL unavailable, falling back to MCP tools');
492
+ }
493
+
494
+ // Fallback to MCP tools
495
+ // ... implement fallback logic
496
+ }
497
+ ```
498
+
499
+ **Step 2: Use Optimized Queries**
500
+
501
+ ```typescript
502
+ // Optimize for minimal data transfer
503
+ const query = `
504
+ {
505
+ assets(pagination: { limit: 50 }) {
506
+ edges {
507
+ node {
508
+ name # Only request what you need
509
+ path
510
+ class
511
+ }
512
+ }
513
+ }
514
+ }
515
+ `;
516
+ ```
517
+
518
+ ## Testing
519
+
520
+ ### Run Tests
521
+
522
+ ```bash
523
+ # Test GraphQL server
524
+ npm run test:graphql
525
+
526
+ # Test WebAssembly integration
527
+ npm run test:wasm
528
+
529
+ # Test WASM with full build
530
+ npm run test:wasm:all
531
+
532
+ # Run all existing tests
533
+ npm test
534
+ ```
535
+
536
+ ### Manual Testing
537
+
538
+ 1. **Start the server**:
539
+ ```bash
540
+ npm start
541
+ ```
542
+
543
+ 2. **Test GraphQL**:
544
+ ```bash
545
+ # In another terminal
546
+ curl -X POST http://127.0.0.1:4000/graphql \
547
+ -H "Content-Type: application/json" \
548
+ -d '{"query": "{ assets { edges { node { name } } } }"}'
549
+ ```
550
+
551
+ 3. **Check WASM Status**:
552
+ ```bash
553
+ # Check logs for WASM initialization
554
+ # Look for: "✅ WebAssembly module initialized successfully"
555
+ ```
556
+
557
+ ## Troubleshooting
558
+
559
+ ### GraphQL Server Won't Start
560
+
561
+ **Problem**: Port 4000 already in use
562
+
563
+ **Solution**:
564
+ ```bash
565
+ # Use a different port
566
+ GRAPHQL_PORT=4001 npm start
567
+
568
+ # Or kill the process using port 4000
569
+ lsof -ti:4000 | xargs kill
570
+ ```
571
+
572
+ ### WebAssembly Module Not Loading
573
+
574
+ **Problem**: `Failed to initialize WebAssembly module`
575
+
576
+ **Solution**:
577
+ ```bash
578
+ # Build the WASM module
579
+ npm run build:wasm
580
+
581
+ # Check if file exists
582
+ ls -la src/wasm/pkg/unreal_mcp_wasm.js
583
+
584
+ # Verify WASM is enabled
585
+ echo $WASM_ENABLED # Should be "true"
586
+ ```
587
+
588
+ ### Performance Not Improved
589
+
590
+ **Problem**: Still using TypeScript fallbacks
591
+
592
+ **Solution**:
593
+ 1. Build WASM: `npm run build:wasm`
594
+ 2. Enable WASM: `WASM_ENABLED=true npm start`
595
+ 3. Check logs for: "WebAssembly module initialized successfully"
596
+ 4. Check metrics: `wasmIntegration.getMetrics()`
597
+
598
+ ### Queries Timing Out
599
+
600
+ **Problem**: Complex GraphQL queries taking too long
601
+
602
+ **Solution**:
603
+ 1. Use pagination: Add `pagination: { limit: 50 }`
604
+ 2. Simplify queries: Request only needed fields
605
+ 3. Use filtering: Add `filter` to reduce result set
606
+
607
+ ## Best Practices
608
+
609
+ ### GraphQL
610
+
611
+ 1. **Use Specific Field Selection**: Only request fields you need
612
+ 2. **Use Pagination**: For large datasets
613
+ 3. **Use Filtering**: Reduce server-side processing
614
+ 4. **Use Fragments**: Reuse common field selections
615
+ 5. **Use Variables**: For dynamic queries
616
+
617
+ ### WebAssembly
618
+
619
+ 1. **Monitor Performance**: Use `getMetrics()` to track improvements
620
+ 2. **Measure Before Optimizing**: Don't assume WASM is always faster
621
+ 3. **Handle Fallbacks**: Ensure TypeScript fallback works correctly
622
+ 4. **Test Both Paths**: Verify both WASM and fallback work
623
+
624
+ ## Performance Comparison
625
+
626
+ ### GraphQL vs MCP Tools
627
+
628
+ | Use Case | GraphQL Advantage | When to Use |
629
+ |----------|-------------------|-------------|
630
+ | Complex nested queries | Fetch all data in one request | Multi-object relationships |
631
+ | Custom data shapes | Request exactly what you need | Flexible UI requirements |
632
+ | Multiple resources | Combine queries | Dashboard/data aggregation |
633
+ | Client-side optimization | Reduce over-fetching | Mobile/limited bandwidth |
634
+ | Strong typing | Introspection & IDE support | Better DX |
635
+
636
+ **When to stick with MCP tools**:
637
+ - Simple, single-resource operations
638
+ - Existing code that works well
639
+ - When GraphQL overhead isn't worth it
640
+
641
+ ### WebAssembly Performance
642
+
643
+ | Operation | TypeScript | WASM | Improvement |
644
+ |-----------|------------|------|-------------|
645
+ | Parse 1000 properties | 150-300ms | 20-40ms | **5-8x** |
646
+ | Vector math (1000 ops) | 5-10ms | 1-2ms | **5x** |
647
+ | Transform composition | 5ms | 0.5ms | **10x** |
648
+ | Dependency analysis | 50-100ms | 10-20ms | **5x** |
649
+
650
+ ## Resources
651
+
652
+ ### Documentation
653
+ - [GraphQL API Documentation](GraphQL-API.md)
654
+ - [WebAssembly Integration Guide](WebAssembly-Integration.md)
655
+
656
+ ### Tools
657
+ - [GraphiQL](https://github.com/graphql/graphiql) - In-browser GraphQL IDE
658
+ - [Apollo Studio](https://studio.apollographql.com) - GraphQL platform
659
+ - [Postman](https://www.postman.com/) - API testing
660
+
661
+ ### Learning
662
+ - [GraphQL.org](https://graphql.org/) - Official GraphQL documentation
663
+ - [WebAssembly.org](https://webassembly.org/) - WebAssembly specification
664
+
665
+ ## Support
666
+
667
+ If you encounter issues:
668
+
669
+ 1. Check this migration guide
670
+ 2. Review the documentation files
671
+ 3. Check the troubleshooting sections
672
+ 4. Open an issue on GitHub
673
+
674
+ ## Summary
675
+
676
+ Upgrading to v0.5.0 is straightforward:
677
+
678
+ 1. **No breaking changes** - Everything works as before
679
+ 2. **Optional features** - Enable GraphQL and WASM via environment variables
680
+ 3. **Gradual migration** - Adopt new features at your own pace
681
+ 4. **Better performance** - Get 3-8x improvements automatically with WASM
682
+ 5. **Flexible querying** - Use GraphQL for complex data needs
683
+
684
+ **Start using the new features today!**