godot-mcp-runtime 3.0.0 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +55 -67
  2. package/dist/dispatch.js +27 -27
  3. package/dist/dispatch.js.map +1 -1
  4. package/dist/index.js +5 -5
  5. package/dist/index.js.map +1 -1
  6. package/dist/scripts/godot_operations.gd +150 -115
  7. package/dist/scripts/mcp_bridge.gd +19 -24
  8. package/dist/tools/autoload-tools.d.ts +8 -8
  9. package/dist/tools/autoload-tools.d.ts.map +1 -1
  10. package/dist/tools/autoload-tools.js +15 -11
  11. package/dist/tools/autoload-tools.js.map +1 -1
  12. package/dist/tools/node-tools.d.ts.map +1 -1
  13. package/dist/tools/node-tools.js +105 -25
  14. package/dist/tools/node-tools.js.map +1 -1
  15. package/dist/tools/project-tools.d.ts.map +1 -1
  16. package/dist/tools/project-tools.js +52 -15
  17. package/dist/tools/project-tools.js.map +1 -1
  18. package/dist/tools/runtime-tools.d.ts.map +1 -1
  19. package/dist/tools/runtime-tools.js +224 -28
  20. package/dist/tools/runtime-tools.js.map +1 -1
  21. package/dist/tools/scene-tools.d.ts.map +1 -1
  22. package/dist/tools/scene-tools.js +30 -12
  23. package/dist/tools/scene-tools.js.map +1 -1
  24. package/dist/tools/validate-tools.d.ts.map +1 -1
  25. package/dist/tools/validate-tools.js +89 -30
  26. package/dist/tools/validate-tools.js.map +1 -1
  27. package/dist/utils/autoload-ini.d.ts +6 -0
  28. package/dist/utils/autoload-ini.d.ts.map +1 -1
  29. package/dist/utils/autoload-ini.js +13 -0
  30. package/dist/utils/autoload-ini.js.map +1 -1
  31. package/dist/utils/bridge-manager.d.ts +18 -1
  32. package/dist/utils/bridge-manager.d.ts.map +1 -1
  33. package/dist/utils/bridge-manager.js +61 -11
  34. package/dist/utils/bridge-manager.js.map +1 -1
  35. package/dist/utils/bridge-protocol.d.ts +6 -3
  36. package/dist/utils/bridge-protocol.d.ts.map +1 -1
  37. package/dist/utils/bridge-protocol.js +28 -15
  38. package/dist/utils/bridge-protocol.js.map +1 -1
  39. package/dist/utils/godot-runner.d.ts +47 -3
  40. package/dist/utils/godot-runner.d.ts.map +1 -1
  41. package/dist/utils/godot-runner.js +239 -56
  42. package/dist/utils/godot-runner.js.map +1 -1
  43. package/dist/utils/logger.d.ts +1 -0
  44. package/dist/utils/logger.d.ts.map +1 -1
  45. package/dist/utils/logger.js +1 -1
  46. package/dist/utils/logger.js.map +1 -1
  47. package/package.json +2 -1
@@ -1,6 +1,6 @@
1
- import { join, sep } from 'path';
1
+ import { join, sep, resolve } from 'path';
2
2
  import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
3
- import { normalizeParameters, validateProjectArgs, createErrorResponse, getErrorMessage, BRIDGE_WAIT_SPAWNED_TIMEOUT_MS, } from '../utils/godot-runner.js';
3
+ import { normalizeParameters, validateProjectArgs, validateSubPath, createErrorResponse, getErrorMessage, isUnderDir, BRIDGE_WAIT_SPAWNED_TIMEOUT_MS, } from '../utils/godot-runner.js';
4
4
  import { attachRuntimeWarnings, parseBridgeJson, MAX_RUNTIME_ERROR_CONTEXT_LINES, } from '../utils/handler-helpers.js';
5
5
  import { logDebug } from '../utils/logger.js';
6
6
  import { randomUUID } from 'crypto';
@@ -25,7 +25,7 @@ export const runtimeToolDefinitions = [
25
25
  },
