@keeveeg/godot-mcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (285) hide show
  1. package/dist/config.d.ts +30 -0
  2. package/dist/config.d.ts.map +1 -0
  3. package/dist/config.js +28 -0
  4. package/dist/config.js.map +1 -0
  5. package/dist/godot-bridge.d.ts +81 -0
  6. package/dist/godot-bridge.d.ts.map +1 -0
  7. package/dist/godot-bridge.js +294 -0
  8. package/dist/godot-bridge.js.map +1 -0
  9. package/dist/index.d.ts +9 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +61 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/server.d.ts +25 -0
  14. package/dist/server.d.ts.map +1 -0
  15. package/dist/server.js +45 -0
  16. package/dist/server.js.map +1 -0
  17. package/dist/tools/accessibility.d.ts +7 -0
  18. package/dist/tools/accessibility.d.ts.map +1 -0
  19. package/dist/tools/accessibility.js +71 -0
  20. package/dist/tools/accessibility.js.map +1 -0
  21. package/dist/tools/addon_management.d.ts +7 -0
  22. package/dist/tools/addon_management.d.ts.map +1 -0
  23. package/dist/tools/addon_management.js +64 -0
  24. package/dist/tools/addon_management.js.map +1 -0
  25. package/dist/tools/analysis.d.ts +7 -0
  26. package/dist/tools/analysis.d.ts.map +1 -0
  27. package/dist/tools/analysis.js +43 -0
  28. package/dist/tools/analysis.js.map +1 -0
  29. package/dist/tools/analytics.d.ts +7 -0
  30. package/dist/tools/analytics.d.ts.map +1 -0
  31. package/dist/tools/analytics.js +76 -0
  32. package/dist/tools/analytics.js.map +1 -0
  33. package/dist/tools/animation.d.ts +7 -0
  34. package/dist/tools/animation.d.ts.map +1 -0
  35. package/dist/tools/animation.js +142 -0
  36. package/dist/tools/animation.js.map +1 -0
  37. package/dist/tools/asset_pipeline.d.ts +7 -0
  38. package/dist/tools/asset_pipeline.d.ts.map +1 -0
  39. package/dist/tools/asset_pipeline.js +102 -0
  40. package/dist/tools/asset_pipeline.js.map +1 -0
  41. package/dist/tools/asset_scaffolding.d.ts +7 -0
  42. package/dist/tools/asset_scaffolding.d.ts.map +1 -0
  43. package/dist/tools/asset_scaffolding.js +113 -0
  44. package/dist/tools/asset_scaffolding.js.map +1 -0
  45. package/dist/tools/audio.d.ts +7 -0
  46. package/dist/tools/audio.d.ts.map +1 -0
  47. package/dist/tools/audio.js +116 -0
  48. package/dist/tools/audio.js.map +1 -0
  49. package/dist/tools/audio_config.d.ts +7 -0
  50. package/dist/tools/audio_config.d.ts.map +1 -0
  51. package/dist/tools/audio_config.js +83 -0
  52. package/dist/tools/audio_config.js.map +1 -0
  53. package/dist/tools/batch.d.ts +7 -0
  54. package/dist/tools/batch.d.ts.map +1 -0
  55. package/dist/tools/batch.js +96 -0
  56. package/dist/tools/batch.js.map +1 -0
  57. package/dist/tools/build_config.d.ts +7 -0
  58. package/dist/tools/build_config.d.ts.map +1 -0
  59. package/dist/tools/build_config.js +98 -0
  60. package/dist/tools/build_config.js.map +1 -0
  61. package/dist/tools/cicd_pipeline.d.ts +7 -0
  62. package/dist/tools/cicd_pipeline.d.ts.map +1 -0
  63. package/dist/tools/cicd_pipeline.js +125 -0
  64. package/dist/tools/cicd_pipeline.js.map +1 -0
  65. package/dist/tools/cloud_services.d.ts +7 -0
  66. package/dist/tools/cloud_services.d.ts.map +1 -0
  67. package/dist/tools/cloud_services.js +97 -0
  68. package/dist/tools/cloud_services.js.map +1 -0
  69. package/dist/tools/code_generation.d.ts +7 -0
  70. package/dist/tools/code_generation.d.ts.map +1 -0
  71. package/dist/tools/code_generation.js +79 -0
  72. package/dist/tools/code_generation.js.map +1 -0
  73. package/dist/tools/code_quality.d.ts +7 -0
  74. package/dist/tools/code_quality.d.ts.map +1 -0
  75. package/dist/tools/code_quality.js +98 -0
  76. package/dist/tools/code_quality.js.map +1 -0
  77. package/dist/tools/collaboration.d.ts +7 -0
  78. package/dist/tools/collaboration.d.ts.map +1 -0
  79. package/dist/tools/collaboration.js +73 -0
  80. package/dist/tools/collaboration.js.map +1 -0
  81. package/dist/tools/debug_config.d.ts +7 -0
  82. package/dist/tools/debug_config.d.ts.map +1 -0
  83. package/dist/tools/debug_config.js +77 -0
  84. package/dist/tools/debug_config.js.map +1 -0
  85. package/dist/tools/debugging.d.ts +7 -0
  86. package/dist/tools/debugging.d.ts.map +1 -0
  87. package/dist/tools/debugging.js +90 -0
  88. package/dist/tools/debugging.js.map +1 -0
  89. package/dist/tools/documentation_tools.d.ts +7 -0
  90. package/dist/tools/documentation_tools.d.ts.map +1 -0
  91. package/dist/tools/documentation_tools.js +89 -0
  92. package/dist/tools/documentation_tools.js.map +1 -0
  93. package/dist/tools/editor.d.ts +7 -0
  94. package/dist/tools/editor.d.ts.map +1 -0
  95. package/dist/tools/editor.js +97 -0
  96. package/dist/tools/editor.js.map +1 -0
  97. package/dist/tools/editor_config.d.ts +7 -0
  98. package/dist/tools/editor_config.d.ts.map +1 -0
  99. package/dist/tools/editor_config.js +92 -0
  100. package/dist/tools/editor_config.js.map +1 -0
  101. package/dist/tools/export.d.ts +7 -0
  102. package/dist/tools/export.d.ts.map +1 -0
  103. package/dist/tools/export.js +81 -0
  104. package/dist/tools/export.js.map +1 -0
  105. package/dist/tools/game_template.d.ts +7 -0
  106. package/dist/tools/game_template.d.ts.map +1 -0
  107. package/dist/tools/game_template.js +112 -0
  108. package/dist/tools/game_template.js.map +1 -0
  109. package/dist/tools/gameplay_automation.d.ts +7 -0
  110. package/dist/tools/gameplay_automation.d.ts.map +1 -0
  111. package/dist/tools/gameplay_automation.js +109 -0
  112. package/dist/tools/gameplay_automation.js.map +1 -0
  113. package/dist/tools/git_integration.d.ts +7 -0
  114. package/dist/tools/git_integration.d.ts.map +1 -0
  115. package/dist/tools/git_integration.js +75 -0
  116. package/dist/tools/git_integration.js.map +1 -0
  117. package/dist/tools/headless_testing.d.ts +7 -0
  118. package/dist/tools/headless_testing.d.ts.map +1 -0
  119. package/dist/tools/headless_testing.js +65 -0
  120. package/dist/tools/headless_testing.js.map +1 -0
  121. package/dist/tools/iap_monetization.d.ts +7 -0
  122. package/dist/tools/iap_monetization.d.ts.map +1 -0
  123. package/dist/tools/iap_monetization.js +70 -0
  124. package/dist/tools/iap_monetization.js.map +1 -0
  125. package/dist/tools/index.d.ts +12 -0
  126. package/dist/tools/index.d.ts.map +1 -0
  127. package/dist/tools/index.js +93 -0
  128. package/dist/tools/index.js.map +1 -0
  129. package/dist/tools/input.d.ts +7 -0
  130. package/dist/tools/input.d.ts.map +1 -0
  131. package/dist/tools/input.js +110 -0
  132. package/dist/tools/input.js.map +1 -0
  133. package/dist/tools/localization.d.ts +7 -0
  134. package/dist/tools/localization.d.ts.map +1 -0
  135. package/dist/tools/localization.js +97 -0
  136. package/dist/tools/localization.js.map +1 -0
  137. package/dist/tools/marketing.d.ts +7 -0
  138. package/dist/tools/marketing.d.ts.map +1 -0
  139. package/dist/tools/marketing.js +87 -0
  140. package/dist/tools/marketing.js.map +1 -0
  141. package/dist/tools/memory_profiling.d.ts +7 -0
  142. package/dist/tools/memory_profiling.d.ts.map +1 -0
  143. package/dist/tools/memory_profiling.js +58 -0
  144. package/dist/tools/memory_profiling.js.map +1 -0
  145. package/dist/tools/mod_support.d.ts +7 -0
  146. package/dist/tools/mod_support.d.ts.map +1 -0
  147. package/dist/tools/mod_support.js +93 -0
  148. package/dist/tools/mod_support.js.map +1 -0
  149. package/dist/tools/navigation.d.ts +7 -0
  150. package/dist/tools/navigation.d.ts.map +1 -0
  151. package/dist/tools/navigation.js +133 -0
  152. package/dist/tools/navigation.js.map +1 -0
  153. package/dist/tools/networking.d.ts +7 -0
  154. package/dist/tools/networking.d.ts.map +1 -0
  155. package/dist/tools/networking.js +94 -0
  156. package/dist/tools/networking.js.map +1 -0
  157. package/dist/tools/node.d.ts +7 -0
  158. package/dist/tools/node.d.ts.map +1 -0
  159. package/dist/tools/node.js +209 -0
  160. package/dist/tools/node.js.map +1 -0
  161. package/dist/tools/node_config.d.ts +7 -0
  162. package/dist/tools/node_config.d.ts.map +1 -0
  163. package/dist/tools/node_config.js +97 -0
  164. package/dist/tools/node_config.js.map +1 -0
  165. package/dist/tools/particles.d.ts +7 -0
  166. package/dist/tools/particles.d.ts.map +1 -0
  167. package/dist/tools/particles.js +118 -0
  168. package/dist/tools/particles.js.map +1 -0
  169. package/dist/tools/performance_optimization.d.ts +7 -0
  170. package/dist/tools/performance_optimization.d.ts.map +1 -0
  171. package/dist/tools/performance_optimization.js +75 -0
  172. package/dist/tools/performance_optimization.js.map +1 -0
  173. package/dist/tools/physics.d.ts +7 -0
  174. package/dist/tools/physics.d.ts.map +1 -0
  175. package/dist/tools/physics.js +106 -0
  176. package/dist/tools/physics.js.map +1 -0
  177. package/dist/tools/physics_config.d.ts +7 -0
  178. package/dist/tools/physics_config.d.ts.map +1 -0
  179. package/dist/tools/physics_config.js +95 -0
  180. package/dist/tools/physics_config.js.map +1 -0
  181. package/dist/tools/platform_export.d.ts +7 -0
  182. package/dist/tools/platform_export.d.ts.map +1 -0
  183. package/dist/tools/platform_export.js +76 -0
  184. package/dist/tools/platform_export.js.map +1 -0
  185. package/dist/tools/platform_specific.d.ts +7 -0
  186. package/dist/tools/platform_specific.d.ts.map +1 -0
  187. package/dist/tools/platform_specific.js +92 -0
  188. package/dist/tools/platform_specific.js.map +1 -0
  189. package/dist/tools/profiling.d.ts +7 -0
  190. package/dist/tools/profiling.d.ts.map +1 -0
  191. package/dist/tools/profiling.js +28 -0
  192. package/dist/tools/profiling.js.map +1 -0
  193. package/dist/tools/project.d.ts +7 -0
  194. package/dist/tools/project.d.ts.map +1 -0
  195. package/dist/tools/project.js +86 -0
  196. package/dist/tools/project.js.map +1 -0
  197. package/dist/tools/project_config.d.ts +7 -0
  198. package/dist/tools/project_config.d.ts.map +1 -0
  199. package/dist/tools/project_config.js +143 -0
  200. package/dist/tools/project_config.js.map +1 -0
  201. package/dist/tools/project_creation.d.ts +7 -0
  202. package/dist/tools/project_creation.d.ts.map +1 -0
  203. package/dist/tools/project_creation.js +147 -0
  204. package/dist/tools/project_creation.js.map +1 -0
  205. package/dist/tools/rendering_config.d.ts +7 -0
  206. package/dist/tools/rendering_config.d.ts.map +1 -0
  207. package/dist/tools/rendering_config.js +110 -0
  208. package/dist/tools/rendering_config.js.map +1 -0
  209. package/dist/tools/resource.d.ts +7 -0
  210. package/dist/tools/resource.d.ts.map +1 -0
  211. package/dist/tools/resource.js +124 -0
  212. package/dist/tools/resource.js.map +1 -0
  213. package/dist/tools/resource_config.d.ts +7 -0
  214. package/dist/tools/resource_config.d.ts.map +1 -0
  215. package/dist/tools/resource_config.js +76 -0
  216. package/dist/tools/resource_config.js.map +1 -0
  217. package/dist/tools/runtime.d.ts +7 -0
  218. package/dist/tools/runtime.d.ts.map +1 -0
  219. package/dist/tools/runtime.js +231 -0
  220. package/dist/tools/runtime.js.map +1 -0
  221. package/dist/tools/save_load.d.ts +7 -0
  222. package/dist/tools/save_load.d.ts.map +1 -0
  223. package/dist/tools/save_load.js +63 -0
  224. package/dist/tools/save_load.js.map +1 -0
  225. package/dist/tools/scene.d.ts +7 -0
  226. package/dist/tools/scene.d.ts.map +1 -0
  227. package/dist/tools/scene.js +129 -0
  228. package/dist/tools/scene.js.map +1 -0
  229. package/dist/tools/scene3d.d.ts +7 -0
  230. package/dist/tools/scene3d.d.ts.map +1 -0
  231. package/dist/tools/scene3d.js +82 -0
  232. package/dist/tools/scene3d.js.map +1 -0
  233. package/dist/tools/scene_config.d.ts +7 -0
  234. package/dist/tools/scene_config.d.ts.map +1 -0
  235. package/dist/tools/scene_config.js +79 -0
  236. package/dist/tools/scene_config.js.map +1 -0
  237. package/dist/tools/scene_scaffolding.d.ts +7 -0
  238. package/dist/tools/scene_scaffolding.d.ts.map +1 -0
  239. package/dist/tools/scene_scaffolding.js +110 -0
  240. package/dist/tools/scene_scaffolding.js.map +1 -0
  241. package/dist/tools/script.d.ts +7 -0
  242. package/dist/tools/script.d.ts.map +1 -0
  243. package/dist/tools/script.js +111 -0
  244. package/dist/tools/script.js.map +1 -0
  245. package/dist/tools/script_scaffolding.d.ts +7 -0
  246. package/dist/tools/script_scaffolding.d.ts.map +1 -0
  247. package/dist/tools/script_scaffolding.js +115 -0
  248. package/dist/tools/script_scaffolding.js.map +1 -0
  249. package/dist/tools/security.d.ts +7 -0
  250. package/dist/tools/security.d.ts.map +1 -0
  251. package/dist/tools/security.js +73 -0
  252. package/dist/tools/security.js.map +1 -0
  253. package/dist/tools/shader.d.ts +7 -0
  254. package/dist/tools/shader.d.ts.map +1 -0
  255. package/dist/tools/shader.js +118 -0
  256. package/dist/tools/shader.js.map +1 -0
  257. package/dist/tools/shared-types.d.ts +138 -0
  258. package/dist/tools/shared-types.d.ts.map +1 -0
  259. package/dist/tools/shared-types.js +170 -0
  260. package/dist/tools/shared-types.js.map +1 -0
  261. package/dist/tools/testing.d.ts +7 -0
  262. package/dist/tools/testing.d.ts.map +1 -0
  263. package/dist/tools/testing.js +78 -0
  264. package/dist/tools/testing.js.map +1 -0
  265. package/dist/tools/theme.d.ts +7 -0
  266. package/dist/tools/theme.d.ts.map +1 -0
  267. package/dist/tools/theme.js +97 -0
  268. package/dist/tools/theme.js.map +1 -0
  269. package/dist/tools/tilemap.d.ts +7 -0
  270. package/dist/tools/tilemap.d.ts.map +1 -0
  271. package/dist/tools/tilemap.js +89 -0
  272. package/dist/tools/tilemap.js.map +1 -0
  273. package/dist/tools/version_control_advanced.d.ts +7 -0
  274. package/dist/tools/version_control_advanced.d.ts.map +1 -0
  275. package/dist/tools/version_control_advanced.js +100 -0
  276. package/dist/tools/version_control_advanced.js.map +1 -0
  277. package/dist/tools/visual_testing.d.ts +7 -0
  278. package/dist/tools/visual_testing.d.ts.map +1 -0
  279. package/dist/tools/visual_testing.js +81 -0
  280. package/dist/tools/visual_testing.js.map +1 -0
  281. package/dist/types.d.ts +77 -0
  282. package/dist/types.d.ts.map +1 -0
  283. package/dist/types.js +37 -0
  284. package/dist/types.js.map +1 -0
  285. package/package.json +49 -0
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Input tools — 7 tools for input simulation
3
+ */
4
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
+ import type { GodotBridge } from '../godot-bridge.js';
6
+ export declare function registerInputTools(server: McpServer, bridge: GodotBridge): void;
7
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/tools/input.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAItD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAyH/E"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Input tools — 7 tools for input simulation
3
+ */
4
+ import { callGodot } from '../server.js';
5
+ import { z, Position2D, Pressed } from './shared-types.js';
6
+ export function registerInputTools(server, bridge) {
7
+ // 1. simulate_key — {keycode: string, pressed?: boolean, echo?: boolean} -> success
8
+ server.registerTool(
9
+ 'simulate_key',
10
+ {
11
+ description: 'Simulate a keyboard key press/release in the running game',
12
+ inputSchema: {
13
+ keycode: z.string().describe("Key code name (e.g. 'KEY_ENTER', 'KEY_SPACE', 'KEY_A')"),
14
+ pressed: Pressed,
15
+ echo: z.boolean().optional().describe('Whether this is an echo/repeat event'),
16
+ },
17
+ },
18
+ async (args) => callGodot(bridge, 'input/simulate_key', args),
19
+ );
20
+ // 2. simulate_mouse_click — {position: [number,number], button?: "left"|"right"|"middle", pressed?: boolean} -> success
21
+ server.registerTool(
22
+ 'simulate_mouse_click',
23
+ {
24
+ description: 'Simulate a mouse click at a screen position',
25
+ inputSchema: {
26
+ position: Position2D.describe('Screen position [x, y]'),
27
+ button: z.enum(['left', 'right', 'middle']).optional().default('left').describe('Mouse button (default: left)'),
28
+ pressed: Pressed,
29
+ },
30
+ },
31
+ async (args) => callGodot(bridge, 'input/simulate_mouse_click', args),
32
+ );
33
+ // 3. simulate_mouse_move — {position: [number,number], relative?: boolean} -> success
34
+ server.registerTool(
35
+ 'simulate_mouse_move',
36
+ {
37
+ description: 'Simulate mouse movement to a screen position',
38
+ inputSchema: {
39
+ position: Position2D.describe('Target screen position [x, y]'),
40
+ relative: z.boolean().optional().describe('If true, position is relative to current mouse position'),
41
+ },
42
+ },
43
+ async (args) => callGodot(bridge, 'input/simulate_mouse_move', args),
44
+ );
45
+ // 4. simulate_action — {action: string, pressed?: boolean} -> success
46
+ server.registerTool(
47
+ 'simulate_action',
48
+ {
49
+ description: 'Simulate an input action (from InputMap) being pressed/released',
50
+ inputSchema: {
51
+ action: z.string().describe("Input action name (e.g. 'ui_accept', 'move_left')"),
52
+ pressed: Pressed,
53
+ },
54
+ },
55
+ async (args) => callGodot(bridge, 'input/simulate_action', args),
56
+ );
57
+ // 5. simulate_sequence — {events: Array<{type: string, delay?: number, [key: string]: any}>} -> success
58
+ server.registerTool(
59
+ 'simulate_sequence',
60
+ {
61
+ description: 'Simulate a sequence of input events with timing',
62
+ inputSchema: {
63
+ events: z
64
+ .array(
65
+ z
66
+ .object({
67
+ type: z.string().describe("Event type (e.g. 'key', 'mouse_click', 'mouse_move', 'action')"),
68
+ delay: z.number().optional().describe('Delay before this event in milliseconds'),
69
+ })
70
+ .passthrough()
71
+ .describe('Additional event-specific properties are passed through'),
72
+ )
73
+ .describe('Sequence of input events to simulate'),
74
+ },
75
+ },
76
+ async (args) => callGodot(bridge, 'input/simulate_sequence', args),
77
+ );
78
+ // 6. get_input_actions — {} -> action list
79
+ server.registerTool(
80
+ 'get_input_actions',
81
+ {
82
+ description: 'Get all input actions defined in the InputMap',
83
+ inputSchema: {},
84
+ },
85
+ async () => callGodot(bridge, 'input/get_actions'),
86
+ );
87
+ // 7. set_input_action — {action: string, events: Array<{type: string, [key: string]: any}>} -> success
88
+ server.registerTool(
89
+ 'set_input_action',
90
+ {
91
+ description: 'Add or modify an input action and its event mappings',
92
+ inputSchema: {
93
+ action: z.string().describe('Action name'),
94
+ deadzone: z.number().min(0).max(1).optional().default(0.5).describe('Input deadzone value (0-1, default: 0.5)'),
95
+ events: z
96
+ .array(
97
+ z
98
+ .object({
99
+ type: z.string().describe("Event type (e.g. 'key', 'mouse_button', 'joypad_button')"),
100
+ })
101
+ .passthrough()
102
+ .describe('Additional event-specific properties are passed through'),
103
+ )
104
+ .describe('List of input events to map to this action'),
105
+ },
106
+ },
107
+ async (args) => callGodot(bridge, 'input/set_action', args),
108
+ );
109
+ }
110
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/tools/input.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Localization tools - 8 tools for multi-language support
3
+ */
4
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
+ import type { GodotBridge } from "../godot-bridge.js";
6
+ export declare function registerLocalizationTools(server: McpServer, bridge: GodotBridge): void;
7
+ //# sourceMappingURL=localization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localization.d.ts","sourceRoot":"","sources":["../../src/tools/localization.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAItD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAiGtF"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Localization tools - 8 tools for multi-language support
3
+ */
4
+ import { callGodot } from '../server.js';
5
+ import { z, FilePath } from './shared-types.js';
6
+ export function registerLocalizationTools(server, bridge) {
7
+ // 1. get_localization_settings
8
+ server.registerTool(
9
+ 'get_localization_settings',
10
+ {
11
+ description: 'Get current localization settings including locale, fallback locale, and translation files',
12
+ inputSchema: {},
13
+ },
14
+ async () => callGodot(bridge, 'localization/get_settings'),
15
+ );
16
+ // 2. set_locale
17
+ server.registerTool(
18
+ 'set_locale',
19
+ {
20
+ description: 'Set the active locale for the project',
21
+ inputSchema: {
22
+ locale: z.string().describe("Locale code to set (e.g. 'en', 'fr', 'ja', 'pt_BR')"),
23
+ },
24
+ },
25
+ async (args) => callGodot(bridge, 'localization/set_locale', args),
26
+ );
27
+ // 3. get_translations
28
+ server.registerTool(
29
+ 'get_translations',
30
+ {
31
+ description: 'Get translation keys and their values, optionally filtered by locale',
32
+ inputSchema: {
33
+ locale: z.string().optional().describe('Locale to get translations for (defaults to current locale)'),
34
+ },
35
+ },
36
+ async (args) => callGodot(bridge, 'localization/get_translations', args),
37
+ );
38
+ // 4. add_translation
39
+ server.registerTool(
40
+ 'add_translation',
41
+ {
42
+ description: 'Add or update a translation key for a specific locale',
43
+ inputSchema: {
44
+ key: z.string().describe("Translation key (e.g. 'UI.MAIN_MENU.START')"),
45
+ locale: z.string().describe("Locale code (e.g. 'en', 'fr')"),
46
+ value: z.string().describe('Translated text value'),
47
+ },
48
+ },
49
+ async (args) => callGodot(bridge, 'localization/add_translation', args),
50
+ );
51
+ // 5. remove_translation
52
+ server.registerTool(
53
+ 'remove_translation',
54
+ {
55
+ description: 'Remove a translation key, optionally from a specific locale only',
56
+ inputSchema: {
57
+ key: z.string().describe('Translation key to remove'),
58
+ locale: z.string().optional().describe('Specific locale to remove from (removes from all if omitted)'),
59
+ },
60
+ },
61
+ async (args) => callGodot(bridge, 'localization/remove_translation', args),
62
+ );
63
+ // 6. import_translations
64
+ server.registerTool(
65
+ 'import_translations',
66
+ {
67
+ description: 'Import translations from an external file (CSV, JSON, PO, or XLIFF)',
68
+ inputSchema: {
69
+ file_path: FilePath.describe('Path to the translation file (res:// or absolute)'),
70
+ format: z.enum(['csv', 'json', 'po', 'xliff']).describe('File format'),
71
+ },
72
+ },
73
+ async (args) => callGodot(bridge, 'localization/import_translations', args),
74
+ );
75
+ // 7. export_translations
76
+ server.registerTool(
77
+ 'export_translations',
78
+ {
79
+ description: 'Export translations for a locale to a file (CSV, JSON, or PO)',
80
+ inputSchema: {
81
+ locale: z.string().describe('Locale to export'),
82
+ format: z.enum(['csv', 'json', 'po']).describe('Export format'),
83
+ },
84
+ },
85
+ async (args) => callGodot(bridge, 'localization/export_translations', args),
86
+ );
87
+ // 8. validate_translations
88
+ server.registerTool(
89
+ 'validate_translations',
90
+ {
91
+ description: 'Validate translations and report missing keys per locale',
92
+ inputSchema: {},
93
+ },
94
+ async () => callGodot(bridge, 'localization/validate_translations'),
95
+ );
96
+ }
97
+ //# sourceMappingURL=localization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localization.js","sourceRoot":"","sources":["../../src/tools/localization.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,MAAmB;IAC9E,+BAA+B;IAC/B,MAAM,CAAC,YAAY,CACf,2BAA2B,EAC3B;QACE,WAAW,EAAE,4FAA4F;QACzG,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAC3D,CAAC;IAEJ,gBAAgB;IAChB,MAAM,CAAC,YAAY,CACf,YAAY,EACZ;QACE,WAAW,EAAE,uCAAuC;QACpD,WAAW,EAAE;YACf,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;SACnF;KACE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,yBAAyB,EAAE,IAA+B,CAAC,CAC9F,CAAC;IAEJ,sBAAsB;IACtB,MAAM,CAAC,YAAY,CACf,kBAAkB,EAClB;QACE,WAAW,EAAE,sEAAsE;QACnF,WAAW,EAAE;YACf,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;SACtG;KACE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,+BAA+B,EAAE,IAA+B,CAAC,CACpG,CAAC;IAEJ,qBAAqB;IACrB,MAAM,CAAC,YAAY,CACf,iBAAiB,EACjB;QACE,WAAW,EAAE,uDAAuD;QACpE,WAAW,EAAE;YACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YACvE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YAC5D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;SACpD;KACE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,8BAA8B,EAAE,IAA+B,CAAC,CACnG,CAAC;IAEJ,wBAAwB;IACxB,MAAM,CAAC,YAAY,CACf,oBAAoB,EACpB;QACE,WAAW,EAAE,kEAAkE;QAC/E,WAAW,EAAE;YACf,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YACrD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;SACvG;KACE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,iCAAiC,EAAE,IAA+B,CAAC,CACtG,CAAC;IAEJ,yBAAyB;IACzB,MAAM,CAAC,YAAY,CACf,qBAAqB,EACrB;QACE,WAAW,EAAE,qEAAqE;QAClF,WAAW,EAAE;YACf,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YACjF,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;SACvE;KACE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,kCAAkC,EAAE,IAA+B,CAAC,CACvG,CAAC;IAEJ,yBAAyB;IACzB,MAAM,CAAC,YAAY,CACf,qBAAqB,EACrB;QACE,WAAW,EAAE,+DAA+D;QAC5E,WAAW,EAAE;YACf,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAC/C,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;SAChE;KACE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,kCAAkC,EAAE,IAA+B,CAAC,CACvG,CAAC;IAEJ,2BAA2B;IAC3B,MAAM,CAAC,YAAY,CACf,uBAAuB,EACvB;QACE,WAAW,EAAE,0DAA0D;QACvE,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,oCAAoC,CAAC,CACpE,CAAC;AACN,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Marketing tools - 6 tools for store assets and promotional material generation
3
+ */
4
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
+ import type { GodotBridge } from "../godot-bridge.js";
6
+ export declare function registerMarketingTools(server: McpServer, bridge: GodotBridge): void;
7
+ //# sourceMappingURL=marketing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketing.d.ts","sourceRoot":"","sources":["../../src/tools/marketing.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAItD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAiFnF"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Marketing tools - 6 tools for store assets and promotional material generation
3
+ */
4
+ import { callGodot } from '../server.js';
5
+ import { z, PositiveNumber, Size2D, FilePath } from './shared-types.js';
6
+ export function registerMarketingTools(server, bridge) {
7
+ // 1. take_store_screenshot
8
+ server.registerTool(
9
+ 'take_store_screenshot',
10
+ {
11
+ description: 'Capture high-resolution screenshots for store listings from specified scenes',
12
+ inputSchema: {
13
+ resolution: Size2D.optional().describe('Screenshot resolution [width, height] (default: [1920, 1080])'),
14
+ scenes: z.array(z.string()).optional().describe('Scene paths to capture (defaults to current scene)'),
15
+ },
16
+ },
17
+ async (args) => callGodot(bridge, 'marketing/take_screenshot', args),
18
+ );
19
+ // 2. create_screenshot_grid
20
+ server.registerTool(
21
+ 'create_screenshot_grid',
22
+ {
23
+ description: 'Combine multiple screenshots into a grid, carousel, or hero layout image',
24
+ inputSchema: {
25
+ screenshots: z.array(z.string()).describe('Paths to screenshot images'),
26
+ layout: z.enum(['grid', 'carousel', 'hero']).optional().describe('Layout style (default: grid)'),
27
+ },
28
+ },
29
+ async (args) => callGodot(bridge, 'marketing/create_grid', args),
30
+ );
31
+ // 3. generate_trailer_script
32
+ server.registerTool(
33
+ 'generate_trailer_script',
34
+ {
35
+ description: 'Generate a trailer script with timed scene sequences and camera actions',
36
+ inputSchema: {
37
+ duration: PositiveNumber.describe('Total trailer duration in seconds'),
38
+ scenes: z
39
+ .array(
40
+ z.object({
41
+ scene: z.string().describe('Scene path'),
42
+ duration: PositiveNumber.describe('Duration for this scene in seconds'),
43
+ action: z.string().optional().describe("Camera action (e.g. 'pan_left', 'zoom_in', 'orbit')"),
44
+ }),
45
+ )
46
+ .describe('Ordered list of scene segments'),
47
+ },
48
+ },
49
+ async (args) => callGodot(bridge, 'marketing/generate_trailer', args),
50
+ );
51
+ // 4. create_app_icon
52
+ server.registerTool(
53
+ 'create_app_icon',
54
+ {
55
+ description: 'Generate an app icon at the specified size and style from the current scene',
56
+ inputSchema: {
57
+ size: z.number().int().positive().describe('Icon size in pixels (e.g. 512, 1024)'),
58
+ style: z.enum(['flat', '3d', 'pixel']).optional().describe('Icon style (default: flat)'),
59
+ },
60
+ },
61
+ async (args) => callGodot(bridge, 'marketing/create_icon', args),
62
+ );
63
+ // 5. generate_store_description
64
+ server.registerTool(
65
+ 'generate_store_description',
66
+ {
67
+ description: 'Generate a platform-optimized store description with features and metadata',
68
+ inputSchema: {
69
+ platform: z.enum(['steam', 'app_store', 'play_store', 'itch']).describe('Target store platform'),
70
+ features: z.array(z.string()).optional().describe('Key features to highlight'),
71
+ },
72
+ },
73
+ async (args) => callGodot(bridge, 'marketing/generate_description', args),
74
+ );
75
+ // 6. create_press_kit
76
+ server.registerTool(
77
+ 'create_press_kit',
78
+ {
79
+ description: 'Generate a complete press kit with screenshots, description, logos, and fact sheet',
80
+ inputSchema: {
81
+ output_path: FilePath.describe('Directory path to save the press kit files'),
82
+ },
83
+ },
84
+ async (args) => callGodot(bridge, 'marketing/create_press_kit', args),
85
+ );
86
+ }
87
+ //# sourceMappingURL=marketing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marketing.js","sourceRoot":"","sources":["../../src/tools/marketing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Memory profiling tools - 5 tools for memory analysis and leak detection
3
+ */
4
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
+ import type { GodotBridge } from '../godot-bridge.js';
6
+ export declare function registerMemoryProfilingTools(server: McpServer, bridge: GodotBridge): void;
7
+ //# sourceMappingURL=memory_profiling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory_profiling.d.ts","sourceRoot":"","sources":["../../src/tools/memory_profiling.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAItD,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAgEzF"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Memory profiling tools - 5 tools for memory analysis and leak detection
3
+ */
4
+ import { callGodot } from '../server.js';
5
+ import { z, NodeType } from './shared-types.js';
6
+ export function registerMemoryProfilingTools(server, bridge) {
7
+ // 1. get_memory_usage
8
+ server.registerTool(
9
+ 'get_memory_usage',
10
+ {
11
+ description: 'Get detailed memory usage breakdown by category (static, video, textures, buffers, objects)',
12
+ inputSchema: {},
13
+ },
14
+ async () => callGodot(bridge, 'get_memory_usage'),
15
+ );
16
+ // 2. track_object_creation
17
+ server.registerTool(
18
+ 'track_object_creation',
19
+ {
20
+ description: 'Track object creation for a specific class over a duration. Records a baseline count; poll get_object_count afterward to see changes.',
21
+ inputSchema: {
22
+ class_name: NodeType.describe("Godot class name to track (e.g. 'Node2D', 'RigidBody3D')"),
23
+ duration: z.number().min(1).max(60).optional().default(10).describe('Tracking duration in seconds (default: 10)'),
24
+ },
25
+ },
26
+ async (args) => callGodot(bridge, 'track_object_creation', args),
27
+ );
28
+ // 3. find_memory_leaks
29
+ server.registerTool(
30
+ 'find_memory_leaks',
31
+ {
32
+ description: 'Analyze the scene tree and object graph to find potential memory leaks (orphan nodes, leaked resources)',
33
+ inputSchema: {},
34
+ },
35
+ async () => callGodot(bridge, 'find_memory_leaks'),
36
+ );
37
+ // 4. get_object_count
38
+ server.registerTool(
39
+ 'get_object_count',
40
+ {
41
+ description: 'Get count of live objects, optionally filtered by class name',
42
+ inputSchema: {
43
+ class_name: NodeType.optional().describe('Filter by class name, or omit for total count'),
44
+ },
45
+ },
46
+ async (args) => callGodot(bridge, 'get_object_count', args),
47
+ );
48
+ // 5. force_garbage_collection
49
+ server.registerTool(
50
+ 'force_garbage_collection',
51
+ {
52
+ description: 'Force garbage collection and report the amount of memory freed',
53
+ inputSchema: {},
54
+ },
55
+ async () => callGodot(bridge, 'force_garbage_collection'),
56
+ );
57
+ }
58
+ //# sourceMappingURL=memory_profiling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory_profiling.js","sourceRoot":"","sources":["../../src/tools/memory_profiling.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,UAAU,4BAA4B,CAAC,MAAiB,EAAE,MAAmB;IACjF,sBAAsB;IACtB,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EACT,6FAA6F;QAC/F,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAClD,CAAC;IAEF,2BAA2B;IAC3B,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,WAAW,EACT,uIAAuI;QACzI,WAAW,EAAE;YACX,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC,0DAA0D,CAAC;YACzF,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,EAAE,CAAC;iBACP,QAAQ,EAAE;iBACV,OAAO,CAAC,EAAE,CAAC;iBACX,QAAQ,CAAC,4CAA4C,CAAC;SAC1D;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,uBAAuB,EAAE,IAA+B,CAAC,CAC5F,CAAC;IAEF,uBAAuB;IACvB,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,WAAW,EACT,yGAAyG;QAC3G,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,mBAAmB,CAAC,CACnD,CAAC;IAEF,sBAAsB;IACtB,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EAAE,8DAA8D;QAC3E,WAAW,EAAE;YACX,UAAU,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;SAC1F;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAA+B,CAAC,CACvF,CAAC;IAEF,8BAA8B;IAC9B,MAAM,CAAC,YAAY,CACjB,0BAA0B,EAC1B;QACE,WAAW,EAAE,gEAAgE;QAC7E,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAC1D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Mod support tools - 8 tools for game modding framework management
3
+ */
4
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
+ import type { GodotBridge } from "../godot-bridge.js";
6
+ export declare function registerModSupportTools(server: McpServer, bridge: GodotBridge): void;
7
+ //# sourceMappingURL=mod_support.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod_support.d.ts","sourceRoot":"","sources":["../../src/tools/mod_support.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAItD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CA6FpF"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Mod support tools - 8 tools for game modding framework management
3
+ */
4
+ import { callGodot } from '../server.js';
5
+ import { z, Name, FilePath } from './shared-types.js';
6
+ export function registerModSupportTools(server, bridge) {
7
+ // 1. get_mod_settings
8
+ server.registerTool(
9
+ 'get_mod_settings',
10
+ {
11
+ description: 'Get the current mod framework configuration',
12
+ inputSchema: {},
13
+ },
14
+ async () => callGodot(bridge, 'get_mod_settings'),
15
+ );
16
+ // 2. enable_modding
17
+ server.registerTool(
18
+ 'enable_modding',
19
+ {
20
+ description: 'Enable the modding framework with optional API version and sandbox settings',
21
+ inputSchema: {
22
+ api_version: z.string().optional().describe("Mod API version to use (default: '1.0')"),
23
+ sandboxed: z.boolean().optional().describe('Whether mods run in a sandboxed environment (default: true)'),
24
+ },
25
+ },
26
+ async (args) => callGodot(bridge, 'enable_modding', args),
27
+ );
28
+ // 3. load_mod
29
+ server.registerTool(
30
+ 'load_mod',
31
+ {
32
+ description: 'Load a mod from the specified path',
33
+ inputSchema: {
34
+ mod_path: FilePath.describe('Path to the mod directory or archive (res:// or user://)'),
35
+ enabled: z.boolean().optional().describe('Whether the mod should be enabled immediately (default: true)'),
36
+ },
37
+ },
38
+ async (args) => callGodot(bridge, 'load_mod', args),
39
+ );
40
+ // 4. unload_mod
41
+ server.registerTool(
42
+ 'unload_mod',
43
+ {
44
+ description: 'Unload a currently loaded mod by its ID',
45
+ inputSchema: {
46
+ mod_id: Name.describe('ID of the mod to unload'),
47
+ },
48
+ },
49
+ async (args) => callGodot(bridge, 'unload_mod', args),
50
+ );
51
+ // 5. get_loaded_mods
52
+ server.registerTool(
53
+ 'get_loaded_mods',
54
+ {
55
+ description: 'Get a list of all currently loaded mods with their status',
56
+ inputSchema: {},
57
+ },
58
+ async () => callGodot(bridge, 'get_loaded_mods'),
59
+ );
60
+ // 6. validate_mod
61
+ server.registerTool(
62
+ 'validate_mod',
63
+ {
64
+ description: 'Validate a mod package for correctness and compatibility',
65
+ inputSchema: {
66
+ mod_path: FilePath.describe('Path to the mod directory or archive to validate'),
67
+ },
68
+ },
69
+ async (args) => callGodot(bridge, 'validate_mod', args),
70
+ );
71
+ // 7. create_mod_template
72
+ server.registerTool(
73
+ 'create_mod_template',
74
+ {
75
+ description: 'Create a new mod template with the specified name and type',
76
+ inputSchema: {
77
+ name: Name.describe('Name for the new mod'),
78
+ type: z.enum(['content', 'gameplay', 'ui', 'total_conversion']).describe('Type of mod to create'),
79
+ },
80
+ },
81
+ async (args) => callGodot(bridge, 'create_mod_template', args),
82
+ );
83
+ // 8. get_mod_api
84
+ server.registerTool(
85
+ 'get_mod_api',
86
+ {
87
+ description: 'Get the available modding API with all functions and hooks available to modders',
88
+ inputSchema: {},
89
+ },
90
+ async () => callGodot(bridge, 'get_mod_api'),
91
+ );
92
+ }
93
+ //# sourceMappingURL=mod_support.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod_support.js","sourceRoot":"","sources":["../../src/tools/mod_support.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Navigation tools - 10 tools for navigation system
3
+ */
4
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
+ import type { GodotBridge } from '../godot-bridge.js';
6
+ export declare function registerNavigationTools(server: McpServer, bridge: GodotBridge): void;
7
+ //# sourceMappingURL=navigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/tools/navigation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAItD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CA6IpF"}