@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,92 @@
1
+ /**
2
+ * Platform-specific tools - 6 tools for platform configuration and validation
3
+ */
4
+ import { callGodot } from '../server.js';
5
+ import { z, OptionalProperties } from './shared-types.js';
6
+ export function registerPlatformSpecificTools(server, bridge) {
7
+ // 1. get_platform_settings
8
+ server.registerTool(
9
+ 'get_platform_settings',
10
+ {
11
+ description: 'Get platform-specific settings for a target platform',
12
+ inputSchema: {
13
+ platform: z.string().describe("Platform name (e.g. 'ios', 'android', 'web', 'windows', 'linux', 'macos')"),
14
+ },
15
+ },
16
+ async (args) => callGodot(bridge, 'get_platform_settings', args),
17
+ );
18
+ // 2. configure_ios
19
+ server.registerTool(
20
+ 'configure_ios',
21
+ {
22
+ description: 'Configure iOS-specific project settings including bundle ID, team ID, and code signing',
23
+ inputSchema: {
24
+ settings: z
25
+ .object({
26
+ bundle_id: z.string().optional().describe('iOS bundle identifier (e.g. com.company.game)'),
27
+ team_id: z.string().optional().describe('Apple Developer Team ID'),
28
+ signing: OptionalProperties.describe('Code signing configuration'),
29
+ })
30
+ .describe('iOS settings to configure'),
31
+ },
32
+ },
33
+ async (args) => callGodot(bridge, 'configure_ios', args),
34
+ );
35
+ // 3. configure_android
36
+ server.registerTool(
37
+ 'configure_android',
38
+ {
39
+ description: 'Configure Android-specific project settings including package name, keystore, and permissions',
40
+ inputSchema: {
41
+ settings: z
42
+ .object({
43
+ package_name: z.string().optional().describe('Android package name (e.g. com.company.game)'),
44
+ keystore: OptionalProperties.describe('Keystore configuration for signing'),
45
+ permissions: z.array(z.string()).optional().describe('Android permissions to declare'),
46
+ })
47
+ .describe('Android settings to configure'),
48
+ },
49
+ },
50
+ async (args) => callGodot(bridge, 'configure_android', args),
51
+ );
52
+ // 4. configure_web
53
+ server.registerTool(
54
+ 'configure_web',
55
+ {
56
+ description: 'Configure web/HTML5 export settings including canvas resize, threading, and PWA support',
57
+ inputSchema: {
58
+ settings: z
59
+ .object({
60
+ canvas_resize: z.boolean().optional().describe('Enable automatic canvas resizing'),
61
+ threading: z.boolean().optional().describe('Enable SharedArrayBuffer threading support'),
62
+ pwa: z.boolean().optional().describe('Enable Progressive Web App support'),
63
+ })
64
+ .describe('Web platform settings to configure'),
65
+ },
66
+ },
67
+ async (args) => callGodot(bridge, 'configure_web', args),
68
+ );
69
+ // 5. get_platform_capabilities
70
+ server.registerTool(
71
+ 'get_platform_capabilities',
72
+ {
73
+ description: 'Get the available features and capabilities for a specific platform',
74
+ inputSchema: {
75
+ platform: z.string().describe('Platform name to query capabilities for'),
76
+ },
77
+ },
78
+ async (args) => callGodot(bridge, 'get_platform_capabilities', args),
79
+ );
80
+ // 6. validate_platform_build
81
+ server.registerTool(
82
+ 'validate_platform_build',
83
+ {
84
+ description: 'Validate the project for building on a specific platform, checking for issues',
85
+ inputSchema: {
86
+ platform: z.string().describe('Platform to validate the build for'),
87
+ },
88
+ },
89
+ async (args) => callGodot(bridge, 'validate_platform_build', args),
90
+ );
91
+ }
92
+ //# sourceMappingURL=platform_specific.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform_specific.js","sourceRoot":"","sources":["../../src/tools/platform_specific.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Profiling tools - 2 tools for performance profiling
3
+ */
4
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
+ import type { GodotBridge } from '../godot-bridge.js';
6
+ export declare function registerProfilingTools(server: McpServer, bridge: GodotBridge): void;
7
+ //# sourceMappingURL=profiling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiling.d.ts","sourceRoot":"","sources":["../../src/tools/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,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAwBnF"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Profiling tools - 2 tools for performance profiling
3
+ */
4
+ import { callGodot } from '../server.js';
5
+ import { z } from './shared-types.js';
6
+ export function registerProfilingTools(server, bridge) {
7
+ // 1. get_performance_monitors
8
+ server.registerTool(
9
+ 'get_performance_monitors',
10
+ {
11
+ description: 'Get all performance monitor values (FPS, memory, physics, rendering, navigation)',
12
+ inputSchema: {
13
+ monitors: z.array(z.string()).optional().describe('Filter to specific monitor names only (e.g. ["time/fps", "memory/static"]). Returns all monitors if omitted.'),
14
+ },
15
+ },
16
+ async (args) => callGodot(bridge, 'profiling/monitors', args),
17
+ );
18
+ // 2. get_editor_performance
19
+ server.registerTool(
20
+ 'get_editor_performance',
21
+ {
22
+ description: 'Get editor performance snapshot (FPS, timing, memory usage, object counts, render stats, physics activity)',
23
+ inputSchema: {},
24
+ },
25
+ async () => callGodot(bridge, 'profiling/editor_performance'),
26
+ );
27
+ }
28
+ //# sourceMappingURL=profiling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiling.js","sourceRoot":"","sources":["../../src/tools/profiling.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAEtC,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,MAAmB;IAC3E,8BAA8B;IAC9B,MAAM,CAAC,YAAY,CACjB,0BAA0B,EAC1B;QACE,WAAW,EAAE,kFAAkF;QAC/F,WAAW,EAAE;YACX,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC/C,8GAA8G,CAC/G;SACF;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAA+B,CAAC,CACzF,CAAC;IAEF,4BAA4B;IAC5B,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,WAAW,EAAE,4GAA4G;QACzH,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAC9D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Project tools - 7 tools for project management
3
+ */
4
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
+ import type { GodotBridge } from '../godot-bridge.js';
6
+ export declare function registerProjectTools(server: McpServer, bridge: GodotBridge): void;
7
+ //# sourceMappingURL=project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/tools/project.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,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAsFjF"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Project tools - 7 tools for project management
3
+ */
4
+ import { callGodot } from '../server.js';
5
+ import { z, ResourcePath, SearchQuery } from './shared-types.js';
6
+ export function registerProjectTools(server, bridge) {
7
+ // 1. get_project_info
8
+ server.registerTool(
9
+ 'get_project_info',
10
+ {
11
+ description: 'Get project metadata including name, version, engine version, and main scene',
12
+ inputSchema: {},
13
+ },
14
+ async () => callGodot(bridge, 'project/get_info'),
15
+ );
16
+ // 2. get_filesystem_tree
17
+ server.registerTool(
18
+ 'get_filesystem_tree',
19
+ {
20
+ description: 'Get the project filesystem tree structure',
21
+ inputSchema: {
22
+ path: ResourcePath.describe("Root path to list from (e.g. 'res://')"),
23
+ filters: z.array(z.string()).optional().describe("Array of file extensions to filter (e.g. ['gd', 'tscn'])"),
24
+ max_depth: z.number().int().positive().optional().default(10).describe('Maximum recursion depth (default: 10)'),
25
+ },
26
+ },
27
+ async (args) => callGodot(bridge, 'project/get_filesystem_tree', args),
28
+ );
29
+ // 3. search_files
30
+ server.registerTool(
31
+ 'search_files',
32
+ {
33
+ description: 'Search for files in the project by name pattern or content',
34
+ inputSchema: {
35
+ query: SearchQuery,
36
+ },
37
+ },
38
+ async (args) => callGodot(bridge, 'project/search_files', args),
39
+ );
40
+ // 4. get_project_settings
41
+ server.registerTool(
42
+ 'get_project_settings',
43
+ {
44
+ description: 'Get all project settings (project.godot values)',
45
+ inputSchema: {
46
+ filter: z.string().optional().describe("Prefix filter for settings (e.g. 'application/')"),
47
+ },
48
+ },
49
+ async (args) => callGodot(bridge, 'project/get_settings', args),
50
+ );
51
+ // 5. set_project_setting
52
+ server.registerTool(
53
+ 'set_project_setting',
54
+ {
55
+ description: 'Set a project setting value',
56
+ inputSchema: {
57
+ key: z.string().describe("Setting key (e.g. 'display/window/size/viewport_width')"),
58
+ value: z.unknown().describe('New value for the setting (string, number, boolean, etc.)'),
59
+ },
60
+ },
61
+ async (args) => callGodot(bridge, 'project/set_setting', args),
62
+ );
63
+ // 6. uid_to_project_path
64
+ server.registerTool(
65
+ 'uid_to_project_path',
66
+ {
67
+ description: 'Convert a Godot UID to a project file path',
68
+ inputSchema: {
69
+ uid: z.string().describe("The UID to look up (e.g. 'uid://abc123')"),
70
+ },
71
+ },
72
+ async (args) => callGodot(bridge, 'project/uid_to_path', args),
73
+ );
74
+ // 7. project_path_to_uid
75
+ server.registerTool(
76
+ 'project_path_to_uid',
77
+ {
78
+ description: 'Convert a project file path to its UID',
79
+ inputSchema: {
80
+ path: ResourcePath.describe("The project path (e.g. 'res://scenes/main.tscn')"),
81
+ },
82
+ },
83
+ async (args) => callGodot(bridge, 'project/path_to_uid', args),
84
+ );
85
+ }
86
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/tools/project.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Project configuration tools - 12 tools for project settings, input map, and autoloads
3
+ */
4
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
+ import type { GodotBridge } from '../godot-bridge.js';
6
+ export declare function registerProjectConfigTools(server: McpServer, bridge: GodotBridge): void;
7
+ //# sourceMappingURL=project_config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project_config.d.ts","sourceRoot":"","sources":["../../src/tools/project_config.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,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAuKvF"}
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Project configuration tools - 12 tools for project settings, input map, and autoloads
3
+ */
4
+ import { callGodot } from '../server.js';
5
+ import { z, Name, FilePath, PropertyValue } from './shared-types.js';
6
+ export function registerProjectConfigTools(server, bridge) {
7
+ // 1. get_project_setting
8
+ server.registerTool(
9
+ 'get_project_setting',
10
+ {
11
+ description: "Get a single project setting value by key (e.g. 'display/window/size/viewport_width')",
12
+ inputSchema: {
13
+ key: z.string().describe('Project setting key path'),
14
+ },
15
+ },
16
+ async (args) => callGodot(bridge, 'project_config/get_setting', args),
17
+ );
18
+ // 2. set_project_setting_config
19
+ server.registerTool(
20
+ 'set_project_setting_config',
21
+ {
22
+ description: 'Set a project setting value and save project.godot',
23
+ inputSchema: {
24
+ key: z.string().describe('Project setting key path'),
25
+ value: PropertyValue,
26
+ },
27
+ },
28
+ async (args) => callGodot(bridge, 'project_config/set_setting_config', args),
29
+ );
30
+ // 3. get_all_project_settings
31
+ server.registerTool(
32
+ 'get_all_project_settings',
33
+ {
34
+ description: 'Get all project settings, optionally filtered by prefix',
35
+ inputSchema: {
36
+ filter: z.string().optional().describe("Prefix filter (e.g. 'display/', 'input/')"),
37
+ },
38
+ },
39
+ async (args) => callGodot(bridge, 'project_config/get_all_settings', args),
40
+ );
41
+ // 4. reset_project_setting
42
+ server.registerTool(
43
+ 'reset_project_setting',
44
+ {
45
+ description: 'Reset a project setting to its default value',
46
+ inputSchema: {
47
+ key: z.string().describe('Project setting key to reset'),
48
+ },
49
+ },
50
+ async (args) => callGodot(bridge, 'project_config/reset_setting', args),
51
+ );
52
+ // 5. get_input_map
53
+ server.registerTool(
54
+ 'get_input_map',
55
+ {
56
+ description: 'Get all input actions and their mapped events from the InputMap',
57
+ inputSchema: {},
58
+ },
59
+ async () => callGodot(bridge, 'project_config/get_input_map'),
60
+ );
61
+ // 6. set_input_map
62
+ server.registerTool(
63
+ 'set_input_map',
64
+ {
65
+ description: 'Replace the entire input map with the given actions and events',
66
+ inputSchema: {
67
+ actions: z
68
+ .record(z.array(z.object({ type: z.string() }).passthrough().describe('Input event (type: key, mouse_button, joypad_button, etc.)')))
69
+ .describe('Map of action name to array of input events'),
70
+ },
71
+ },
72
+ async (args) => callGodot(bridge, 'project_config/set_input_map', args),
73
+ );
74
+ // 7. add_input_action
75
+ server.registerTool(
76
+ 'add_input_action',
77
+ {
78
+ description: 'Add a new input action with optional deadzone and event mappings',
79
+ inputSchema: {
80
+ action: z.string().describe("Action name (e.g. 'jump', 'move_left')"),
81
+ deadzone: z.number().min(0).max(1).optional().default(0.5).describe('Deadzone value (0-1, default 0.5)'),
82
+ events: z.array(z.object({ type: z.string() }).passthrough().describe('Input event definition')).describe('Array of input events to map'),
83
+ },
84
+ },
85
+ async (args) => callGodot(bridge, 'project_config/add_input_action', args),
86
+ );
87
+ // 8. remove_input_action
88
+ server.registerTool(
89
+ 'remove_input_action',
90
+ {
91
+ description: 'Remove an input action from the InputMap',
92
+ inputSchema: {
93
+ action: z.string().describe('Action name to remove'),
94
+ },
95
+ },
96
+ async (args) => callGodot(bridge, 'project_config/remove_input_action', args),
97
+ );
98
+ // 9. get_autoloads
99
+ server.registerTool(
100
+ 'get_autoloads',
101
+ {
102
+ description: 'Get all autoload singletons configured in the project',
103
+ inputSchema: {},
104
+ },
105
+ async () => callGodot(bridge, 'project_config/get_autoloads'),
106
+ );
107
+ // 10. add_autoload_config
108
+ server.registerTool(
109
+ 'add_autoload_config',
110
+ {
111
+ description: 'Add an autoload singleton to the project',
112
+ inputSchema: {
113
+ name: Name.describe('Autoload singleton name'),
114
+ path: FilePath.describe("Script or scene path (e.g. 'res://autoload/global.gd')"),
115
+ enabled: z.boolean().optional().default(true).describe('Whether the autoload is enabled (default: true)'),
116
+ },
117
+ },
118
+ async (args) => callGodot(bridge, 'project_config/add_autoload_config', args),
119
+ );
120
+ // 11. remove_autoload_config
121
+ server.registerTool(
122
+ 'remove_autoload_config',
123
+ {
124
+ description: 'Remove an autoload singleton from the project',
125
+ inputSchema: {
126
+ name: Name.describe('Autoload singleton name to remove'),
127
+ },
128
+ },
129
+ async (args) => callGodot(bridge, 'project_config/remove_autoload_config', args),
130
+ );
131
+ // 12. reorder_autoloads
132
+ server.registerTool(
133
+ 'reorder_autoloads',
134
+ {
135
+ description: 'Set the loading order of autoload singletons',
136
+ inputSchema: {
137
+ order: z.array(z.string()).describe('Ordered list of autoload names (first loads first)'),
138
+ },
139
+ },
140
+ async (args) => callGodot(bridge, 'project_config/reorder_autoloads', args),
141
+ );
142
+ }
143
+ //# sourceMappingURL=project_config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project_config.js","sourceRoot":"","sources":["../../src/tools/project_config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Project creation tools - 10 tools for project scaffolding and setup
3
+ */
4
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
+ import type { GodotBridge } from '../godot-bridge.js';
6
+ export declare function registerProjectCreationTools(server: McpServer, bridge: GodotBridge): void;
7
+ //# sourceMappingURL=project_creation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project_creation.d.ts","sourceRoot":"","sources":["../../src/tools/project_creation.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,CAqLzF"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Project creation tools - 10 tools for project scaffolding and setup
3
+ */
4
+ import { callGodot } from '../server.js';
5
+ import { z, Name, FilePath } from './shared-types.js';
6
+ export function registerProjectCreationTools(server, bridge) {
7
+ // 1. create_project
8
+ server.registerTool(
9
+ 'create_project',
10
+ {
11
+ description: 'Create a complete Godot project from scratch with proper structure and configuration',
12
+ inputSchema: {
13
+ path: FilePath.describe('Directory path where the project will be created'),
14
+ name: Name.describe('Project name'),
15
+ template: z.enum(['empty', '2d', '3d', 'ui', 'custom']).optional().describe('Project template type'),
16
+ godot_version: z.string().optional().describe("Target Godot version (e.g. '4.3')"),
17
+ renderer: z.enum(['forward_plus', 'mobile', 'gl_compatibility']).optional().describe('Rendering engine'),
18
+ },
19
+ },
20
+ async (args) => callGodot(bridge, 'project_creation/create_project', args),
21
+ );
22
+ // 2. create_project_from_template
23
+ server.registerTool(
24
+ 'create_project_from_template',
25
+ {
26
+ description: 'Create a new Godot project from an existing template project',
27
+ inputSchema: {
28
+ path: FilePath.describe('Directory path where the project will be created'),
29
+ template_path: FilePath.describe('Path to the template project directory'),
30
+ name: Name.optional().describe('Override project name'),
31
+ },
32
+ },
33
+ async (args) => callGodot(bridge, 'project_creation/create_from_template', args),
34
+ );
35
+ // 3. scaffold_project_structure
36
+ server.registerTool(
37
+ 'scaffold_project_structure',
38
+ {
39
+ description: 'Create a standard folder structure for a Godot project',
40
+ inputSchema: {
41
+ project_path: FilePath.describe('Path to the Godot project root'),
42
+ structure: z.enum(['standard', 'minimal', 'full']).optional().describe('Folder structure preset'),
43
+ },
44
+ },
45
+ async (args) => callGodot(bridge, 'project_creation/scaffold_structure', args),
46
+ );
47
+ // 4. create_project_with_assets
48
+ server.registerTool(
49
+ 'create_project_with_assets',
50
+ {
51
+ description: 'Create a new Godot project and import specified assets into it',
52
+ inputSchema: {
53
+ path: FilePath.describe('Directory path where the project will be created'),
54
+ name: Name.describe('Project name'),
55
+ assets: z
56
+ .array(
57
+ z.object({
58
+ type: z.string().describe("Asset type (e.g. 'texture', 'audio', 'scene', 'script')"),
59
+ source: z.string().describe('Source file path to import from'),
60
+ destination: z.string().describe('Destination path within the project (res://...)'),
61
+ }),
62
+ )
63
+ .describe('List of assets to import into the project'),
64
+ },
65
+ },
66
+ async (args) => callGodot(bridge, 'project_creation/create_with_assets', args),
67
+ );
68
+ // 5. initialize_git_repository
69
+ server.registerTool(
70
+ 'initialize_git_repository',
71
+ {
72
+ description: 'Initialize a Git repository in the project directory with a proper .gitignore',
73
+ inputSchema: {
74
+ project_path: FilePath.describe('Path to the Godot project root'),
75
+ include_gitignore: z.boolean().optional().describe('Whether to create a Godot-specific .gitignore'),
76
+ },
77
+ },
78
+ async (args) => callGodot(bridge, 'project_creation/init_git', args),
79
+ );
80
+ // 6. create_project_readme
81
+ server.registerTool(
82
+ 'create_project_readme',
83
+ {
84
+ description: 'Generate a README.md file for the project',
85
+ inputSchema: {
86
+ project_path: FilePath.describe('Path to the Godot project root'),
87
+ content: z.string().optional().describe('Custom README content (overrides template)'),
88
+ template: z.enum(['basic', 'detailed', 'game']).optional().describe('README template style'),
89
+ },
90
+ },
91
+ async (args) => callGodot(bridge, 'project_creation/create_readme', args),
92
+ );
93
+ // 7. create_project_license
94
+ server.registerTool(
95
+ 'create_project_license',
96
+ {
97
+ description: 'Create a LICENSE file for the project',
98
+ inputSchema: {
99
+ project_path: FilePath.describe('Path to the Godot project root'),
100
+ license: z.enum(['MIT', 'Apache-2.0', 'GPL-3.0', 'BSD-3-Clause', 'custom']).describe('License type'),
101
+ custom_text: z.string().optional().describe("Custom license text (required when license is 'custom')"),
102
+ },
103
+ },
104
+ async (args) => callGodot(bridge, 'project_creation/create_license', args),
105
+ );
106
+ // 8. setup_project_dependencies
107
+ server.registerTool(
108
+ 'setup_project_dependencies',
109
+ {
110
+ description: 'Install and configure project addons/dependencies',
111
+ inputSchema: {
112
+ project_path: FilePath.describe('Path to the Godot project root'),
113
+ addons: z
114
+ .array(
115
+ z.object({
116
+ name: z.string().describe('Addon name'),
117
+ source: z.enum(['asset_lib', 'git', 'local']).describe('Where to get the addon from'),
118
+ url: z.string().optional().describe('Git URL or local path (required for git/local sources)'),
119
+ }),
120
+ )
121
+ .describe('List of addons to install'),
122
+ },
123
+ },
124
+ async (args) => callGodot(bridge, 'project_creation/setup_dependencies', args),
125
+ );
126
+ // 9. validate_project_structure
127
+ server.registerTool(
128
+ 'validate_project_structure',
129
+ {
130
+ description: "Validate a Godot project's folder structure and configuration for correctness",
131
+ inputSchema: {
132
+ project_path: FilePath.describe('Path to the Godot project root'),
133
+ },
134
+ },
135
+ async (args) => callGodot(bridge, 'project_creation/validate_structure', args),
136
+ );
137
+ // 10. get_project_templates
138
+ server.registerTool(
139
+ 'get_project_templates',
140
+ {
141
+ description: 'List all available project templates that can be used with create_project',
142
+ inputSchema: {},
143
+ },
144
+ async () => callGodot(bridge, 'project_creation/get_templates'),
145
+ );
146
+ }
147
+ //# sourceMappingURL=project_creation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project_creation.js","sourceRoot":"","sources":["../../src/tools/project_creation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Rendering configuration tools - 10 tools for rendering settings
3
+ */
4
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
+ import type { GodotBridge } from '../godot-bridge.js';
6
+ export declare function registerRenderingConfigTools(server: McpServer, bridge: GodotBridge): void;
7
+ //# sourceMappingURL=rendering_config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rendering_config.d.ts","sourceRoot":"","sources":["../../src/tools/rendering_config.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,CAiIzF"}