@satelliteoflove/godot-mcp 2.4.0 → 2.4.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.
- package/README.md +58 -26
- package/addon/commands/node_commands.gd +11 -8
- package/addon/commands/scene3d_commands.gd +0 -7
- package/addon/core/base_command.gd +29 -0
- package/addon/core/mcp_debugger_plugin.gd +6 -1
- package/addon/core/mcp_utils.gd +4 -0
- package/addon/plugin.cfg +1 -1
- package/dist/core/types.d.ts +5 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/tools/editor.d.ts.map +1 -1
- package/dist/tools/editor.js.map +1 -1
- package/dist/tools/scene3d.d.ts.map +1 -1
- package/dist/tools/scene3d.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,32 +1,26 @@
|
|
|
1
|
-
#
|
|
1
|
+
# godot-mcp
|
|
2
2
|
|
|
3
|
-
MCP server
|
|
3
|
+
An MCP server that gives Claude direct visibility into your Godot editor and running game. Instead of copy-pasting debug output or describing what you're seeing, Claude can observe it directly.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Core Capabilities
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
- Resource inspection for SpriteFrames, TileSets, Materials, and Textures
|
|
13
|
-
- Debug output capture from running games
|
|
7
|
+
- Live editor state - what scene is open, what's selected, which panel you're in
|
|
8
|
+
- Runtime debug output from the running game
|
|
9
|
+
- Viewport awareness - where the camera is pointed (2D and 3D)
|
|
10
|
+
- Screenshots of the editor or running game
|
|
11
|
+
- Scene tree and node properties at runtime
|
|
14
12
|
|
|
15
|
-
##
|
|
13
|
+
## Design Goals
|
|
16
14
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
## Setup
|
|
15
|
+
- **Observation over automation** - help Claude understand what's happening so it can help you solve problems
|
|
16
|
+
- **Minimal token footprint** - more room for actual conversation
|
|
17
|
+
- **Friction-free maintenance** - version mismatch detection and one-command updates
|
|
22
18
|
|
|
23
|
-
|
|
24
|
-
2. Install the addon: `npx @satelliteoflove/godot-mcp --install-addon /path/to/project`
|
|
25
|
-
3. Enable it in Godot: Project Settings > Plugins > Godot MCP
|
|
19
|
+
## Quick Start
|
|
26
20
|
|
|
27
|
-
###
|
|
21
|
+
### 1. Configure Your AI Assistant
|
|
28
22
|
|
|
29
|
-
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
23
|
+
**Claude Desktop** - Add to config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):
|
|
30
24
|
|
|
31
25
|
```json
|
|
32
26
|
{
|
|
@@ -39,9 +33,7 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
|
|
|
39
33
|
}
|
|
40
34
|
```
|
|
41
35
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
Add to `.mcp.json`:
|
|
36
|
+
**Claude Code** - Add to `.mcp.json`:
|
|
45
37
|
|
|
46
38
|
```json
|
|
47
39
|
{
|
|
@@ -54,9 +46,49 @@ Add to `.mcp.json`:
|
|
|
54
46
|
}
|
|
55
47
|
```
|
|
56
48
|
|
|
57
|
-
|
|
49
|
+
### 2. Install the Godot Addon
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
npx @satelliteoflove/godot-mcp --install-addon /path/to/your/godot/project
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Then enable the addon in Godot: Project Settings > Plugins > Godot MCP.
|
|
56
|
+
|
|
57
|
+
### 3. Start Using
|
|
58
|
+
|
|
59
|
+
Open your Godot project (with addon enabled), restart your AI assistant, and start building.
|
|
60
|
+
|
|
61
|
+
**Version Sync:** The MCP server auto-updates via npx. If the addon version falls behind, use `project` tool with `addon_status` action to check compatibility, then re-run the install command to update.
|
|
58
62
|
|
|
59
|
-
|
|
63
|
+
## Tools
|
|
64
|
+
|
|
65
|
+
| Tool | Description |
|
|
66
|
+
|------|-------------|
|
|
67
|
+
| `scene` | Manage scenes: open, save, or create scenes |
|
|
68
|
+
| `node` | Manage scene nodes: get properties, find, create, update, delete, reparent, attach/detach scripts |
|
|
69
|
+
| `editor` | Control the Godot editor: get state (includes viewport/camera info), manage selection, run/stop project, get debug output, get performance metrics, capture screenshots, set 2D viewport position/zoom |
|
|
70
|
+
| `project` | Get project information and settings |
|
|
71
|
+
| `animation` | Query, control, and edit animations |
|
|
72
|
+
| `tilemap` | Query and edit TileMapLayer data: list layers, get info, get/set cells, convert coordinates |
|
|
73
|
+
| `gridmap` | Query and edit GridMap data: list gridmaps, get info, get/set cells |
|
|
74
|
+
| `resource` | Manage Godot resources: inspect Resource files by path |
|
|
75
|
+
|
|
76
|
+
See [docs/](docs/) for detailed API reference, including the [Claude Code Setup Guide](docs/claude-code-setup.md).
|
|
77
|
+
|
|
78
|
+
## Architecture
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
[AI Assistant] <--stdio--> [MCP Server] <--WebSocket--> [Godot Addon]
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Development
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
cd server
|
|
88
|
+
npm install && npm run build
|
|
89
|
+
npm test
|
|
90
|
+
npm run generate-docs
|
|
91
|
+
```
|
|
60
92
|
|
|
61
93
|
## Requirements
|
|
62
94
|
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
extends MCPBaseCommand
|
|
3
3
|
class_name MCPNodeCommands
|
|
4
4
|
|
|
5
|
+
const FIND_NODES_TIMEOUT := 5.0
|
|
6
|
+
|
|
5
7
|
var _find_nodes_pending := false
|
|
6
8
|
var _find_nodes_result: Dictionary = {}
|
|
7
9
|
|
|
@@ -17,13 +19,6 @@ func get_commands() -> Dictionary:
|
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
|
|
20
|
-
func _require_scene_open() -> Dictionary:
|
|
21
|
-
var root := EditorInterface.get_edited_scene_root()
|
|
22
|
-
if not root:
|
|
23
|
-
return _error("NO_SCENE", "No scene is currently open")
|
|
24
|
-
return {}
|
|
25
|
-
|
|
26
|
-
|
|
27
22
|
func get_node_properties(params: Dictionary) -> Dictionary:
|
|
28
23
|
var node_path: String = params.get("node_path", "")
|
|
29
24
|
if node_path.is_empty():
|
|
@@ -55,7 +50,7 @@ func find_nodes(params: Dictionary) -> Dictionary:
|
|
|
55
50
|
return _error("INVALID_PARAMS", "At least one of name_pattern or type is required")
|
|
56
51
|
|
|
57
52
|
var debugger := _plugin.get_debugger_plugin() as MCPDebuggerPlugin
|
|
58
|
-
if debugger and debugger.has_active_session():
|
|
53
|
+
if debugger and EditorInterface.is_playing_scene() and debugger.has_active_session():
|
|
59
54
|
return await _find_nodes_via_game(debugger, name_pattern, type_filter, root_path)
|
|
60
55
|
|
|
61
56
|
var scene_check := _require_scene_open()
|
|
@@ -80,11 +75,19 @@ func _find_nodes_via_game(debugger: MCPDebuggerPlugin, name_pattern: String, typ
|
|
|
80
75
|
_find_nodes_pending = true
|
|
81
76
|
_find_nodes_result = {}
|
|
82
77
|
|
|
78
|
+
if debugger.find_nodes_received.is_connected(_on_find_nodes_received):
|
|
79
|
+
debugger.find_nodes_received.disconnect(_on_find_nodes_received)
|
|
83
80
|
debugger.find_nodes_received.connect(_on_find_nodes_received, CONNECT_ONE_SHOT)
|
|
84
81
|
debugger.request_find_nodes(name_pattern, type_filter, root_path)
|
|
85
82
|
|
|
83
|
+
var start_time := Time.get_ticks_msec()
|
|
86
84
|
while _find_nodes_pending:
|
|
87
85
|
await Engine.get_main_loop().process_frame
|
|
86
|
+
if (Time.get_ticks_msec() - start_time) / 1000.0 > FIND_NODES_TIMEOUT:
|
|
87
|
+
_find_nodes_pending = false
|
|
88
|
+
if debugger.find_nodes_received.is_connected(_on_find_nodes_received):
|
|
89
|
+
debugger.find_nodes_received.disconnect(_on_find_nodes_received)
|
|
90
|
+
return _error("TIMEOUT", "Game did not respond within %d seconds" % int(FIND_NODES_TIMEOUT))
|
|
88
91
|
|
|
89
92
|
return _find_nodes_result
|
|
90
93
|
|
|
@@ -10,13 +10,6 @@ func get_commands() -> Dictionary:
|
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
func _require_scene_open() -> Dictionary:
|
|
14
|
-
var root := EditorInterface.get_edited_scene_root()
|
|
15
|
-
if not root:
|
|
16
|
-
return _error("NO_SCENE", "No scene is currently open")
|
|
17
|
-
return {}
|
|
18
|
-
|
|
19
|
-
|
|
20
13
|
func get_spatial_info(params: Dictionary) -> Dictionary:
|
|
21
14
|
var scene_check := _require_scene_open()
|
|
22
15
|
if not scene_check.is_empty():
|
|
@@ -27,3 +27,32 @@ func _get_node(path: String) -> Node:
|
|
|
27
27
|
|
|
28
28
|
func _serialize_value(value: Variant) -> Variant:
|
|
29
29
|
return MCPUtils.serialize_value(value)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
func _require_scene_open() -> Dictionary:
|
|
33
|
+
var root := EditorInterface.get_edited_scene_root()
|
|
34
|
+
if not root:
|
|
35
|
+
return _error("NO_SCENE", "No scene is currently open")
|
|
36
|
+
return {}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
func _require_typed_node(path: String, type: String, type_error_code: String = "WRONG_TYPE") -> Variant:
|
|
40
|
+
var node := _get_node(path)
|
|
41
|
+
if not node:
|
|
42
|
+
return _error("NODE_NOT_FOUND", "Node not found: %s" % path)
|
|
43
|
+
if not node.is_class(type):
|
|
44
|
+
return _error(type_error_code, "Expected %s, got %s" % [type, node.get_class()])
|
|
45
|
+
return node
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
func _find_nodes_of_type(root: Node, type: String) -> Array[Dictionary]:
|
|
49
|
+
var result: Array[Dictionary] = []
|
|
50
|
+
_find_nodes_recursive(root, type, result)
|
|
51
|
+
return result
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
func _find_nodes_recursive(node: Node, type: String, result: Array[Dictionary]) -> void:
|
|
55
|
+
if node.is_class(type):
|
|
56
|
+
result.append({"path": str(node.get_path()), "name": node.name})
|
|
57
|
+
for child in node.get_children():
|
|
58
|
+
_find_nodes_recursive(child, type, result)
|
|
@@ -56,7 +56,12 @@ func _session_stopped() -> void:
|
|
|
56
56
|
|
|
57
57
|
|
|
58
58
|
func has_active_session() -> bool:
|
|
59
|
-
|
|
59
|
+
if _active_session_id < 0:
|
|
60
|
+
return false
|
|
61
|
+
if not EditorInterface.is_playing_scene():
|
|
62
|
+
_active_session_id = -1
|
|
63
|
+
return false
|
|
64
|
+
return true
|
|
60
65
|
|
|
61
66
|
|
|
62
67
|
func request_screenshot(max_width: int = 1920) -> void:
|
package/addon/core/mcp_utils.gd
CHANGED
|
@@ -47,8 +47,12 @@ static func serialize_value(value: Variant) -> Variant:
|
|
|
47
47
|
match typeof(value):
|
|
48
48
|
TYPE_VECTOR2:
|
|
49
49
|
return {"x": value.x, "y": value.y}
|
|
50
|
+
TYPE_VECTOR2I:
|
|
51
|
+
return {"x": value.x, "y": value.y}
|
|
50
52
|
TYPE_VECTOR3:
|
|
51
53
|
return {"x": value.x, "y": value.y, "z": value.z}
|
|
54
|
+
TYPE_VECTOR3I:
|
|
55
|
+
return {"x": value.x, "y": value.y, "z": value.z}
|
|
52
56
|
TYPE_COLOR:
|
|
53
57
|
return {"r": value.r, "g": value.g, "b": value.b, "a": value.a}
|
|
54
58
|
TYPE_OBJECT:
|
package/addon/plugin.cfg
CHANGED
package/dist/core/types.d.ts
CHANGED
package/dist/core/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AACzD,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAC7E,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,YAAY,CAAC;AAEpD,MAAM,WAAW,cAAc,CAAC,OAAO,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;CACrF;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;IAClB,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;CAC5E;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAChD"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AACzD,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAC7E,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,YAAY,CAAC;AAEpD,MAAM,WAAW,cAAc,CAAC,OAAO,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;CACrF;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;IAClB,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;CAC5E;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,OAAO;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../src/tools/editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../../src/tools/editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,iBAAiB,EAAyB,MAAM,kBAAkB,CAAC;AAwFjF,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2GjB,CAAC;AAEH,eAAO,MAAM,WAAW,EAAe,iBAAiB,EAAE,CAAC"}
|
package/dist/tools/editor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.js","sourceRoot":"","sources":["../../src/tools/editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"editor.js","sourceRoot":"","sources":["../../src/tools/editor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene3d.d.ts","sourceRoot":"","sources":["../../src/tools/scene3d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"scene3d.d.ts","sourceRoot":"","sources":["../../src/tools/scene3d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,iBAAiB,EAAW,MAAM,kBAAkB,CAAC;AA2FnE,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyElB,CAAC;AAEH,eAAO,MAAM,YAAY,EAAgB,iBAAiB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene3d.js","sourceRoot":"","sources":["../../src/tools/scene3d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"scene3d.js","sourceRoot":"","sources":["../../src/tools/scene3d.ts"],"names":[],"mappings":"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"}
|