26
26
  {
27
27
  name: 'run_project',
28
- description: 'Spawn a Godot project as a child process with stdout/stderr captured. Preferred entry to runtime tools — required before take_screenshot, simulate_input, get_ui_elements, run_script, or get_debug_output. For a Godot process you launched yourself, use attach_project instead. Verifies MCP bridge readiness before returning success. Call stop_project when done. Returns plain-text status confirming the bridge is ready. Errors if projectPath is not a Godot project or another run is already active.',
28
+ description: 'Spawn a Godot project as a child process with stdout/stderr captured. Required before take_screenshot, simulate_input, get_ui_elements, run_script, or get_debug_output. For a Godot process you launched yourself, use attach_project instead. Verifies MCP bridge readiness before returning success. Returns plain-text status with the assigned bridge port. Call stop_project when done. Errors if projectPath is not a Godot project or another session is already active.',
29
29
  annotations: { destructiveHint: true },
30
30
  inputSchema: {
31
31
  type: 'object',
@@ -42,13 +42,19 @@ export const runtimeToolDefinitions = [
42
42
  type: 'boolean',
43
43
  description: 'If true, hides the Godot window off-screen and blocks all physical keyboard and mouse input, while keeping programmatic input (simulate_input, run_script) and screenshots fully active. Useful for automated agent-driven testing where the window should not be visible or interactive.',
44
44
  },
45
+ bridgePort: {
46
+ type: 'number',
47
+ minimum: 1,
48
+ maximum: 65535,
49
+ description: "TCP port for the MCP bridge. Omit to auto-select a free port (recommended). The chosen port is baked into the project's `mcp_bridge.gd` at inject time, so the running Godot listens on exactly this port.",
50
+ },
45
51
  },
46
52
  required: ['projectPath'],
47
53
  },
48
54
  },
49
55
  {
50
56
  name: 'attach_project',
51
- description: 'Attach runtime MCP tools to a manually launched Godot process without spawning one. Use only when something other than MCP is running Godot (debugger attached, custom CLI flags, IDE run) for the standard case, use run_project. Injects the McpBridge autoload, then waits up to 15s for the bridge to respond. If you are launching Godot in parallel, kick the launch off concurrently with this call so the wait absorbs startup. bridge.inject is idempotent, so retrying after a missed window is safe. Use detach_project or stop_project when done. get_debug_output is unavailable in attached mode (stdout/stderr not captured). Returns plain-text status confirming the bridge is ready in attached mode.',
57
+ description: 'Inject the MCP bridge into a Godot process you launch yourself, then wait up to 15s for the bridge to respond. Call BEFORE Godot launchesGodot reads autoloads only at process start, so a late call returns "bridge did not respond." Recommended pattern: kick off the Godot launch in parallel with this call so the wait absorbs startup. Prefer run_project unless MCP must not spawn Godot. Returns plain-text status with the resolved bridge port. Call detach_project or stop_project when done.',
52
58
  annotations: { destructiveHint: true },
53
59
  inputSchema: {
54
60
  type: 'object',
@@ -57,23 +63,36 @@ export const runtimeToolDefinitions = [
57
63
  type: 'string',
58
64
  description: 'Path to the Godot project directory',
59
65
  },
66
+ bridgePort: {
67
+ type: 'number',
68
+ minimum: 1,
69
+ maximum: 65535,
70
+ description: "TCP port for the MCP bridge. Omit to auto-select a free port (recommended). The chosen port is baked into the project's `mcp_bridge.gd` at inject time, so the running Godot listens on exactly this port.",
71
+ },
60
72
  },
61
73
  required: ['projectPath'],
62
74
  },
63
75
  },
64
76
  {
65
77
  name: 'detach_project',
66
- description: 'Clear attached-mode runtime state and remove the injected McpBridge autoload. Does NOT stop the manually launched Godot process — that stays running. Use after attach_project when you are done driving the game from MCP. For spawned sessions (run_project), use stop_project instead. Returns { message, externalProcessPreserved }. Errors if called outside an attached session.',
78
+ description: 'Clear attached-mode runtime state and remove the injected McpBridge autoload. Does NOT stop the manually launched Godot process — that stays running. Use after attach_project when you are done driving the game from MCP. For spawned sessions (run_project), use stop_project instead. Returns: message confirming detach plus externalProcessPreserved (always true here — that is the point of detach vs stop_project). Errors if called outside an attached session.',
67
79
  annotations: { destructiveHint: true },
68
80
  inputSchema: {
69
81
  type: 'object',
70
82
  properties: {},
71
83
  required: [],
72
84
  },
85
+ outputSchema: {
86
+ type: 'object',
87
+ properties: {
88
+ message: { type: 'string' },
89
+ externalProcessPreserved: { type: 'boolean' },
90
+ },
91
+ },
73
92
  },
