ue-mcp 0.4.0-alpha

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 (141) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +89 -0
  3. package/dist/bridge.d.ts +25 -0
  4. package/dist/bridge.js +124 -0
  5. package/dist/bridge.js.map +1 -0
  6. package/dist/deployer.d.ts +18 -0
  7. package/dist/deployer.js +175 -0
  8. package/dist/deployer.js.map +1 -0
  9. package/dist/editor-control.d.ts +15 -0
  10. package/dist/editor-control.js +181 -0
  11. package/dist/editor-control.js.map +1 -0
  12. package/dist/github-app.d.ts +4 -0
  13. package/dist/github-app.js +94 -0
  14. package/dist/github-app.js.map +1 -0
  15. package/dist/index.d.ts +2 -0
  16. package/dist/index.js +125 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/init.d.ts +2 -0
  19. package/dist/init.js +290 -0
  20. package/dist/init.js.map +1 -0
  21. package/dist/instructions.d.ts +1 -0
  22. package/dist/instructions.js +150 -0
  23. package/dist/instructions.js.map +1 -0
  24. package/dist/project.d.ts +32 -0
  25. package/dist/project.js +175 -0
  26. package/dist/project.js.map +1 -0
  27. package/dist/tools/animation.d.ts +2 -0
  28. package/dist/tools/animation.js +62 -0
  29. package/dist/tools/animation.js.map +1 -0
  30. package/dist/tools/asset.d.ts +2 -0
  31. package/dist/tools/asset.js +128 -0
  32. package/dist/tools/asset.js.map +1 -0
  33. package/dist/tools/audio.d.ts +2 -0
  34. package/dist/tools/audio.js +24 -0
  35. package/dist/tools/audio.js.map +1 -0
  36. package/dist/tools/blueprint.d.ts +2 -0
  37. package/dist/tools/blueprint.js +64 -0
  38. package/dist/tools/blueprint.js.map +1 -0
  39. package/dist/tools/demo.d.ts +2 -0
  40. package/dist/tools/demo.js +10 -0
  41. package/dist/tools/demo.js.map +1 -0
  42. package/dist/tools/editor.d.ts +2 -0
  43. package/dist/tools/editor.js +133 -0
  44. package/dist/tools/editor.js.map +1 -0
  45. package/dist/tools/feedback.d.ts +2 -0
  46. package/dist/tools/feedback.js +44 -0
  47. package/dist/tools/feedback.js.map +1 -0
  48. package/dist/tools/foliage.d.ts +2 -0
  49. package/dist/tools/foliage.js +29 -0
  50. package/dist/tools/foliage.js.map +1 -0
  51. package/dist/tools/gameplay.d.ts +2 -0
  52. package/dist/tools/gameplay.js +101 -0
  53. package/dist/tools/gameplay.js.map +1 -0
  54. package/dist/tools/gas.d.ts +2 -0
  55. package/dist/tools/gas.js +43 -0
  56. package/dist/tools/gas.js.map +1 -0
  57. package/dist/tools/landscape.d.ts +2 -0
  58. package/dist/tools/landscape.js +32 -0
  59. package/dist/tools/landscape.js.map +1 -0
  60. package/dist/tools/level.d.ts +2 -0
  61. package/dist/tools/level.js +66 -0
  62. package/dist/tools/level.js.map +1 -0
  63. package/dist/tools/material.d.ts +2 -0
  64. package/dist/tools/material.js +59 -0
  65. package/dist/tools/material.js.map +1 -0
  66. package/dist/tools/networking.d.ts +2 -0
  67. package/dist/tools/networking.js +42 -0
  68. package/dist/tools/networking.js.map +1 -0
  69. package/dist/tools/niagara.d.ts +2 -0
  70. package/dist/tools/niagara.js +42 -0
  71. package/dist/tools/niagara.js.map +1 -0
  72. package/dist/tools/pcg.d.ts +2 -0
  73. package/dist/tools/pcg.js +39 -0
  74. package/dist/tools/pcg.js.map +1 -0
  75. package/dist/tools/project.d.ts +2 -0
  76. package/dist/tools/project.js +282 -0
  77. package/dist/tools/project.js.map +1 -0
  78. package/dist/tools/reflection.d.ts +2 -0
  79. package/dist/tools/reflection.js +26 -0
  80. package/dist/tools/reflection.js.map +1 -0
  81. package/dist/tools/widget.d.ts +2 -0
  82. package/dist/tools/widget.js +34 -0
  83. package/dist/tools/widget.js.map +1 -0
  84. package/dist/types.d.ts +21 -0
  85. package/dist/types.js +38 -0
  86. package/dist/types.js.map +1 -0
  87. package/package.json +76 -0
  88. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/BridgeServer.cpp +746 -0
  89. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/BridgeServer.h +81 -0
  90. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/GameThreadExecutor.cpp +49 -0
  91. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/GameThreadExecutor.h +37 -0
  92. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/HandlerRegistry.cpp +75 -0
  93. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/HandlerRegistry.h +50 -0
  94. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers.cpp +1418 -0
  95. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers.h +43 -0
  96. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers.cpp +1773 -0
  97. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers.h +48 -0
  98. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AudioHandlers.cpp +289 -0
  99. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AudioHandlers.h +18 -0
  100. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers.cpp +1982 -0
  101. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers.h +44 -0
  102. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/DemoHandlers.cpp +1217 -0
  103. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/DemoHandlers.h +71 -0
  104. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/DialogHandlers.cpp +465 -0
  105. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/DialogHandlers.h +49 -0
  106. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers.cpp +1676 -0
  107. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers.h +53 -0
  108. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/FoliageHandlers.cpp +876 -0
  109. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/FoliageHandlers.h +22 -0
  110. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers.cpp +2222 -0
  111. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers.h +54 -0
  112. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers.cpp +783 -0
  113. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers.h +24 -0
  114. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LandscapeHandlers.cpp +898 -0
  115. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LandscapeHandlers.h +24 -0
  116. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers.cpp +1270 -0
  117. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers.h +34 -0
  118. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MaterialHandlers.cpp +2190 -0
  119. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MaterialHandlers.h +53 -0
  120. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/NetworkingHandlers.cpp +554 -0
  121. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/NetworkingHandlers.h +29 -0
  122. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/NiagaraHandlers.cpp +601 -0
  123. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/NiagaraHandlers.h +25 -0
  124. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/PCGHandlers.cpp +1024 -0
  125. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/PCGHandlers.h +25 -0
  126. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/PhysicsHandlers.cpp +370 -0
  127. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/PhysicsHandlers.h +19 -0
  128. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/ReflectionHandlers.cpp +499 -0
  129. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/ReflectionHandlers.h +27 -0
  130. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SequencerHandlers.cpp +426 -0
  131. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SequencerHandlers.h +19 -0
  132. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SplineHandlers.cpp +303 -0
  133. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SplineHandlers.h +18 -0
  134. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/WidgetHandlers.cpp +985 -0
  135. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/WidgetHandlers.h +27 -0
  136. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/JsonSerializer.cpp +181 -0
  137. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/JsonSerializer.h +42 -0
  138. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/UE_MCP_Bridge.cpp +39 -0
  139. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Public/UE_MCP_BridgeModule.h +14 -0
  140. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/UE_MCP_Bridge.Build.cs +87 -0
  141. package/plugin/ue_mcp_bridge/UE_MCP_Bridge.uplugin +55 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor-control.js","sourceRoot":"","sources":["../src/editor-control.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function submitFeedback(title: string, body: string, labels?: string[]): Promise<{
2
+ url: string;
3
+ number: number;
4
+ }>;
@@ -0,0 +1,94 @@
1
+ import { createSign } from "node:crypto";
2
+ const APP_ID = "3133514";
3
+ const REPO_OWNER = "db-lyon";
4
+ const REPO_NAME = "ue-mcp";
5
+ const EMBEDDED_PEM = `-----BEGIN RSA PRIVATE KEY-----
6
+ MIIEpAIBAAKCAQEAz+75aawv43S5EUSOsSAufEEj9z0bPHM6VoR4sTXmMAoRxhpQ
7
+ yM7UIcQzxhdys1drVWcT1ZchmysRwE+NKgvXX53Yvbi7Fge1At1xHYT3VqFtmqbK
8
+ 9xBRbFqeLb2bFsCku7SMcFey6E8LOlib3m0cynxT2lkvQFIawgfd3oDrtx1IGda2
9
+ Ra6aMUDTd9K/Kb7DTpigckLu/hnrZxzRtbn7qpDQuW53n49xM8/2XKsWGL6Z9psl
10
+ zMTGW2Q7ej63LSLvpWWydZTl6TWQIrUrdK5vPd01yeChnozYlbhthQmXTuV+zOeq
11
+ 3WjPyrgcYLBuxpYUambf72/jH3BASha7KiBtwwIDAQABAoIBAHRBps2Aah4ASuDu
12
+ teEunw711MgNMEcyHbH1yw05l4PQfXOHjxdXHJ/sdQ4SWh0PiYFsaliHcVCyWfBu
13
+ Cf0yNa7OMDqTKHb+xCPf77iTeT7EbuWC0AQm6X9tgvcMBcRI3VHddo/xWKQuXZa3
14
+ qB5KX0iPDssMBjEuNqu5fkFDT4dHIuUWxEdeNa0Aooc2qpR08sxMissPx4/Ii/5i
15
+ JRLEfe40HyrA88nfw5lPAo/IKCkHMuOWjaY43oXLerVjUvtzthidyt9cm5QhGkbf
16
+ 9oAy7oFBoLoSYY1avdW3lS3hFTPMlPPQBJMtF2xJowWYdnpcAFNUTceZcGg/HZNy
17
+ eR0/WEECgYEA++eTSKiNsbXDcXcRdpsbQT7nj2DqizxF0pIqitmqONHXPyckp0RS
18
+ 3BhKqgKQdZkE6yHcM7j0Ze3XpGa0s/+OCpUTGXmdHgkNX6S3jMSJfsC8DhadWY4H
19
+ o5iLh5n+uPf8Eqygzv8YDdI6MsmDB5uTlVehXcubD+Fv74LA+dd18JECgYEA01Bk
20
+ QVikrjhnLtWyHDLsSOq1q45xHhrHtFhgNNsg34rWvBloIbAKyUZ7yJSo9Opti2A+
21
+ GwbmNhlVa8u3rHhN+IaiFG2O7zuFnD0HRAB+Q5zx999lWbNKSdHOoTdq0FUVNWeo
22
+ g4IxjT2jElPJ+/0z6gqmFtd5YrSfJfYaNk6f4xMCgYEAlWGupdfOryPq0s6ZPIye
23
+ jQKQryX58Le9cDHdqJmLqEZILts3kTmjKYH+RPNgV1x23jkmLEXyKL/ysTt2zYcu
24
+ 5Hei6+iCk90qYR18+61RHCmPW4ttpD3lqc48cB2SQH5OrYRRmG8OBKQ2fweg/FH2
25
+ IwnkV4r2WWSGzLHtXju3ZQECgYBwO6qD6ojM37gt7+IBiCpnMAH9dFIwIxkeeDHg
26
+ 4OG82QjkLrpX6iBQdtcX2Z1DN5+m/x79S9TJtvrfnfuX5u3Cqf87ylS4S2zTZraN
27
+ L5XgY2NAu64gzlEOlBijF8PrksUI8F1YO7YFxk7uVQJajEkebTl5uEgIXNaKWwPh
28
+ BDF3cQKBgQCi5aAK+wkUHOIK23d++641luNCBkJKgtOOMnmjiL29WEK/xkHYvgEH
29
+ sYqGb06toaVrPFEEtkPvbbXsdxbw4aGPtQi9c7s9+Jerym2PsUTthC9Cw2nJgBgn
30
+ SRNeKaBiYe12IIVfxqTb8tGVuR3VHxjQR13q5eMn4n08D47PF6VD4g==
31
+ -----END RSA PRIVATE KEY-----`;
32
+ function base64url(input) {
33
+ return Buffer.from(input).toString("base64url");
34
+ }
35
+ function createJWT(pem) {
36
+ const now = Math.floor(Date.now() / 1000);
37
+ const header = base64url(JSON.stringify({ alg: "RS256", typ: "JWT" }));
38
+ const payload = base64url(JSON.stringify({
39
+ iss: APP_ID,
40
+ iat: now - 60,
41
+ exp: now + 600,
42
+ }));
43
+ const unsigned = `${header}.${payload}`;
44
+ const sign = createSign("RSA-SHA256");
45
+ sign.update(unsigned);
46
+ const signature = sign.sign(pem, "base64url");
47
+ return `${unsigned}.${signature}`;
48
+ }
49
+ async function getInstallationToken(jwt) {
50
+ const res = await fetch("https://api.github.com/app/installations", {
51
+ headers: {
52
+ Authorization: `Bearer ${jwt}`,
53
+ Accept: "application/vnd.github+json",
54
+ },
55
+ });
56
+ if (!res.ok) {
57
+ throw new Error(`GitHub App auth failed: ${res.status}`);
58
+ }
59
+ const installations = (await res.json());
60
+ if (installations.length === 0) {
61
+ throw new Error("GitHub App has no installations");
62
+ }
63
+ const tokenRes = await fetch(`https://api.github.com/app/installations/${installations[0].id}/access_tokens`, {
64
+ method: "POST",
65
+ headers: {
66
+ Authorization: `Bearer ${jwt}`,
67
+ Accept: "application/vnd.github+json",
68
+ },
69
+ });
70
+ if (!tokenRes.ok) {
71
+ throw new Error(`Failed to get installation token: ${tokenRes.status}`);
72
+ }
73
+ return (await tokenRes.json()).token;
74
+ }
75
+ export async function submitFeedback(title, body, labels = ["agent-feedback"]) {
76
+ const jwt = createJWT(EMBEDDED_PEM);
77
+ const token = await getInstallationToken(jwt);
78
+ const res = await fetch(`https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/issues`, {
79
+ method: "POST",
80
+ headers: {
81
+ Authorization: `token ${token}`,
82
+ Accept: "application/vnd.github+json",
83
+ "Content-Type": "application/json",
84
+ },
85
+ body: JSON.stringify({ title, body, labels }),
86
+ });
87
+ if (!res.ok) {
88
+ const text = await res.text();
89
+ throw new Error(`Failed to create issue: ${res.status} ${text}`);
90
+ }
91
+ const issue = (await res.json());
92
+ return { url: issue.html_url, number: issue.number };
93
+ }
94
+ //# sourceMappingURL=github-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-app.js","sourceRoot":"","sources":["../src/github-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,MAAM,GAAG,SAAS,CAAC;AACzB,MAAM,UAAU,GAAG,SAAS,CAAC;AAC7B,MAAM,SAAS,GAAG,QAAQ,CAAC;AAE3B,MAAM,YAAY,GAAW;;;;;;;;;;;;;;;;;;;;;;;;;;8BA0BC,CAAC;AAE/B,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,SAAS,CACvB,IAAI,CAAC,SAAS,CAAC;QACb,GAAG,EAAE,MAAM;QACX,GAAG,EAAE,GAAG,GAAG,EAAE;QACb,GAAG,EAAE,GAAG,GAAG,GAAG;KACf,CAAC,CACH,CAAC;IAEF,MAAM,QAAQ,GAAG,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAE9C,OAAO,GAAG,QAAQ,IAAI,SAAS,EAAE,CAAC;AACpC,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,GAAW;IAC7C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,0CAA0C,EAAE;QAClE,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,GAAG,EAAE;YAC9B,MAAM,EAAE,6BAA6B;SACtC;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA0B,CAAC;IAClE,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,4CAA4C,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAC/E;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,GAAG,EAAE;YAC9B,MAAM,EAAE,6BAA6B;SACtC;KACF,CACF,CAAC;IAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,qCAAqC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,OAAQ,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuB,CAAC,KAAK,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAa,EACb,IAAY,EACZ,SAAmB,CAAC,gBAAgB,CAAC;IAErC,MAAM,GAAG,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAE9C,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,gCAAgC,UAAU,IAAI,SAAS,SAAS,EAChE;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,SAAS,KAAK,EAAE;YAC/B,MAAM,EAAE,6BAA6B;YACrC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;KAC9C,CACF,CAAC;IAEF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyC,CAAC;IACzE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;AACvD,CAAC"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/index.js ADDED
@@ -0,0 +1,125 @@
1
+ #!/usr/bin/env node
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
+ import { EditorBridge } from "./bridge.js";
5
+ import { ProjectContext } from "./project.js";
6
+ import { deploy, deploySummary } from "./deployer.js";
7
+ import { SERVER_INSTRUCTIONS } from "./instructions.js";
8
+ import { projectTool } from "./tools/project.js";
9
+ import { assetTool } from "./tools/asset.js";
10
+ import { blueprintTool } from "./tools/blueprint.js";
11
+ import { levelTool } from "./tools/level.js";
12
+ import { materialTool } from "./tools/material.js";
13
+ import { animationTool } from "./tools/animation.js";
14
+ import { landscapeTool } from "./tools/landscape.js";
15
+ import { pcgTool } from "./tools/pcg.js";
16
+ import { foliageTool } from "./tools/foliage.js";
17
+ import { niagaraTool } from "./tools/niagara.js";
18
+ import { audioTool } from "./tools/audio.js";
19
+ import { widgetTool } from "./tools/widget.js";
20
+ import { editorTool } from "./tools/editor.js";
21
+ import { reflectionTool } from "./tools/reflection.js";
22
+ import { gameplayTool } from "./tools/gameplay.js";
23
+ import { gasTool } from "./tools/gas.js";
24
+ import { networkingTool } from "./tools/networking.js";
25
+ import { demoTool } from "./tools/demo.js";
26
+ import { feedbackTool } from "./tools/feedback.js";
27
+ const ALL_TOOLS = [
28
+ projectTool,
29
+ assetTool,
30
+ blueprintTool,
31
+ levelTool,
32
+ materialTool,
33
+ animationTool,
34
+ landscapeTool,
35
+ pcgTool,
36
+ foliageTool,
37
+ niagaraTool,
38
+ audioTool,
39
+ widgetTool,
40
+ editorTool,
41
+ reflectionTool,
42
+ gameplayTool,
43
+ gasTool,
44
+ networkingTool,
45
+ demoTool,
46
+ feedbackTool,
47
+ ];
48
+ async function main() {
49
+ const bridge = new EditorBridge();
50
+ const project = new ProjectContext();
51
+ const ctx = { bridge, project };
52
+ const server = new McpServer({
53
+ name: "ue-mcp",
54
+ version: "0.3.0",
55
+ }, {
56
+ instructions: SERVER_INSTRUCTIONS,
57
+ });
58
+ const disabled = new Set(project.config.disable ?? []);
59
+ const tools = ALL_TOOLS.filter((t) => !disabled.has(t.name));
60
+ for (const tool of tools) {
61
+ const shape = {};
62
+ for (const [key, schema] of Object.entries(tool.schema)) {
63
+ shape[key] = schema;
64
+ }
65
+ server.tool(tool.name, tool.description, shape, async (params) => {
66
+ try {
67
+ const result = await tool.handler(ctx, params);
68
+ return {
69
+ content: [
70
+ {
71
+ type: "text",
72
+ text: typeof result === "string" ? result : JSON.stringify(result, null, 2),
73
+ },
74
+ ],
75
+ };
76
+ }
77
+ catch (e) {
78
+ const msg = e instanceof Error ? e.message : String(e);
79
+ return {
80
+ content: [{ type: "text", text: `Error: ${msg}` }],
81
+ isError: true,
82
+ };
83
+ }
84
+ });
85
+ }
86
+ const projectArg = process.argv.find((a) => !a.startsWith("-") && a !== process.argv[0] && a !== process.argv[1]);
87
+ if (projectArg) {
88
+ try {
89
+ project.setProject(projectArg);
90
+ console.error(`[ue-mcp] Project loaded: ${project.projectName} (engine ${project.engineAssociation ?? "unknown"})`);
91
+ const result = deploy(project);
92
+ console.error(`[ue-mcp] ${deploySummary(result)}`);
93
+ }
94
+ catch (e) {
95
+ console.error(`[ue-mcp] Failed to initialize project: ${e instanceof Error ? e.message : e}`);
96
+ }
97
+ }
98
+ // Always try to connect to the editor bridge
99
+ try {
100
+ await bridge.connect();
101
+ console.error("[ue-mcp] Editor bridge connected — live mode active");
102
+ }
103
+ catch {
104
+ console.error("[ue-mcp] Editor not reachable — will retry in background");
105
+ }
106
+ bridge.startReconnecting();
107
+ if (disabled.size > 0) {
108
+ console.error(`[ue-mcp] Disabled categories: ${[...disabled].join(", ")}`);
109
+ }
110
+ console.error(`[ue-mcp] Registered ${tools.length} tools (category mega-tools)`);
111
+ const transport = new StdioServerTransport();
112
+ await server.connect(transport);
113
+ }
114
+ // Route `ue-mcp init` to the interactive setup
115
+ if (process.argv[2] === "init") {
116
+ process.argv.splice(2, 1);
117
+ import("./init.js");
118
+ }
119
+ else {
120
+ main().catch((e) => {
121
+ console.error(`[ue-mcp] Fatal error: ${e}`);
122
+ process.exit(1);
123
+ });
124
+ }
125
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/init.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/init.js ADDED
@@ -0,0 +1,290 @@
1
+ #!/usr/bin/env node
2
+ import * as fs from "node:fs";
3
+ import * as path from "node:path";
4
+ import * as readline from "node:readline";
5
+ import { ProjectContext } from "./project.js";
6
+ import { deploy } from "./deployer.js";
7
+ /* ------------------------------------------------------------------ */
8
+ /* Terminal helpers */
9
+ /* ------------------------------------------------------------------ */
10
+ const RESET = "\x1b[0m";
11
+ const BOLD = "\x1b[1m";
12
+ const DIM = "\x1b[2m";
13
+ const GREEN = "\x1b[32m";
14
+ const YELLOW = "\x1b[33m";
15
+ const CYAN = "\x1b[36m";
16
+ const RED = "\x1b[31m";
17
+ const ok = (msg) => console.log(` ${GREEN}✓${RESET} ${msg}`);
18
+ const warn = (msg) => console.log(` ${YELLOW}!${RESET} ${msg}`);
19
+ const fail = (msg) => console.log(` ${RED}✗${RESET} ${msg}`);
20
+ const info = (msg) => console.log(` ${DIM}${msg}${RESET}`);
21
+ function createRL() {
22
+ return readline.createInterface({
23
+ input: process.stdin,
24
+ output: process.stdout,
25
+ });
26
+ }
27
+ function ask(rl, question) {
28
+ return new Promise((resolve) => rl.question(question, resolve));
29
+ }
30
+ const CATEGORIES = [
31
+ { name: "project", label: "project", alwaysOn: true },
32
+ { name: "editor", label: "editor", alwaysOn: true },
33
+ { name: "reflection", label: "reflection", alwaysOn: true },
34
+ { name: "level", label: "levels" },
35
+ { name: "blueprint", label: "blueprints" },
36
+ { name: "material", label: "materials" },
37
+ { name: "asset", label: "assets" },
38
+ { name: "animation", label: "animation" },
39
+ { name: "niagara", label: "vfx (niagara)", requiredPlugins: ["Niagara"] },
40
+ { name: "landscape", label: "landscape" },
41
+ { name: "pcg", label: "pcg", requiredPlugins: ["PCG"] },
42
+ { name: "foliage", label: "foliage" },
43
+ { name: "audio", label: "audio" },
44
+ { name: "widget", label: "ui (widgets)" },
45
+ { name: "gameplay", label: "gameplay / ai", requiredPlugins: ["EnhancedInput"] },
46
+ { name: "gas", label: "gas", requiredPlugins: ["GameplayAbilities"] },
47
+ { name: "networking", label: "networking" },
48
+ { name: "demo", label: "demo" },
49
+ { name: "feedback", label: "feedback", alwaysOn: true },
50
+ ];
51
+ function detectMcpClients(projectDir) {
52
+ const home = process.env.HOME || process.env.USERPROFILE || "";
53
+ const clients = [];
54
+ // Claude Code — .mcp.json in project root or ~/.claude/
55
+ const claudeProjectMcp = path.join(projectDir, ".mcp.json");
56
+ const claudeGlobalMcp = path.join(home, ".claude", ".mcp.json");
57
+ clients.push({
58
+ name: "Claude Code (project)",
59
+ configPath: claudeProjectMcp,
60
+ detected: fs.existsSync(claudeProjectMcp),
61
+ });
62
+ clients.push({
63
+ name: "Claude Code (global)",
64
+ configPath: claudeGlobalMcp,
65
+ detected: fs.existsSync(path.dirname(claudeGlobalMcp)),
66
+ });
67
+ // Claude Desktop
68
+ const appData = process.env.APPDATA || path.join(home, "AppData", "Roaming");
69
+ const claudeDesktop = path.join(appData, "Claude", "claude_desktop_config.json");
70
+ clients.push({
71
+ name: "Claude Desktop",
72
+ configPath: claudeDesktop,
73
+ detected: fs.existsSync(path.dirname(claudeDesktop)),
74
+ });
75
+ // Cursor — .cursor/mcp.json in project root
76
+ const cursorMcp = path.join(projectDir, ".cursor", "mcp.json");
77
+ clients.push({
78
+ name: "Cursor",
79
+ configPath: cursorMcp,
80
+ detected: fs.existsSync(path.join(projectDir, ".cursor")),
81
+ });
82
+ return clients;
83
+ }
84
+ function writeMcpConfig(configPath, uprojectPath) {
85
+ let existing = {};
86
+ if (fs.existsSync(configPath)) {
87
+ try {
88
+ existing = JSON.parse(fs.readFileSync(configPath, "utf-8"));
89
+ }
90
+ catch {
91
+ // corrupt file, overwrite
92
+ }
93
+ }
94
+ const mcpServers = (existing.mcpServers ?? {});
95
+ mcpServers["ue-mcp"] = {
96
+ command: "npx",
97
+ args: ["ue-mcp", uprojectPath.replace(/\\/g, "/")],
98
+ };
99
+ existing.mcpServers = mcpServers;
100
+ const dir = path.dirname(configPath);
101
+ if (!fs.existsSync(dir))
102
+ fs.mkdirSync(dir, { recursive: true });
103
+ fs.writeFileSync(configPath, JSON.stringify(existing, null, 2));
104
+ }
105
+ function writeProjectConfig(projectDir, disabled) {
106
+ const configPath = path.join(projectDir, ".ue-mcp.json");
107
+ let existing = {};
108
+ if (fs.existsSync(configPath)) {
109
+ try {
110
+ existing = JSON.parse(fs.readFileSync(configPath, "utf-8"));
111
+ }
112
+ catch {
113
+ // overwrite
114
+ }
115
+ }
116
+ if (disabled.length > 0) {
117
+ existing.disable = disabled;
118
+ }
119
+ else {
120
+ delete existing.disable;
121
+ }
122
+ if (!existing.contentRoots) {
123
+ existing.contentRoots = ["/Game/"];
124
+ }
125
+ fs.writeFileSync(configPath, JSON.stringify(existing, null, 2));
126
+ }
127
+ /* ------------------------------------------------------------------ */
128
+ /* Plugin enablement */
129
+ /* ------------------------------------------------------------------ */
130
+ function ensurePluginsEnabled(uprojectPath, pluginNames) {
131
+ const raw = fs.readFileSync(uprojectPath, "utf-8");
132
+ const root = JSON.parse(raw);
133
+ if (!root.Plugins)
134
+ root.Plugins = [];
135
+ const enabled = [];
136
+ for (const name of pluginNames) {
137
+ const existing = root.Plugins.find((p) => p.Name?.toLowerCase() === name.toLowerCase());
138
+ if (!existing) {
139
+ root.Plugins.push({ Name: name, Enabled: true });
140
+ enabled.push(name);
141
+ }
142
+ else if (!existing.Enabled) {
143
+ existing.Enabled = true;
144
+ enabled.push(name);
145
+ }
146
+ }
147
+ if (enabled.length > 0) {
148
+ fs.writeFileSync(uprojectPath, JSON.stringify(root, null, "\t"));
149
+ }
150
+ return enabled;
151
+ }
152
+ /* ------------------------------------------------------------------ */
153
+ /* Main init flow */
154
+ /* ------------------------------------------------------------------ */
155
+ async function init() {
156
+ console.log("");
157
+ console.log(` ${BOLD}${CYAN}UE-MCP Setup${RESET}`);
158
+ console.log("");
159
+ const rl = createRL();
160
+ // 1. Get project path
161
+ let uprojectPath = process.argv[2] || "";
162
+ if (!uprojectPath) {
163
+ uprojectPath = await ask(rl, ` ${BOLD}?${RESET} UE project path (.uproject or directory): `);
164
+ uprojectPath = uprojectPath.trim().replace(/^["']|["']$/g, "");
165
+ }
166
+ // Resolve to .uproject file
167
+ const project = new ProjectContext();
168
+ try {
169
+ project.setProject(uprojectPath);
170
+ }
171
+ catch (e) {
172
+ fail(e instanceof Error ? e.message : String(e));
173
+ rl.close();
174
+ process.exit(1);
175
+ }
176
+ ok(`Found UE ${project.engineAssociation ?? "?"} project "${project.projectName}"`);
177
+ console.log("");
178
+ // 2. Tool category selection
179
+ console.log(` ${BOLD}?${RESET} Which tool categories do you need?`);
180
+ console.log(` ${DIM}(enter comma-separated numbers to disable, or press Enter for all)${RESET}`);
181
+ console.log("");
182
+ const optional = CATEGORIES.filter((c) => !c.alwaysOn);
183
+ for (let i = 0; i < optional.length; i++) {
184
+ const c = optional[i];
185
+ const plugins = c.requiredPlugins ? ` ${DIM}(requires ${c.requiredPlugins.join(", ")})${RESET}` : "";
186
+ console.log(` ${DIM}${String(i + 1).padStart(2)}.${RESET} ${c.label}${plugins}`);
187
+ }
188
+ console.log("");
189
+ const disableInput = await ask(rl, ` ${BOLD}?${RESET} Disable (e.g. "6,8" or press Enter for none): `);
190
+ const disabled = [];
191
+ if (disableInput.trim()) {
192
+ const indices = disableInput
193
+ .split(",")
194
+ .map((s) => parseInt(s.trim(), 10) - 1)
195
+ .filter((i) => i >= 0 && i < optional.length);
196
+ for (const i of indices) {
197
+ disabled.push(optional[i].name);
198
+ }
199
+ }
200
+ if (disabled.length > 0) {
201
+ info(`Disabled: ${disabled.join(", ")}`);
202
+ }
203
+ else {
204
+ info("All categories enabled");
205
+ }
206
+ console.log("");
207
+ // 3. Determine required plugins
208
+ const requiredPlugins = new Set(["PythonScriptPlugin"]);
209
+ for (const cat of CATEGORIES) {
210
+ if (disabled.includes(cat.name))
211
+ continue;
212
+ if (cat.requiredPlugins) {
213
+ for (const p of cat.requiredPlugins)
214
+ requiredPlugins.add(p);
215
+ }
216
+ }
217
+ // 4. Deploy C++ plugin
218
+ const deployResult = deploy(project);
219
+ if (deployResult.error) {
220
+ fail(`Plugin deployment failed: ${deployResult.error}`);
221
+ }
222
+ else {
223
+ if (deployResult.cppPluginDeployed) {
224
+ ok(`Plugin deployed to ${project.projectName}/Plugins/UE_MCP_Bridge/`);
225
+ }
226
+ else {
227
+ ok("Plugin already deployed");
228
+ }
229
+ }
230
+ // 5. Enable required plugins
231
+ const enabled = ensurePluginsEnabled(project.projectPath, [...requiredPlugins]);
232
+ if (enabled.length > 0) {
233
+ ok(`Enabled: ${enabled.join(", ")}`);
234
+ }
235
+ else {
236
+ ok("Required plugins already enabled");
237
+ }
238
+ // 6. Write .ue-mcp.json
239
+ writeProjectConfig(project.projectDir, disabled);
240
+ ok(".ue-mcp.json written");
241
+ console.log("");
242
+ // 7. MCP client configuration
243
+ const clients = detectMcpClients(project.projectDir);
244
+ const detected = clients.filter((c) => c.detected);
245
+ if (detected.length > 0) {
246
+ console.log(` ${BOLD}?${RESET} MCP clients detected:`);
247
+ for (let i = 0; i < detected.length; i++) {
248
+ console.log(` ${DIM}${i + 1}.${RESET} ${detected[i].name} ${DIM}(${detected[i].configPath})${RESET}`);
249
+ }
250
+ console.log(` ${DIM}${detected.length + 1}.${RESET} Skip`);
251
+ console.log("");
252
+ const clientInput = await ask(rl, ` ${BOLD}?${RESET} Configure which? (e.g. "1" or "1,2" or Enter to skip): `);
253
+ if (clientInput.trim()) {
254
+ const indices = clientInput
255
+ .split(",")
256
+ .map((s) => parseInt(s.trim(), 10) - 1)
257
+ .filter((i) => i >= 0 && i < detected.length);
258
+ for (const i of indices) {
259
+ writeMcpConfig(detected[i].configPath, project.projectPath);
260
+ ok(`${detected[i].name} config written`);
261
+ }
262
+ }
263
+ }
264
+ else {
265
+ warn("No MCP clients detected. Add this to your MCP client config:");
266
+ console.log("");
267
+ console.log(` ${DIM}{`);
268
+ console.log(` "mcpServers": {`);
269
+ console.log(` "ue-mcp": {`);
270
+ console.log(` "command": "npx",`);
271
+ console.log(` "args": ["ue-mcp", "${project.projectPath.replace(/\\/g, "/")}"]`);
272
+ console.log(` }`);
273
+ console.log(` }`);
274
+ console.log(` }${RESET}`);
275
+ console.log("");
276
+ }
277
+ rl.close();
278
+ // 8. Done
279
+ console.log("");
280
+ console.log(` ${BOLD}${GREEN}Setup complete!${RESET}`);
281
+ console.log("");
282
+ console.log(` ${DIM}Restart the editor to load the bridge plugin.`);
283
+ console.log(` Then ask your AI: project(action="get_status")${RESET}`);
284
+ console.log("");
285
+ }
286
+ init().catch((e) => {
287
+ console.error(`\n ${RED}Fatal error: ${e instanceof Error ? e.message : e}${RESET}\n`);
288
+ process.exit(1);
289
+ });
290
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const SERVER_INSTRUCTIONS = "UE-MCP: Unreal Engine editor bridge (C++ plugin) \u2014 19 category tools covering 300+ actions.\n\nEvery tool takes an \"action\" parameter that selects the operation. Call project(action=\"get_status\") first.\n\n\u2550\u2550\u2550 QUICK START \u2550\u2550\u2550\n1. project(action=\"get_status\") \u2014 check if the editor is connected\n2. If not connected: editor(action=\"start_editor\") to launch UE\n3. level(action=\"get_outliner\") \u2014 see what's in the current level\n4. asset(action=\"list\") \u2014 browse project assets\n5. reflection(action=\"reflect_class\", className=\"StaticMeshActor\") \u2014 understand any UE class\n6. demo(action=\"step\", stepIndex=1) through 19 \u2014 run the Neon Shrine demo to see the bridge in action\n7. demo(action=\"cleanup\") \u2014 clean up after the demo\n\n\u2550\u2550\u2550 TOOLS & ACTIONS \u2550\u2550\u2550\n\nproject \u2014 Project status, config INI, C++ source\n get_status, set_project, get_info, read_config, search_config, list_config_tags,\n set_config, read_cpp_header, read_module, list_modules, search_cpp\n\nasset \u2014 Assets: list, search, CRUD, import, datatables, textures\n list, search, read, read_properties, duplicate, rename, move, delete, save,\n import_static_mesh, import_skeletal_mesh, import_animation, import_texture,\n read_datatable, create_datatable, reimport_datatable, list_textures,\n get_texture_info, set_texture_settings\n\nblueprint \u2014 Blueprint reading, authoring, compilation\n read, list_variables, list_functions, read_graph, create, add_variable,\n set_variable_properties, create_function, delete_function, rename_function,\n add_node, delete_node, set_node_property, connect_pins, add_component,\n compile, list_node_types, search_node_types, create_interface, add_interface,\n add_event_dispatcher\n\nlevel \u2014 Level actors, selection, components, volumes, lights, splines\n get_outliner, place_actor, delete_actor, get_actor_details, move_actor,\n select, get_selected, add_component, set_component_property,\n get_current, load, save, list, create,\n spawn_volume, list_volumes, set_volume_properties,\n spawn_light, set_light_properties, build_lighting,\n get_spline_info, set_spline_points\n\nmaterial \u2014 Materials, shading, and graph authoring\n read, list_parameters, set_parameter, create_instance, create,\n set_shading_model, set_base_color, connect_texture,\n add_expression, connect_expressions, connect_to_property,\n list_expressions, delete_expression, list_expression_types, recompile\n\nanimation \u2014 Anim assets, skeletons, montages, blendspaces\n read_anim_blueprint, read_montage, read_sequence, read_blendspace, list,\n create_montage, create_anim_blueprint, create_blendspace, add_notify,\n get_skeleton_info, list_sockets, list_skeletal_meshes, get_physics_asset\n\nlandscape \u2014 Terrain sculpting, painting, layers\n get_info, list_layers, sample, list_splines, get_component,\n sculpt, paint_layer, set_material, add_layer_info, import_heightmap\n\npcg \u2014 Procedural Content Generation graphs\n list_graphs, read_graph, read_node_settings, get_components,\n get_component_details, create_graph, add_node, connect_nodes,\n set_node_settings, remove_node, execute, add_volume\n\nfoliage \u2014 Foliage painting and types\n list_types, get_settings, sample, paint, erase, create_type, set_settings\n\nniagara \u2014 VFX systems and graph authoring\n list, get_info, spawn, set_parameter, create,\n create_emitter, add_emitter, list_emitters, set_emitter_property,\n list_modules, get_emitter_info\n\naudio \u2014 Sound assets and playback\n list, play_at_location, spawn_ambient, create_cue, create_metasound\n\nwidget \u2014 UMG widgets and editor utilities\n read_tree, get_details, set_property, list, read_animations, create,\n create_utility_widget, run_utility_widget,\n create_utility_blueprint, run_utility_blueprint\n\neditor \u2014 Console, Python, PIE, viewport, sequencer, perf, build pipeline, logs\n execute_command, execute_python, set_property, play_in_editor,\n get_runtime_value, hot_reload, undo, redo,\n get_perf_stats, run_stat, set_scalability, capture_screenshot,\n get_viewport, set_viewport, focus_on_actor,\n create_sequence, get_sequence_info, add_sequence_track, play_sequence,\n build_all, build_geometry, build_hlod, validate_assets,\n get_build_status, cook_content,\n get_log, search_log, get_message_log,\n set_dialog_policy, clear_dialog_policy, get_dialog_policy,\n list_dialogs, respond_to_dialog\n\nreflection \u2014 UE class/struct/enum reflection, gameplay tags\n reflect_class, reflect_struct, reflect_enum, list_classes,\n list_tags, create_tag\n\ngameplay \u2014 Physics, collision, navigation, input, behavior trees, AI, game framework\n set_collision_profile, set_simulate_physics, set_collision_enabled,\n set_physics_properties, rebuild_navigation, get_navmesh_info,\n project_to_nav, spawn_nav_modifier,\n create_input_action, create_input_mapping, list_input_assets,\n list_behavior_trees, get_behavior_tree_info,\n create_blackboard, create_behavior_tree,\n create_eqs_query, list_eqs_queries,\n add_perception, configure_sense,\n create_state_tree, list_state_trees, add_state_tree_component,\n create_smart_object_def, add_smart_object_component,\n create_game_mode, create_game_state, create_player_controller,\n create_player_state, create_hud, set_world_game_mode, get_framework_info\n\ngas \u2014 Gameplay Ability System\n add_asc, create_attribute_set, add_attribute,\n create_ability, set_ability_tags,\n create_effect, set_effect_modifier,\n create_cue, get_info\n\nnetworking \u2014 Replication and networking\n set_replicates, set_property_replicated, configure_net_frequency,\n set_dormancy, set_net_load_on_client, set_always_relevant,\n set_only_relevant_to_owner, configure_cull_distance,\n set_priority, set_replicate_movement, get_info\n\ndemo \u2014 Neon Shrine demo scene\n step, cleanup\n\nfeedback \u2014 Agent feedback submission\n submit\n\n\u2550\u2550\u2550 TIPS \u2550\u2550\u2550\n\u2022 Start with level(action=\"get_outliner\") or asset(action=\"list\") to discover what's in the project.\n\u2022 Use reflection(action=\"reflect_class\") to understand any UE class's properties.\n\u2022 asset(action=\"search\", query=\"/Game/Characters/*\") accepts wildcards.\n\u2022 For BP scripting: blueprint(action=\"search_node_types\") \u2192 blueprint(action=\"add_node\") \u2192 blueprint(action=\"connect_pins\").\n\u2022 editor(action=\"execute_python\") is the escape hatch for any Unreal Python API call.\n\u2022 Animation tools need a skeleton path \u2014 use animation(action=\"list_skeletal_meshes\") to find it.\n\u2022 Editor lifecycle: editor(action=\"stop_editor\") / editor(action=\"start_editor\") / editor(action=\"restart_editor\") manage the UE process.\n\u2022 editor(action=\"hot_reload\") triggers Live Coding compilation without restarting the editor.\n\u2022 editor(action=\"focus_on_actor\", actorLabel=\"MyActor\") snaps the viewport to any actor.\n\u2022 Log output: editor(action=\"get_log\", category=\"LogMCPBridge\") to see bridge-specific logs.\n\n\u2550\u2550\u2550 FEEDBACK \u2550\u2550\u2550\nIf you had to use editor(action=\"execute_python\") as a workaround because a native tool\ncouldn't handle the task, keep a mental note of what you did and why. When your task is\ncomplete, tell the user:\n \"I had to use custom Python scripts to [describe what]. Would you like to submit\n feedback to help improve ue-mcp?\"\nIf the user agrees, call feedback(action=\"submit\") with:\n \u2022 title \u2014 short, generic description of the gap (no project-specific details)\n \u2022 summary \u2014 what was attempted and why the native tool fell short\n \u2022 pythonWorkaround \u2014 the Python code that was used\n \u2022 idealTool \u2014 what tool/action should handle this natively\nThis creates a GitHub issue so the maintainers can add proper support.\n";