@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,111 @@
1
+ /**
2
+ * Script tools - 9 tools for script management
3
+ */
4
+ import { callGodot } from '../server.js';
5
+ import { z, ScriptPath, NodePath, GDScriptCode, SearchQuery } from './shared-types.js';
6
+ export function registerScriptTools(server, bridge) {
7
+ // 1. list_scripts
8
+ server.registerTool(
9
+ 'list_scripts',
10
+ {
11
+ description: 'List all GDScript files in the project with class info',
12
+ inputSchema: {
13
+ max_depth: z.number().int().positive().optional().default(10).describe('Maximum directory depth to scan (default: 10)'),
14
+ },
15
+ },
16
+ async () => callGodot(bridge, 'script/list'),
17
+ );
18
+ // 2. read_script
19
+ server.registerTool(
20
+ 'read_script',
21
+ {
22
+ description: 'Read the contents of a GDScript file',
23
+ inputSchema: {
24
+ path: ScriptPath,
25
+ },
26
+ },
27
+ async (args) => callGodot(bridge, 'script/read', args),
28
+ );
29
+ // 3. create_script
30
+ server.registerTool(
31
+ 'create_script',
32
+ {
33
+ description: 'Create a new GDScript file',
34
+ inputSchema: {
35
+ path: ScriptPath.describe("Path for the new script (e.g. 'res://scripts/player.gd')"),
36
+ content: GDScriptCode.describe('GDScript source code'),
37
+ base_class: z.string().optional().describe("Base class (e.g. 'CharacterBody2D')"),
38
+ },
39
+ },
40
+ async (args) => callGodot(bridge, 'script/create', args),
41
+ );
42
+ // 4. delete_script
43
+ server.registerTool(
44
+ 'delete_script',
45
+ {
46
+ description: 'Delete a GDScript file from the project',
47
+ inputSchema: {
48
+ path: ScriptPath.describe('Script file path to delete'),
49
+ },
50
+ },
51
+ async (args) => callGodot(bridge, 'script/delete', args),
52
+ );
53
+ // 5. edit_script
54
+ server.registerTool(
55
+ 'edit_script',
56
+ {
57
+ description: 'Edit an existing GDScript file by replacing a text segment',
58
+ inputSchema: {
59
+ path: ScriptPath,
60
+ old_text: z.string().describe('Exact text to find and replace'),
61
+ new_text: z.string().describe('Replacement text'),
62
+ },
63
+ },
64
+ async (args) => callGodot(bridge, 'script/edit', args),
65
+ );
66
+ // 6. attach_script
67
+ server.registerTool(
68
+ 'attach_script',
69
+ {
70
+ description: 'Attach a GDScript to a node in the scene',
71
+ inputSchema: {
72
+ script_path: ScriptPath.describe('Script file path to attach'),
73
+ node_path: NodePath,
74
+ },
75
+ },
76
+ async (args) => callGodot(bridge, 'script/attach', args),
77
+ );
78
+ // 7. get_open_scripts
79
+ server.registerTool(
80
+ 'get_open_scripts',
81
+ {
82
+ description: 'Get list of scripts currently open in the script editor',
83
+ inputSchema: {},
84
+ },
85
+ async () => callGodot(bridge, 'script/get_open'),
86
+ );
87
+ // 8. validate_script
88
+ server.registerTool(
89
+ 'validate_script',
90
+ {
91
+ description: 'Validate a GDScript file for syntax errors',
92
+ inputSchema: {
93
+ path: ScriptPath.describe('Script file path to validate'),
94
+ },
95
+ },
96
+ async (args) => callGodot(bridge, 'script/validate', args),
97
+ );
98
+ // 9. search_in_files
99
+ server.registerTool(
100
+ 'search_in_files',
101
+ {
102
+ description: 'Search for text across project files',
103
+ inputSchema: {
104
+ query: SearchQuery,
105
+ file_pattern: z.string().optional().describe("File pattern to search in (e.g. '*.gd')"),
106
+ },
107
+ },
108
+ async (args) => callGodot(bridge, 'script/search_in_files', args),
109
+ );
110
+ }
111
+ //# sourceMappingURL=script.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script.js","sourceRoot":"","sources":["../../src/tools/script.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Script scaffolding tools - 8 tools for common game script patterns
3
+ */
4
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
+ import type { GodotBridge } from "../godot-bridge.js";
6
+ export declare function registerScriptScaffoldingTools(server: McpServer, bridge: GodotBridge): void;
7
+ //# sourceMappingURL=script_scaffolding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script_scaffolding.d.ts","sourceRoot":"","sources":["../../src/tools/script_scaffolding.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,8BAA8B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CA+G3F"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Script scaffolding tools - 8 tools for common game script patterns
3
+ */
4
+ import { callGodot } from '../server.js';
5
+ import { z, FilePath, Name, Dimension } from './shared-types.js';
6
+ export function registerScriptScaffoldingTools(server, bridge) {
7
+ // 1. create_character_controller
8
+ server.registerTool(
9
+ 'create_character_controller',
10
+ {
11
+ description: 'Create a character controller script with movement, jumping, and input handling',
12
+ inputSchema: {
13
+ project_path: FilePath.describe('Path to the Godot project root'),
14
+ type: Dimension.describe('Controller dimension type'),
15
+ controller: z.enum(['platformer', 'top_down', 'fps', 'vehicle']).describe('Movement controller style'),
16
+ },
17
+ },
18
+ async (args) => callGodot(bridge, 'script_scaffolding/create_character_controller', args),
19
+ );
20
+ // 2. create_state_machine
21
+ server.registerTool(
22
+ 'create_state_machine',
23
+ {
24
+ description: 'Create a generic state machine script with enter/exit/update for each state',
25
+ inputSchema: {
26
+ project_path: FilePath.describe('Path to the Godot project root'),
27
+ states: z.array(z.string()).describe('List of state names'),
28
+ initial_state: Name.optional().describe('Initial state (defaults to first in list)'),
29
+ },
30
+ },
31
+ async (args) => callGodot(bridge, 'script_scaffolding/create_state_machine', args),
32
+ );
33
+ // 3. create_singleton
34
+ server.registerTool(
35
+ 'create_singleton',
36
+ {
37
+ description: 'Create an autoload singleton script with optional methods',
38
+ inputSchema: {
39
+ project_path: FilePath.describe('Path to the Godot project root'),
40
+ name: Name.describe('Singleton class name'),
41
+ methods: z.array(z.string()).optional().describe('Method names to stub out'),
42
+ },
43
+ },
44
+ async (args) => callGodot(bridge, 'script_scaffolding/create_singleton', args),
45
+ );
46
+ // 4. create_signal_bus
47
+ server.registerTool(
48
+ 'create_signal_bus',
49
+ {
50
+ description: 'Create a signal bus autoload for decoupled event communication',
51
+ inputSchema: {
52
+ project_path: FilePath.describe('Path to the Godot project root'),
53
+ signals: z
54
+ .array(
55
+ z.object({
56
+ name: z.string().describe('Signal name'),
57
+ params: z.array(z.string()).optional().describe('Signal parameter names'),
58
+ }),
59
+ )
60
+ .describe('Signals to define on the bus'),
61
+ },
62
+ },
63
+ async (args) => callGodot(bridge, 'script_scaffolding/create_signal_bus', args),
64
+ );
65
+ // 5. create_save_system
66
+ server.registerTool(
67
+ 'create_save_system',
68
+ {
69
+ description: 'Create a save/load system script with encryption and versioning support',
70
+ inputSchema: {
71
+ project_path: FilePath.describe('Path to the Godot project root'),
72
+ format: z.enum(['json', 'binary', 'resource']).optional().describe('Save file format'),
73
+ },
74
+ },
75
+ async (args) => callGodot(bridge, 'script_scaffolding/create_save_system', args),
76
+ );
77
+ // 6. create_object_pool
78
+ server.registerTool(
79
+ 'create_object_pool',
80
+ {
81
+ description: 'Create an object pool script for efficient reuse of frequently spawned objects',
82
+ inputSchema: {
83
+ project_path: FilePath.describe('Path to the Godot project root'),
84
+ object_type: z.string().describe("The node type to pool (e.g. 'Bullet', 'Particle')"),
85
+ pool_size: z.number().optional().describe('Initial pool size (defaults to 20)'),
86
+ },
87
+ },
88
+ async (args) => callGodot(bridge, 'script_scaffolding/create_object_pool', args),
89
+ );
90
+ // 7. create_command_pattern
91
+ server.registerTool(
92
+ 'create_command_pattern',
93
+ {
94
+ description: 'Create a command pattern implementation for undo/redo and input replay',
95
+ inputSchema: {
96
+ project_path: FilePath.describe('Path to the Godot project root'),
97
+ commands: z.array(z.string()).describe('Command names to implement'),
98
+ },
99
+ },
100
+ async (args) => callGodot(bridge, 'script_scaffolding/create_command_pattern', args),
101
+ );
102
+ // 8. create_observer_pattern
103
+ server.registerTool(
104
+ 'create_observer_pattern',
105
+ {
106
+ description: 'Create an observer/event emitter pattern script for decoupled notifications',
107
+ inputSchema: {
108
+ project_path: FilePath.describe('Path to the Godot project root'),
109
+ events: z.array(z.string()).describe('Event names the observer will emit'),
110
+ },
111
+ },
112
+ async (args) => callGodot(bridge, 'script_scaffolding/create_observer_pattern', args),
113
+ );
114
+ }
115
+ //# sourceMappingURL=script_scaffolding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script_scaffolding.js","sourceRoot":"","sources":["../../src/tools/script_scaffolding.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEjE,MAAM,UAAU,8BAA8B,CAAC,MAAiB,EAAE,MAAmB;IACnF,iCAAiC;IACjC,MAAM,CAAC,YAAY,CACf,6BAA6B,EAC7B;QACE,WAAW,EAAE,iFAAiF;QAC9F,WAAW,EAAE;YACf,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YACjE,IAAI,EAAE,SAAS,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YACrD,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;SACvG;KACE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,gDAAgD,EAAE,IAA+B,CAAC,CACrH,CAAC;IAEJ,0BAA0B;IAC1B,MAAM,CAAC,YAAY,CACf,sBAAsB,EACtB;QACE,WAAW,EAAE,6EAA6E;QAC1F,WAAW,EAAE;YACf,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YACjE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAC3D,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;SACrF;KACE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,yCAAyC,EAAE,IAA+B,CAAC,CAC9G,CAAC;IAEJ,sBAAsB;IACtB,MAAM,CAAC,YAAY,CACf,kBAAkB,EAClB;QACE,WAAW,EAAE,2DAA2D;QACxE,WAAW,EAAE;YACf,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YACjE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YAC3C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;SAC7E;KACE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,qCAAqC,EAAE,IAA+B,CAAC,CAC1G,CAAC;IAEJ,uBAAuB;IACvB,MAAM,CAAC,YAAY,CACf,mBAAmB,EACnB;QACE,WAAW,EAAE,gEAAgE;QAC7E,WAAW,EAAE;YACf,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YACjE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;gBACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;gBACxC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;aAC1E,CAAC,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC;SAC7C;KACE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,sCAAsC,EAAE,IAA+B,CAAC,CAC3G,CAAC;IAEJ,wBAAwB;IACxB,MAAM,CAAC,YAAY,CACf,oBAAoB,EACpB;QACE,WAAW,EAAE,yEAAyE;QACtF,WAAW,EAAE;YACf,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YACjE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;SACvF;KACE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,uCAAuC,EAAE,IAA+B,CAAC,CAC5G,CAAC;IAEJ,wBAAwB;IACxB,MAAM,CAAC,YAAY,CACf,oBAAoB,EACpB;QACE,WAAW,EAAE,gFAAgF;QAC7F,WAAW,EAAE;YACf,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YACjE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YACrF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;SAChF;KACE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,uCAAuC,EAAE,IAA+B,CAAC,CAC5G,CAAC;IAEJ,4BAA4B;IAC5B,MAAM,CAAC,YAAY,CACf,wBAAwB,EACxB;QACE,WAAW,EAAE,wEAAwE;QACrF,WAAW,EAAE;YACf,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YACjE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC;SACrE;KACE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,2CAA2C,EAAE,IAA+B,CAAC,CAChH,CAAC;IAEJ,6BAA6B;IAC7B,MAAM,CAAC,YAAY,CACf,yBAAyB,EACzB;QACE,WAAW,EAAE,6EAA6E;QAC1F,WAAW,EAAE;YACf,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YACjE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;SAC3E;KACE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,4CAA4C,EAAE,IAA+B,CAAC,CACjH,CAAC;AACN,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Security tools - 6 tools for game security management
3
+ */
4
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
5
+ import type { GodotBridge } from "../godot-bridge.js";
6
+ export declare function registerSecurityTools(server: McpServer, bridge: GodotBridge): void;
7
+ //# sourceMappingURL=security.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/tools/security.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,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAuElF"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Security tools - 6 tools for game security management
3
+ */
4
+ import { callGodot } from '../server.js';
5
+ import { z, ScriptPath, FilePath } from './shared-types.js';
6
+ export function registerSecurityTools(server, bridge) {
7
+ // 1. get_security_settings
8
+ server.registerTool(
9
+ 'get_security_settings',
10
+ {
11
+ description: 'Get the current security configuration for the game project',
12
+ inputSchema: {},
13
+ },
14
+ async () => callGodot(bridge, 'get_security_settings'),
15
+ );
16
+ // 2. enable_anti_cheat
17
+ server.registerTool(
18
+ 'enable_anti_cheat',
19
+ {
20
+ description: 'Enable anti-cheat features for the game',
21
+ inputSchema: {
22
+ features: z.array(z.enum(['memory_check', 'speed_hack', 'packet_validation', 'integrity_check'])).describe('Anti-cheat features to enable'),
23
+ },
24
+ },
25
+ async (args) => callGodot(bridge, 'enable_anti_cheat', args),
26
+ );
27
+ // 3. validate_file_integrity
28
+ server.registerTool(
29
+ 'validate_file_integrity',
30
+ {
31
+ description: 'Validate the integrity of a file by computing its hash and optionally comparing against an expected hash',
32
+ inputSchema: {
33
+ file_path: FilePath.describe('Path to the file to validate (res:// or absolute)'),
34
+ expected_hash: z.string().optional().describe('Expected SHA-256 hash to compare against'),
35
+ },
36
+ },
37
+ async (args) => callGodot(bridge, 'validate_file_integrity', args),
38
+ );
39
+ // 4. encrypt_save_data
40
+ server.registerTool(
41
+ 'encrypt_save_data',
42
+ {
43
+ description: 'Encrypt the save data in a specific slot using the provided encryption key',
44
+ inputSchema: {
45
+ slot: z.number().int().min(0).max(99).describe('Save slot number to encrypt (0-99)'),
46
+ key: z.string().min(1).describe('Encryption key (will be hashed to AES-256)'),
47
+ },
48
+ },
49
+ async (args) => callGodot(bridge, 'encrypt_save_data', args),
50
+ );
51
+ // 5. obfuscate_variable
52
+ server.registerTool(
53
+ 'obfuscate_variable',
54
+ {
55
+ description: 'Obfuscate a variable name in a GDScript file to prevent reverse engineering',
56
+ inputSchema: {
57
+ script_path: ScriptPath,
58
+ variable_name: z.string().describe('Name of the variable to obfuscate'),
59
+ },
60
+ },
61
+ async (args) => callGodot(bridge, 'obfuscate_variable', args),
62
+ );
63
+ // 6. get_security_audit
64
+ server.registerTool(
65
+ 'get_security_audit',
66
+ {
67
+ description: 'Run a security audit and return a report of potential vulnerabilities in the project',
68
+ inputSchema: {},
69
+ },
70
+ async () => callGodot(bridge, 'get_security_audit'),
71
+ );
72
+ }
73
+ //# sourceMappingURL=security.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/tools/security.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,UAAU,qBAAqB,CAAC,MAAiB,EAAE,MAAmB;IAC1E,2BAA2B;IAC3B,MAAM,CAAC,YAAY,CACf,uBAAuB,EACvB;QACE,WAAW,EAAE,6DAA6D;QAC1E,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,uBAAuB,CAAC,CACvD,CAAC;IAEJ,uBAAuB;IACvB,MAAM,CAAC,YAAY,CACf,mBAAmB,EACnB;QACE,WAAW,EAAE,yCAAyC;QACtD,WAAW,EAAE;YACf,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;SAC5I;KACE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAA+B,CAAC,CACxF,CAAC;IAEJ,6BAA6B;IAC7B,MAAM,CAAC,YAAY,CACf,yBAAyB,EACzB;QACE,WAAW,EAAE,0GAA0G;QACvH,WAAW,EAAE;YACf,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YACjF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;SAC1F;KACE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,yBAAyB,EAAE,IAA+B,CAAC,CAC9F,CAAC;IAEJ,uBAAuB;IACvB,MAAM,CAAC,YAAY,CACf,mBAAmB,EACnB;QACE,WAAW,EAAE,4EAA4E;QACzF,WAAW,EAAE;YACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YACpF,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,4CAA4C,CAAC;SAC9E;KACE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAA+B,CAAC,CACxF,CAAC;IAEJ,wBAAwB;IACxB,MAAM,CAAC,YAAY,CACf,oBAAoB,EACpB;QACE,WAAW,EAAE,6EAA6E;QAC1F,WAAW,EAAE;YACf,WAAW,EAAE,UAAU;YACvB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;SACxE;KACE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAA+B,CAAC,CACzF,CAAC;IAEJ,wBAAwB;IACxB,MAAM,CAAC,YAAY,CACf,oBAAoB,EACpB;QACE,WAAW,EAAE,sFAAsF;QACnG,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,oBAAoB,CAAC,CACpD,CAAC;AACN,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Shader tools - 9 tools for shader management
3
+ */
4
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
+ import type { GodotBridge } from '../godot-bridge.js';
6
+ export declare function registerShaderTools(server: McpServer, bridge: GodotBridge): void;
7
+ //# sourceMappingURL=shader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader.d.ts","sourceRoot":"","sources":["../../src/tools/shader.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,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAmHhF"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Shader tools - 9 tools for shader management
3
+ */
4
+ import { callGodot } from '../server.js';
5
+ import { z, NodePath, FilePath, PropertyValue, SearchQuery } from './shared-types.js';
6
+ export function registerShaderTools(server, bridge) {
7
+ // 1. create_shader
8
+ server.registerTool(
9
+ 'create_shader',
10
+ {
11
+ description: 'Create a new Shader resource',
12
+ inputSchema: {
13
+ path: FilePath.describe("File path for the shader (e.g. 'res://shaders/outline.gdshader')"),
14
+ type: z
15
+ .enum(['visual', 'spatial', 'canvas_item', 'particles', 'sky', 'fog', 'texture_blit'])
16
+ .optional()
17
+ .default('canvas_item')
18
+ .describe('Shader type: visual/canvas_item (2D), spatial (3D), particles, sky, fog, texture_blit (default: canvas_item)'),
19
+ content: z.string().optional().describe('Initial shader code'),
20
+ },
21
+ },
22
+ async (args) => callGodot(bridge, 'shader/create', args),
23
+ );
24
+ // 2. read_shader
25
+ server.registerTool(
26
+ 'read_shader',
27
+ {
28
+ description: 'Read the contents of a shader file',
29
+ inputSchema: {
30
+ path: FilePath.describe('Shader file path'),
31
+ },
32
+ },
33
+ async (args) => callGodot(bridge, 'shader/read', args),
34
+ );
35
+ // 3. edit_shader
36
+ server.registerTool(
37
+ 'edit_shader',
38
+ {
39
+ description: 'Edit a shader file by replacing old_text with new_text',
40
+ inputSchema: {
41
+ path: FilePath.describe('Shader file path'),
42
+ old_text: z.string().describe('Text to find and replace'),
43
+ new_text: z.string().describe('Replacement text'),
44
+ },
45
+ },
46
+ async (args) => callGodot(bridge, 'shader/edit', args),
47
+ );
48
+ // 4. assign_shader_material
49
+ server.registerTool(
50
+ 'assign_shader_material',
51
+ {
52
+ description: "Create a ShaderMaterial and assign it to a node's material property",
53
+ inputSchema: {
54
+ node_path: NodePath.describe('Node path to assign the material to'),
55
+ shader_path: FilePath.describe('Shader resource path'),
56
+ },
57
+ },
58
+ async (args) => callGodot(bridge, 'shader/assign_material', args),
59
+ );
60
+ // 5. set_shader_param
61
+ server.registerTool(
62
+ 'set_shader_param',
63
+ {
64
+ description: 'Set a shader parameter (uniform) on a ShaderMaterial',
65
+ inputSchema: {
66
+ node_path: NodePath.describe('Node path with the ShaderMaterial'),
67
+ param: z.string().describe('Shader uniform name'),
68
+ value: PropertyValue.describe('Parameter value'),
69
+ },
70
+ },
71
+ async (args) => callGodot(bridge, 'shader/set_param', args),
72
+ );
73
+ // 6. get_shader_params
74
+ server.registerTool(
75
+ 'get_shader_params',
76
+ {
77
+ description: 'Get all shader parameters (uniforms) and their current values',
78
+ inputSchema: {
79
+ node_path: NodePath.describe('Node path with the ShaderMaterial'),
80
+ },
81
+ },
82
+ async (args) => callGodot(bridge, 'shader/get_params', args),
83
+ );
84
+ // 7. list_shaders
85
+ server.registerTool(
86
+ 'list_shaders',
87
+ {
88
+ description: 'List all shader files in the project',
89
+ inputSchema: {
90
+ filter: SearchQuery.optional().describe('Filter by path pattern'),
91
+ },
92
+ },
93
+ async (args) => callGodot(bridge, 'shader/list', args),
94
+ );
95
+ // 8. validate_shader
96
+ server.registerTool(
97
+ 'validate_shader',
98
+ {
99
+ description: 'Validate a shader file for compilation errors',
100
+ inputSchema: {
101
+ path: FilePath.describe('Shader file path'),
102
+ },
103
+ },
104
+ async (args) => callGodot(bridge, 'shader/validate', args),
105
+ );
106
+ // 9. delete_shader
107
+ server.registerTool(
108
+ 'delete_shader',
109
+ {
110
+ description: 'Delete a shader file from the project',
111
+ inputSchema: {
112
+ path: z.string().describe('Shader file path to delete (e.g. res://shaders/my_shader.gdshader)'),
113
+ },
114
+ },
115
+ async (args) => callGodot(bridge, 'shader/delete', args),
116
+ );
117
+ }
118
+ //# sourceMappingURL=shader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shader.js","sourceRoot":"","sources":["../../src/tools/shader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEtF,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,MAAmB;IACxE,mBAAmB;IACnB,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,WAAW,EAAE,8BAA8B;QAC3C,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,kEAAkE,CAAC;YAC3F,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,8GAA8G,CAAC;YACxP,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;SAC/D;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,eAAe,EAAE,IAA+B,CAAC,CACpF,CAAC;IAEF,iBAAiB;IACjB,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,WAAW,EAAE,oCAAoC;QACjD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC;SAC5C;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,IAA+B,CAAC,CAClF,CAAC;IAEF,iBAAiB;IACjB,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,WAAW,EAAE,wDAAwD;QACrE,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAC3C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YACzD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;SAClD;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,IAA+B,CAAC,CAClF,CAAC;IAEF,4BAA4B;IAC5B,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,WAAW,EAAE,qEAAqE;QAClF,WAAW,EAAE;YACX,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YACnE,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,CAAC;SACvD;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,wBAAwB,EAAE,IAA+B,CAAC,CAC7F,CAAC;IAEF,sBAAsB;IACtB,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EAAE,sDAAsD;QACnE,WAAW,EAAE;YACX,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,mCAAmC,CAAC;YACjE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YACjD,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,iBAAiB,CAAC;SACjD;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAA+B,CAAC,CACvF,CAAC;IAEF,uBAAuB;IACvB,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,WAAW,EAAE,+DAA+D;QAC5E,WAAW,EAAE;YACX,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,mCAAmC,CAAC;SAClE;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,mBAAmB,EAAE,IAA+B,CAAC,CACxF,CAAC;IAEF,kBAAkB;IAClB,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EAAE,sCAAsC;QACnD,WAAW,EAAE;YACX,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;SAClE;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,IAA+B,CAAC,CAClF,CAAC;IAEF,qBAAqB;IACrB,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,WAAW,EAAE,+CAA+C;QAC5D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC;SAC5C;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,iBAAiB,EAAE,IAA+B,CAAC,CACtF,CAAC;IAEF,mBAAmB;IACnB,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,WAAW,EAAE,uCAAuC;QACpD,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;SAChG;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,eAAe,EAAE,IAA+B,CAAC,CACpF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Shared Zod schemas and utility types for all tool modules.
3
+ *
4
+ * Every repeated schema literal lives here exactly once.
5
+ * Tool modules import what they need and compose larger schemas
6
+ * from these building blocks.
7
+ */
8
+ import { z } from 'zod';
9
+ /** Node path in the scene tree (e.g. "Player/Sprite2D") */
10
+ export declare const NodePath: z.ZodString;
11
+ /** Scene file path (e.g. "res://scenes/main.tscn") */
12
+ export declare const ScenePath: z.ZodString;
13
+ /** Optional scene file path — defaults to current scene */
14
+ export declare const OptionalScenePath: z.ZodOptional<z.ZodString>;
15
+ /** Script file path (e.g. "res://scripts/player.gd") */
16
+ export declare const ScriptPath: z.ZodString;
17
+ /** Resource file path (.tres, .res) */
18
+ export declare const ResourcePath: z.ZodString;
19
+ /** Generic file path */
20
+ export declare const FilePath: z.ZodString;
21
+ /** Optional file path */
22
+ export declare const OptionalFilePath: z.ZodOptional<z.ZodString>;
23
+ /** Property or field name */
24
+ export declare const PropertyName: z.ZodString;
25
+ /** Any property value */
26
+ export declare const PropertyValue: z.ZodUnknown;
27
+ /** Generic name identifier */
28
+ export declare const Name: z.ZodString;
29
+ /** GDScript code string */
30
+ export declare const GDScriptCode: z.ZodString;
31
+ /** Search query string */
32
+ export declare const SearchQuery: z.ZodString;
33
+ /** Node type name (e.g. "Sprite2D", "CharacterBody3D") */
34
+ export declare const NodeType: z.ZodString;
35
+ /** Parent node path */
36
+ export declare const ParentPath: z.ZodString;
37
+ /** Positive number (> 0) */
38
+ export declare const PositiveNumber: z.ZodNumber;
39
+ /** Non-negative integer (>= 0) */
40
+ export declare const NonNegativeInt: z.ZodNumber;
41
+ /** Positive integer (> 0) */
42
+ export declare const PositiveInt: z.ZodNumber;
43
+ /** Optional positive number */
44
+ export declare const OptionalPositiveNumber: z.ZodOptional<z.ZodNumber>;
45
+ /** Optional timeout in seconds */
46
+ export declare const Timeout: z.ZodOptional<z.ZodNumber>;
47
+ /** Optional boolean flag */
48
+ export declare const OptionalBoolean: z.ZodOptional<z.ZodBoolean>;
49
+ /** Boolean "pressed" state (default: true) */
50
+ export declare const Pressed: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
51
+ /** 2D position as [x, y] */
52
+ export declare const Position2D: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
53
+ /** 3D position as [x, y, z] */
54
+ export declare const Position3D: z.ZodTuple<[z.ZodNumber, z.ZodNumber, z.ZodNumber], null>;
55
+ /** 2D integer coordinates [x, y] (e.g. tilemap cells) */
56
+ export declare const Coord2D: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
57
+ /** 2D size as [width, height] */
58
+ export declare const Size2D: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
59
+ /** Required properties dictionary */
60
+ export declare const Properties: z.ZodRecord<z.ZodString, z.ZodUnknown>;
61
+ /** Optional properties dictionary */
62
+ export declare const OptionalProperties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
63
+ /** 2D or 3D dimension */
64
+ export declare const Dimension: z.ZodEnum<["2d", "3d"]>;
65
+ /** Quality preset level */
66
+ export declare const Quality: z.ZodEnum<["low", "medium", "high", "ultra"]>;
67
+ /** Image format */
68
+ export declare const ImageFormat: z.ZodDefault<z.ZodOptional<z.ZodEnum<["png", "jpg"]>>>;
69
+ /** Optional dimension */
70
+ export declare const OptionalDimension: z.ZodOptional<z.ZodEnum<["2d", "3d"]>>;
71
+ /**
72
+ * Schema for a single-path read/get tool.
73
+ * Use for tools that take only a path and return info.
74
+ */
75
+ export declare function pathOnlySchema(pathDescription: string): {
76
+ path: z.ZodString;
77
+ };
78
+ /**
79
+ * Schema for a path + optional properties tool.
80
+ * Use for tools that configure something at a path.
81
+ */
82
+ export declare function pathWithPropertiesSchema(pathDescription: string, propertiesDescription?: string): {
83
+ path: z.ZodString;
84
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
85
+ };
86
+ /**
87
+ * Schema for a path + required properties tool.
88
+ */
89
+ export declare function pathWithRequiredPropertiesSchema(pathDescription: string, propertiesDescription: string): {
90
+ path: z.ZodString;
91
+ properties: z.ZodRecord<z.ZodString, z.ZodUnknown>;
92
+ };
93
+ /**
94
+ * Schema for a set-property tool (path + property name + value).
95
+ */
96
+ export declare function setPropertySchema(pathDescription: string): {
97
+ path: z.ZodString;
98
+ property: z.ZodString;
99
+ value: z.ZodUnknown;
100
+ };
101
+ /**
102
+ * Schema for a get-property tool (path + optional property name).
103
+ */
104
+ export declare function getPropertySchema(pathDescription: string): {
105
+ path: z.ZodString;
106
+ };
107
+ /**
108
+ * Schema for a parent + name + optional properties creation tool.
109
+ */
110
+ export declare function createChildSchema(parentDescription?: string, nameDescription?: string): {
111
+ parent: z.ZodString;
112
+ name: z.ZodString;
113
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
114
+ };
115
+ /**
116
+ * Schema for a search/filter tool with optional scene scope.
117
+ */
118
+ export declare function scopedSearchSchema(queryDescription: string): {
119
+ query: z.ZodString;
120
+ scene_path: z.ZodOptional<z.ZodString>;
121
+ };
122
+ /** Standard MCP tool result content item */
123
+ export interface ToolContent {
124
+ type: 'text';
125
+ text: string;
126
+ }
127
+ /** Standard MCP tool result */
128
+ export interface ToolResult {
129
+ content: ToolContent[];
130
+ isError?: boolean;
131
+ [key: string]: unknown;
132
+ }
133
+ /** Create a tool result from any serializable data */
134
+ export declare function toolResult(data: unknown): ToolResult;
135
+ /** Create an error tool result */
136
+ export declare function errorResult(message: string): ToolResult;
137
+ export { z };
138
+ //# sourceMappingURL=shared-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared-types.d.ts","sourceRoot":"","sources":["../../src/tools/shared-types.ts"],"names":[],"mappings":"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"}