74
93
  {
75
94
  name: 'get_debug_output',
76
- description: 'Get captured stdout/stderr from a spawned Godot project. Use whenever runtime tools fail unexpectedly — script errors, missing nodes, and crash backtraces all surface here. Requires run_project (not attach_project; attached mode does not capture output). Returns { output, errors, running, exitCode? } with the last `limit` lines (default 200, from the end). Reports attached-mode unavailability gracefully.',
95
+ description: 'Get captured stdout/stderr from a spawned Godot project. Use whenever runtime tools fail unexpectedly — script errors, missing nodes, and crash backtraces all surface here. Requires run_project (not attach_project; attached mode does not capture output). Returns: output/errors (last `limit` lines each, default 200), running (false after exit, null when attached), exitCode after exit, attached:true with empty arrays in attached mode.',
77
96
  annotations: { readOnlyHint: true },
78
97
  inputSchema: {
79
98
  type: 'object',
@@ -85,20 +104,41 @@ export const runtimeToolDefinitions = [
85
104
  },
86
105
  required: [],
87
106
  },
107
+ outputSchema: {
108
+ type: 'object',
109
+ properties: {
110
+ output: { type: 'array', items: { type: 'string' } },
111
+ errors: { type: 'array', items: { type: 'string' } },
112
+ running: { type: ['boolean', 'null'] },
113
+ exitCode: { type: ['number', 'null'] },
114
+ attached: { type: 'boolean' },
115
+ tip: { type: 'string' },
116
+ },
117
+ },
88
118
  },
89
119
  {
90
120
  name: 'stop_project',
91
- description: 'Stop the spawned Godot project and clean up MCP bridge state. Always call when done with runtime testing — even after a crash — to free the single process slot so run_project can be called again. For attached sessions, this detaches without killing the externally launched process. Returns { message, mode, externalProcessPreserved, finalOutput, finalErrors }. Errors if no session is active.',
121
+ description: 'Stop the spawned Godot project and clean up MCP bridge state. Always call when done with runtime testing — even after a crash — to free the single process slot so run_project can be called again. For attached sessions, this detaches without killing the externally launched process. Returns: message, mode ("spawned"/"attached"), externalProcessPreserved (true only for attached), finalOutput and finalErrors (last 200 lines each). Errors if no session is active.',
92
122
  annotations: { destructiveHint: true },
93
123
  inputSchema: {
94
124
  type: 'object',
95
125
  properties: {},
96
126
  required: [],
97
127
  },
128
+ outputSchema: {
129
+ type: 'object',
130
+ properties: {
131
+ message: { type: 'string' },
132
+ mode: { type: 'string' },
133
+ externalProcessPreserved: { type: 'boolean' },
134
+ finalOutput: { type: 'array', items: { type: 'string' } },
135
+ finalErrors: { type: 'array', items: { type: 'string' } },
136
+ },
137
+ },
98
138
  },
99
139
  {
100
140
  name: 'take_screenshot',
101
- description: 'Capture a PNG of the running viewport. responseMode: preview (default — saves full PNG, returns bounded inline preview at 960x540), full (full inline PNG; use for small text or pixel-level inspection), path_only (saved-path only, no inline image). Saved under .mcp/screenshots. Returns: { responseMode, path, size, previewPath?, previewSize?, warnings? } as JSON text, plus an inline image for full/preview. Errors if no session or bridge times out (default 10000ms).',
141
+ description: 'Capture a PNG of the running viewport. responseMode: preview (default — saves full PNG, returns bounded inline preview at 960x540), full (full inline PNG; use for small text or pixel-level inspection), path_only (saved-path only, no inline image). Saved under .mcp/screenshots. Returns: inline image block (full/preview modes), plus path and size of the saved PNG; previewPath/previewSize in preview mode; warnings for non-fatal runtime errors. Errors if no session or bridge times out (default 10000ms).',
102
142
  annotations: { readOnlyHint: true },
103
143
  inputSchema: {
104
144
  type: 'object',
@@ -123,10 +163,35 @@ export const runtimeToolDefinitions = [
123
163
  },
124
164
  required: [],
125
165
  },
166
+ // The handler also emits an inline `image` content block for full/preview modes;
167
+ // outputSchema only describes the structured JSON text payload per MCP spec.
168
+ outputSchema: {
169
+ type: 'object',
170
+ properties: {
171
+ responseMode: { type: 'string' },
172
+ path: { type: 'string' },
173
+ size: {
174
+ type: 'object',
175
+ properties: {
176
+ width: { type: 'number' },
177
+ height: { type: 'number' },
178
+ },
179
+ },
180
+ previewPath: { type: 'string' },
181
+ previewSize: {
182
+ type: 'object',
183
+ properties: {
184
+ width: { type: 'number' },
185
+ height: { type: 'number' },
186
+ },
187
+ },
188
+ warnings: { type: 'array', items: { type: 'string' } },
189
+ },
190
+ },
126
191
  },
127
192
  {
128
193
  name: 'simulate_input',
129
- description: "Simulate sequential input in a running project. Each action's `type` (key, mouse_button, mouse_motion, click_element, action, wait) gates which other fields apply — see per-property docs. For click_element use get_ui_elements first; resolution is by path/name, not visible text. Press/release require two actions; insert wait between for frame ticks. Returns: { success, actions_processed, warnings? }. Errors if no session or any action fails validation.",
194
+ description: "Simulate sequential input in a running project. Each action's `type` (key, mouse_button, mouse_motion, click_element, action, wait) gates which other fields apply — see per-property docs. For click_element use get_ui_elements first; resolution is by path/name, not visible text. Press/release require two actions; insert wait between for frame ticks. Returns: success, actions_processed, warnings for runtime errors fired by input handlers. Errors if no session or any action fails validation.",
130
195
  annotations: { destructiveHint: true },
131
196
  inputSchema: {
132
197
  type: 'object',
@@ -144,11 +209,11 @@ export const runtimeToolDefinitions = [
144
209
  },
145
210
  key: {
146
211
  type: 'string',
147
- description: '[key] Key name (e.g. "W", "Space", "Escape", "Up")',
212
+ description: '[key] Godot KEY_* constant name without the prefix (e.g. "W", "Space", "Escape", "Enter", "Tab", "Up", "PageUp"). Errors on unrecognized names.',
148
213
  },
149
214
  pressed: {
150
215
  type: 'boolean',
151
- description: '[key, mouse_button, action] Whether the input is pressed (true) or released (false)',
216
+ description: '[key, mouse_button, action] Whether the input is pressed (true) or released (false). For mouse_button: omit to auto-click (press+release in one action); set explicitly only for hold/release. For key: defaults to true and does NOT auto-release — emit a second action with pressed:false to release.',
152
217
  },
153
218
  shift: { type: 'boolean', description: '[key] Shift modifier' },
154
219
  ctrl: { type: 'boolean', description: '[key] Ctrl modifier' },
@@ -164,11 +229,11 @@ export const runtimeToolDefinitions = [
164
229
  },
165
230
  x: {
166
231
  type: 'number',
167
- description: '[mouse_button, mouse_motion] X position in viewport pixels',
232
+ description: '[mouse_button, mouse_motion] X position in viewport pixels (0,0 = top-left)',
168
233
  },
169
234
  y: {
170
235
  type: 'number',
171
- description: '[mouse_button, mouse_motion] Y position in viewport pixels',
236
+ description: '[mouse_button, mouse_motion] Y position in viewport pixels (0,0 = top-left)',
172
237
  },
173
238
  relative_x: {
174
239
  type: 'number',
@@ -196,7 +261,7 @@ export const runtimeToolDefinitions = [
196
261
  },
197
262
  ms: {
198
263
  type: 'number',
199
- description: '[wait] Duration in milliseconds to pause before the next action',
264
+ description: '[wait] Duration in milliseconds to pause before the next action (~16ms = one frame at 60fps).',
200
265
  },
201
266
  },
202
267
  required: ['type'],
@@ -205,10 +270,19 @@ export const runtimeToolDefinitions = [
205
270
  },
206
271
  required: ['actions'],
207
272
  },
273
+ outputSchema: {
274
+ type: 'object',
275
+ properties: {
276
+ success: { type: 'boolean' },
277
+ actions_processed: { type: 'number' },
278
+ warnings: { type: 'array', items: { type: 'string' } },
279
+ tip: { type: 'string' },
280
+ },
281
+ },
208
282
  },
209
283
  {
210
284
  name: 'get_ui_elements',
211
- description: 'Walk the running scene tree and return all Control nodes with positions, sizes, types, and text content. Always call this before simulate_input click_element actions to discover valid element names and paths. Requires an active runtime session (run_project or attach_project). visibleOnly defaults true; pass false to include hidden Controls. filter narrows by class. Returns { elements: [{ name, path, type, rect, visible, text?, disabled?, tooltip? }] }.',
285
+ description: 'Walk the running scene tree and return all Control nodes with positions, sizes, types, and text content. Always call this before simulate_input click_element actions to discover valid element names and paths. Requires an active runtime session (run_project or attach_project). visibleOnly defaults true; pass false to include hidden Controls. filter narrows by class. Returns: elements[] with path/type/rect/visible plus optional text/disabled/tooltip.',
212
286
  annotations: { readOnlyHint: true },
213
287
  inputSchema: {
214
288
  type: 'object',
@@ -224,10 +298,42 @@ export const runtimeToolDefinitions = [
224
298
  },
225
299
  required: [],
226
300
  },
301
+ outputSchema: {
302
+ type: 'object',
303
+ properties: {
304
+ elements: {
305
+ type: 'array',
306
+ items: {
307
+ type: 'object',
308
+ properties: {
309
+ name: { type: 'string' },
310
+ path: { type: 'string' },
311
+ type: { type: 'string' },
312
+ rect: {
313
+ type: 'object',
314
+ properties: {
315
+ x: { type: 'number' },
316
+ y: { type: 'number' },
317
+ width: { type: 'number' },
318
+ height: { type: 'number' },
319
+ },
320
+ },
321
+ visible: { type: 'boolean' },
322
+ text: { type: 'string' },
323
+ placeholder: { type: 'string' },
324
+ disabled: { type: 'boolean' },
325
+ tooltip: { type: 'string' },
326
+ },
327
+ },
328
+ },
329
+ warnings: { type: 'array', items: { type: 'string' } },
330
+ tip: { type: 'string' },
331
+ },
332
+ },
227
333
  },
228
334
  {
229
335
  name: 'run_script',
230
- description: 'Execute a custom GDScript in the live running project with full scene tree access. Requires an active runtime session. Script must extend RefCounted and define func execute(scene_tree: SceneTree) -> Variant. Return values are JSON-serialized (primitives, Vector2/3, Color, Dictionary, Array, and Node path strings). Use print() for debug output — it appears in get_debug_output, not in the result. In spawned mode, stderr runtime errors escalate to errors (when the script returns null) or surface as warnings. Returns { success, result, warnings? } where result is the JSON-serialized return value of execute().',
336
+ description: 'Execute a custom GDScript in the live running project with full scene tree access. Requires an active runtime session. Script must extend RefCounted and define func execute(scene_tree: SceneTree) -> Variant. Return values are JSON-serialized (primitives, Vector2/3, Color, Dictionary, Array, and Node path strings). Use print() for debug output — it appears in get_debug_output, not in the result. In spawned mode, stderr runtime errors escalate to errors (when the script returns null) or surface as warnings. Returns: { success, result, warnings?, tip? } where result is the JSON-serialized return value of execute().',
231
337
  annotations: { destructiveHint: true },
232
338
  inputSchema: {
233
339
  type: 'object',
@@ -243,6 +349,16 @@ export const runtimeToolDefinitions = [
243
349
  },
244
350
  required: ['script'],
245
351
  },
352
+ outputSchema: {
353
+ type: 'object',
354
+ properties: {
355
+ success: { type: 'boolean' },
356
+ result: {},
357
+ warning: { type: 'string' },
358
+ warnings: { type: 'array', items: { type: 'string' } },
359
+ tip: { type: 'string' },
360
+ },
361
+ },
246
362
  },
247
363
  ];
248
364
  // --- Helpers ---
@@ -304,9 +420,32 @@ export async function handleRunProject(runner, args) {
304
420
  const v = validateProjectArgs(args);
305
421
  if ('isError' in v)
306
422
  return v;
423
+ if (typeof args.scene === 'string') {
424
+ if (!validateSubPath(v.projectPath, args.scene)) {
425
+ return createErrorResponse(`Invalid scene path: must be project-relative without ".." (got: ${args.scene})`, ['Pass scene as a path relative to the project root, e.g. "scenes/main.tscn"']);
426
+ }
427
+ }
428
+ if (!runner.getGodotPath()) {
429
+ await runner.detectGodotPath();
430
+ if (!runner.getGodotPath()) {
431
+ return createErrorResponse('Could not find a valid Godot executable path', [
432
+ 'Set GODOT_PATH in your MCP client config to your Godot 4.x executable',
433
+ 'Ensure the path points at the Godot binary, not its installation folder',
434
+ 'On Windows, escape backslashes in JSON (e.g. "D:\\\\Godot\\\\Godot.exe")',
435
+ ]);
436
+ }
437
+ }
307
438
  try {
308
439
  const background = args.background === true;
309
- runner.runProject(v.projectPath, args.scene, background);
440
+ const bridgePort = args.bridgePort;
441
+ if (bridgePort !== undefined) {
442
+ if (!Number.isInteger(bridgePort) ||
443
+ bridgePort < 1 ||
444
+ bridgePort > 65535) {
445
+ return createErrorResponse(`Invalid bridgePort: must be an integer in [1, 65535] (got: ${String(bridgePort)})`, ['Omit bridgePort to auto-select a free port', 'Pass a valid TCP port number']);
446
+ }
447
+ }
448
+ await runner.runProject(v.projectPath, args.scene, background, bridgePort);
310
449
  const bridgeResult = await runner.waitForBridge();
311
450
  if (!bridgeResult.ready) {
312
451
  if (runner.activeProcess && runner.activeProcess.hasExited) {
@@ -322,8 +461,14 @@ export async function handleRunProject(runner, args) {
322
461
  }
323
462
  const recentErrors = runner.getRecentErrors(20);
324
463
  const errorTail = recentErrors.length > 0 ? `\nLast stderr:\n${recentErrors.join('\n')}` : '';
464
+ const expected = runner.activeBridgePort;
465
+ const onDisk = runner.readBakedBridgePort(v.projectPath);
466
+ const raceDetected = onDisk !== null && expected !== null && onDisk !== expected;
467
+ const racePrefix = raceDetected
468
+ ? `Bridge timeout: expected port ${expected}, but on-disk script now has ${onDisk}. Another MCP client likely re-injected concurrently in the same project.\n`
469
+ : '';
325
470
  const lines = [
326
- `Godot process started, but the MCP bridge did not respond within ${BRIDGE_WAIT_SPAWNED_TIMEOUT_MS / 1000} seconds.`,
471
+ `${racePrefix}Godot process started, but the MCP bridge did not respond within ${BRIDGE_WAIT_SPAWNED_TIMEOUT_MS / 1000} seconds.`,
327
472
  '- The bridge listener never came up — likely an early _ready error or a stuck process holding the port',
328
473
  '- Session has been torn down; retry run_project to start a new one',
329
474
  errorTail,
@@ -334,14 +479,19 @@ export async function handleRunProject(runner, args) {
334
479
  // Tear down before returning so hasActiveRuntimeSession() reports false
335
480
  // and the next run_project lazy-reconnects cleanly.
336
481
  await runner.stopProject();
337
- return createErrorResponse(lines.join('\n'), [
482
+ const solutions = [
338
483
  'Check for broken autoloads with list_autoloads',
339
- 'Check that the bridge port (default 9900) is not occupied by another Godot process',
484
+ `Check that the assigned bridge port (${runner.activeBridgePort}) is not occupied by another Godot process`,
340
485
  'Retry run_project',
341
- ]);
486
+ ];
487
+ if (raceDetected) {
488
+ solutions.push('Concurrent MCP clients in the same project are not supported — run them in separate projects or sequence the calls');
489
+ }
490
+ return createErrorResponse(lines.join('\n'), solutions);
342
491
  }
492
+ const port = runner.activeBridgePort;
343
493
  const lines = [
344
- 'Godot project started and MCP bridge is ready.',
494
+ `Godot project started and MCP bridge is ready (port ${port}).`,
345
495
  '- Runtime tools (take_screenshot, simulate_input, get_ui_elements, run_script) are available now',
346
496
  '- Use get_debug_output to check runtime output and errors',
347
497
  '- Call stop_project when done',
@@ -354,7 +504,15 @@ export async function handleRunProject(runner, args) {
354
504
  };
355
505
  }
356
506
  catch (error) {
357
- return createErrorResponse(`Failed to run Godot project: ${getErrorMessage(error)}`, [
507
+ const errorMessage = getErrorMessage(error);
508
+ if (errorMessage.includes('No display server available')) {
509
+ return createErrorResponse(`Failed to run Godot project: ${errorMessage}`, [
510
+ 'Use attach_project with an externally launched Godot process',
511
+ 'Set DISPLAY or WAYLAND_DISPLAY environment variables',
512
+ 'Run from a graphical shell session',
513
+ ]);
514
+ }
515
+ return createErrorResponse(`Failed to run Godot project: ${errorMessage}`, [
358
516
  'Ensure Godot is installed correctly',
359
517
  'Check if the GODOT_PATH environment variable is set correctly',
360
518
  ]);
@@ -366,25 +524,47 @@ export async function handleAttachProject(runner, args) {
366
524
  if ('isError' in v)
367
525
  return v;
368
526
  try {
369
- await runner.attachProject(v.projectPath);
527
+ const attachBridgePort = args.bridgePort;
528
+ if (attachBridgePort !== undefined) {
529
+ if (!Number.isInteger(attachBridgePort) ||
530
+ attachBridgePort < 1 ||
531
+ attachBridgePort > 65535) {
532
+ return createErrorResponse(`Invalid bridgePort: must be an integer in [1, 65535] (got: ${String(attachBridgePort)})`, [
533
+ 'Omit bridgePort to auto-select a free port',
534
+ 'Pass a valid TCP port number matching the externally launched Godot',
535
+ ]);
536
+ }
537
+ }
538
+ await runner.attachProject(v.projectPath, attachBridgePort);
370
539
  const bridgeResult = await runner.waitForBridgeAttached();
371
540
  if (!bridgeResult.ready) {
541
+ const expected = runner.activeBridgePort;
542
+ const onDisk = runner.readBakedBridgePort(v.projectPath);
543
+ const raceDetected = onDisk !== null && expected !== null && onDisk !== expected;
544
+ const racePrefix = raceDetected
545
+ ? `Bridge timeout: expected port ${expected}, but on-disk script now has ${onDisk}. Another MCP client likely re-injected concurrently in the same project.\n`
546
+ : '';
372
547
  // Tear down the attached-mode session state so retrying with
373
548
  // attach_project (or run_project) works without a manual detach first.
374
549
  await runner.stopProject();
375
- return createErrorResponse(`Project attached but the MCP bridge is not ready.\n${bridgeResult.error || ''}`, [
550
+ const solutions = [
376
551
  'If you are launching Godot yourself, run the launch in parallel with attach_project next time so the wait absorbs the startup — do not sequentialize',
377
552
  'If a human is launching Godot, retry attach_project once they have launched — bridge.inject is idempotent',
378
553
  'If Godot is already running but was launched before the bridge was injected, restart it (autoloads are read at startup)',
379
- 'Check that no other Godot project is occupying the bridge port (default 9900)',
380
- ]);
554
+ `Check that no other Godot project is occupying the assigned bridge port (${runner.activeBridgePort})`,
555
+ ];
556
+ if (raceDetected) {
557
+ solutions.push('Concurrent MCP clients in the same project are not supported — run them in separate projects or sequence the calls');
558
+ }
559
+ return createErrorResponse(`${racePrefix}Project attached but the MCP bridge is not ready.\n${bridgeResult.error || ''}`, solutions);
381
560
  }
561
+ const attachedPort = runner.activeBridgePort;
382
562
  return {
383
563
  content: [
384
564
  {
385
565
  type: 'text',
386
566
  text: [
387
- 'Project attached and MCP bridge is ready.',
567
+ `Project attached and MCP bridge is ready (port ${attachedPort}).`,
388
568
  '- Runtime tools (take_screenshot, simulate_input, get_ui_elements, run_script) are available now',
389
569
  '- get_debug_output is unavailable in attached mode because MCP did not spawn the process',
390
570
  '- Use detach_project or stop_project when done to clean up the injected bridge state',
@@ -560,6 +740,16 @@ export async function handleTakeScreenshot(runner, args) {
560
740
  }
561
741
  // Normalize path for the local filesystem (forward slashes from GDScript)
562
742
  const screenshotPath = normalizeScreenshotPath(parsed.path);
743
+ // Defense-in-depth: the bridge runs in user-controlled GDScript and could
744
+ // be patched to return any path. Refuse to read anything outside the
745
+ // project's own .mcp/screenshots/ directory.
746
+ const screenshotsRoot = resolve(runner.activeProjectPath, '.mcp', 'screenshots');
747
+ if (!isUnderDir(screenshotsRoot, screenshotPath)) {
748
+ return createErrorResponse('Bridge returned a screenshot path outside .mcp/screenshots/. Refusing to read.', [
749
+ 'This indicates a tampered or misbehaving McpBridge autoload',
750
+ 'Stop the project, verify the bridge script is the one shipped with this server, and retry',
751
+ ]);
752
+ }
563
753
  if (!existsSync(screenshotPath)) {
564
754
  return createErrorResponse(`Screenshot file not found at: ${screenshotPath}`, [
565
755
  'The screenshot may have failed to save',
@@ -588,6 +778,12 @@ export async function handleTakeScreenshot(runner, args) {
588
778
  ]);
589
779
  }
590
780
  const previewPath = normalizeScreenshotPath(parsed.preview_path);
781
+ if (!isUnderDir(screenshotsRoot, previewPath)) {
782
+ return createErrorResponse('Bridge returned a screenshot preview path outside .mcp/screenshots/. Refusing to read.', [
783
+ 'This indicates a tampered or misbehaving McpBridge autoload',
784
+ 'Stop the project, verify the bridge script is the one shipped with this server, and retry',
785
+ ]);
786
+ }
591
787
  if (!existsSync(previewPath)) {
592
788
  return createErrorResponse(`Screenshot preview file not found at: ${previewPath}`, [
593
789
  'The preview may have failed to save',
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-tools.js","sourceRoot":"","sources":["../../src/tools/runtime-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-tools.js","sourceRoot":"","sources":["../../src/tools/runtime-tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scene-tools.d.ts","sourceRoot":"","sources":["../../src/tools/scene-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAW7F,eAAO,MAAM,oBAAoB,EAAE,cAAc,EAwMhD,CAAC;AAIF,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe;;;;;;GAYjF;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe;;;;;;GAsC7E;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe;;;;;;GA4BhF;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe;;;;;;GAc/E;AAED,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe;;;;;;GA0BvF;AAED,wBAAsB,0BAA0B,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe;;;;;;GA0B1F"}
1
+ {"version":3,"file":"scene-tools.d.ts","sourceRoot":"","sources":["../../src/tools/scene-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAW7F,eAAO,MAAM,oBAAoB,EAAE,cAAc,EAyNhD,CAAC;AAIF,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe;;;;;;GAYjF;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe;;;;;;GAsC7E;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe;;;;;;GA4BhF;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe;;;;;;GAgB/E;AAED,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe;;;;;;GA0BvF;AAED,wBAAsB,0BAA0B,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe;;;;;;GAuB1F"}