Skip to content

Commit 1b01c2c

Browse files
dsarnoclaude
andcommitted
Tighten README: clear install steps, collapse details, extract dev docs
Move development setup, testing, and PR workflow into docs/CONTRIBUTING.md. Simplify install instructions with concrete git clone + cp commands. Collapse tools, resources, and manual config into <details> sections. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 67e42f4 commit 1b01c2c

2 files changed

Lines changed: 128 additions & 121 deletions

File tree

README.md

Lines changed: 75 additions & 121 deletions
Original file line numberDiff line numberDiff line change
@@ -7,100 +7,56 @@
77
[![CI](https://github.com/hi-godot/godot-ai/actions/workflows/ci.yml/badge.svg)](https://github.com/hi-godot/godot-ai/actions/workflows/ci.yml)
88
[![codecov](https://codecov.io/gh/hi-godot/godot-ai/graph/badge.svg)](https://codecov.io/gh/hi-godot/godot-ai)
99

10-
Connect MCP clients directly to a live Godot editor.
10+
**Connect MCP clients directly to a live Godot editor.** Godot AI bridges AI assistants (Claude Code, Codex, Antigravity, etc.) with your Godot Editor via the [Model Context Protocol](https://modelcontextprotocol.io/introduction). Inspect scenes, create nodes, search project data, run tests, and read structured editor resources — all from a prompt.
1111

12-
Godot AI exposes the Godot editor over MCP so tools like Claude Code and other HTTP-capable MCP clients can inspect scenes, search project data, create nodes, run tests, and read structured editor resources from a real project.
12+
> **Status:** early, usable, and still expanding.
1313
14-
> **Status:** early, usable, and still expanding. The current build already supports scene and project inspection, node creation, in-editor test execution, multi-session routing, client configuration, and MCP resources.
14+
*Independent community project, not affiliated with the [Godot Foundation](https://godot.foundation). Godot Engine is [MIT-licensed](https://godotengine.org/license).*
1515

16-
*This is an independent community project, not affiliated with or endorsed by the [Godot Foundation](https://godot.foundation). Godot Engine is a free and open-source project under the [MIT license](https://godotengine.org/license).*
17-
18-
## What It Does
19-
20-
- Bridges a running Godot editor to MCP over HTTP.
21-
- Exposes editor state, scene data, selection, project settings, logs, and sessions as tools and resources.
22-
- Lets an MCP client create nodes and inspect the project without custom per-client glue.
23-
- Runs GDScript test suites inside the connected editor and returns structured results.
24-
- Supports multiple connected Godot sessions with explicit active-session routing.
16+
---
2517

2618
## Quick Start
2719

2820
### Prerequisites
2921

3022
- Godot `4.3+` (`4.4+` recommended)
31-
- [uv](https://docs.astral.sh/uv/) for user installs
32-
- An MCP client that can connect to an HTTP MCP server
23+
- [uv](https://docs.astral.sh/uv/) (used to install the Python server)
24+
- An MCP client ([Claude Code](https://docs.anthropic.com/en/docs/claude-code) | [Codex](https://openai.com/index/codex/) | [Antigravity](https://www.antigravity.dev/))
3325

3426
### 1. Install the plugin
3527

36-
Copy `plugin/addons/godot_ai/` into your Godot project's `addons/` folder.
37-
38-
### 2. Enable the plugin
39-
40-
In Godot, open **Project > Project Settings > Plugins** and enable **Godot AI**.
41-
42-
When enabled, the plugin will:
28+
Clone the repo (or [download the zip](https://github.com/hi-godot/godot-ai/archive/refs/heads/main.zip)) and copy the plugin into your Godot project:
4329

44-
- start or reuse the shared MCP server
45-
- connect the editor to the server over WebSocket
46-
- show connection state, client configuration, and logs in the Godot AI dock
30+
```bash
31+
git clone https://github.com/hi-godot/godot-ai.git
32+
cp -r godot-ai/plugin/addons/godot_ai your-project/addons/
33+
```
4734

48-
The launcher checks for a local development checkout first, then falls back to `uvx`, then a system `godot-ai` install.
35+
### 2. Enable the plugin
4936

50-
### 3. Connect an MCP client
37+
In Godot: **Project > Project Settings > Plugins** — enable **Godot AI**.
5138

52-
The dock includes **Configure** buttons for supported clients:
39+
The plugin will automatically start the MCP server, connect over WebSocket, and show status in the **Godot AI** dock.
5340

54-
- `Claude Code`
55-
- `Codex`
56-
- `Antigravity`
41+
### 3. Connect your MCP client
5742

58-
For other clients, point them at:
43+
Click a **Configure** button in the dock, or point any HTTP MCP client at:
5944

6045
```text
6146
http://127.0.0.1:8000/mcp
6247
```
6348

64-
<details>
65-
<summary><strong>Manual client configuration examples</strong></summary>
66-
67-
**Claude Code**
68-
69-
```bash
70-
claude mcp add --scope user --transport http godot-ai http://127.0.0.1:8000/mcp
71-
```
72-
73-
**Codex** (`~/.codex/config.toml`)
74-
75-
```toml
76-
[mcp_servers."godot-ai"]
77-
url = "http://127.0.0.1:8000/mcp"
78-
enabled = true
79-
```
80-
81-
**Antigravity** (`~/.gemini/antigravity/mcp_config.json`)
82-
83-
```json
84-
{
85-
"mcpServers": {
86-
"godot-ai": {
87-
"serverUrl": "http://127.0.0.1:8000/mcp",
88-
"disabled": false
89-
}
90-
}
91-
}
92-
```
93-
</details>
49+
### 4. Try it
9450

95-
### 4. Try a few prompts
51+
- *"Show me the current scene hierarchy."*
52+
- *"Create a Camera3D named MainCamera under /Main."*
53+
- *"Search the project for PackedScene files in ui/."*
54+
- *"Run the scene test suite."*
9655

97-
- `Show me the current scene hierarchy.`
98-
- `What nodes are currently selected in the editor?`
99-
- `Create a Camera3D named MainCamera under /Main.`
100-
- `Search the project for PackedScene files in ui/.`
101-
- `Run the scene test suite.`
56+
---
10257

103-
## Capabilities
58+
<details>
59+
<summary><strong>Available Tools</strong></summary>
10460

10561
### Sessions and Editor
10662

@@ -113,19 +69,19 @@ enabled = true
11369
| `logs_read` | Read recent MCP log lines from the editor |
11470
| `reload_plugin` | Reload the Godot editor plugin and wait for reconnect |
11571

116-
### Scene and Node Workflows
72+
### Scene and Nodes
11773

11874
| Tool | Description |
11975
|------|-------------|
120-
| `scene_get_hierarchy` | Read the scene tree with pagination support |
76+
| `scene_get_hierarchy` | Read the scene tree with pagination |
12177
| `scene_get_roots` | List open scenes in the editor |
12278
| `node_create` | Create a node by type with optional name and parent path |
12379
| `node_find` | Search nodes by name, type, or group |
12480
| `node_get_properties` | Read all properties for a node |
12581
| `node_get_children` | Read direct children for a node |
12682
| `node_get_groups` | Read group membership for a node |
12783

128-
### Project and Test Workflows
84+
### Project and Testing
12985

13086
| Tool | Description |
13187
|------|-------------|
@@ -141,9 +97,10 @@ enabled = true
14197
| `client_configure` | Configure a supported MCP client from the editor |
14298
| `client_status` | Check which supported clients are configured |
14399

144-
## Resources
100+
</details>
145101

146-
Godot AI also exposes structured MCP resources for clients that prefer reading state directly.
102+
<details>
103+
<summary><strong>MCP Resources</strong></summary>
147104

148105
| Resource URI | Description |
149106
|-------------|-------------|
@@ -155,70 +112,67 @@ Godot AI also exposes structured MCP resources for clients that prefer reading s
155112
| `godot://project/settings` | Common project settings subset |
156113
| `godot://logs/recent` | Recent editor log lines |
157114

158-
## Default Ports
115+
</details>
116+
117+
<details>
118+
<summary><strong>Manual Client Configuration</strong></summary>
119+
120+
**Claude Code**
121+
122+
```bash
123+
claude mcp add --scope user --transport http godot-ai http://127.0.0.1:8000/mcp
124+
```
125+
126+
**Codex** (`~/.codex/config.toml`)
127+
128+
```toml
129+
[mcp_servers."godot-ai"]
130+
url = "http://127.0.0.1:8000/mcp"
131+
enabled = true
132+
```
133+
134+
**Antigravity** (`~/.gemini/antigravity/mcp_config.json`)
135+
136+
```json
137+
{
138+
"mcpServers": {
139+
"godot-ai": {
140+
"serverUrl": "http://127.0.0.1:8000/mcp",
141+
"disabled": false
142+
}
143+
}
144+
}
145+
```
159146

160-
| Port | Purpose |
161-
|------|---------|
162-
| `9500` | WebSocket link between Godot and the Python server |
163-
| `8000` | HTTP MCP endpoint for clients (`/mcp`) |
147+
</details>
164148

165-
## How It Works
149+
<details>
150+
<summary><strong>How It Works</strong></summary>
166151

167152
```text
168153
MCP Client
169-
| HTTP MCP
154+
| HTTP (/mcp)
170155
v
171-
Python Server (FastMCP)
172-
| WebSocket
156+
Python Server (FastMCP) port 8000
157+
| WebSocket port 9500
173158
v
174159
Godot Editor Plugin
175160
| EditorInterface + SceneTree APIs
176161
v
177162
Godot Editor
178163
```
179164

180-
The Godot plugin is the bridge to the live editor. It starts or reuses the Python server, connects over WebSocket, and exposes editor capabilities as MCP tools and resources over HTTP.
181-
182-
## Development
183-
184-
```bash
185-
# Create the local dev environment
186-
script/setup-dev
187-
188-
# Activate the environment
189-
source .venv/bin/activate
190-
191-
# Run Python tests
192-
pytest -v
193-
194-
# Lint
195-
ruff check src/ tests/
196-
197-
# Start the MCP server manually in dev mode
198-
python -m godot_ai --transport streamable-http --port 8000 --reload
199-
```
200-
201-
For Godot-side coverage, use the `run_tests` MCP tool against the sample project or a connected editor session.
202-
203-
## Contributing
165+
The plugin starts or reuses the Python server, connects over WebSocket, and exposes editor capabilities as MCP tools and resources over HTTP.
204166

205-
- Work on feature branches off `main`.
206-
- Keep Python tests and lint clean before opening a PR.
207-
- Add tests for new behavior where practical, including Godot-side tests when the change crosses the plugin boundary.
167+
</details>
208168

209-
```bash
210-
git checkout -b feature/my-feature
211-
source .venv/bin/activate
212-
pytest -v
213-
ruff check src/ tests/
214-
git push -u origin feature/my-feature
215-
gh pr create
216-
```
169+
<details>
170+
<summary><strong>Contributing</strong></summary>
217171

218-
## Visual Roadmap
172+
See [CONTRIBUTING.md](docs/CONTRIBUTING.md) for development setup, testing, and PR guidelines.
219173

220-
The current README is still light on visuals. A prioritized asset punch list lives in [docs/readme-visual-punchlist.md](docs/readme-visual-punchlist.md).
174+
</details>
221175

222-
## License
176+
---
223177

224-
A repository license file has not been added yet.
178+
**License:** A repository license file has not been added yet. | **Issues:** [GitHub](https://github.com/hi-godot/godot-ai/issues)

docs/CONTRIBUTING.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Contributing to Godot AI
2+
3+
## Development Setup
4+
5+
```bash
6+
git clone https://github.com/hi-godot/godot-ai.git
7+
cd godot-ai
8+
script/setup-dev # creates .venv, installs deps
9+
source .venv/bin/activate
10+
```
11+
12+
## Testing
13+
14+
### Python tests
15+
16+
```bash
17+
pytest -v # unit + integration tests
18+
ruff check src/ tests/ # lint
19+
ruff format src/ tests/ # format
20+
```
21+
22+
### Godot-side tests
23+
24+
GDScript test suites run inside the connected editor via MCP:
25+
26+
```
27+
run_tests # run all suites
28+
run_tests suite=scene # run one suite
29+
get_test_results # review last results
30+
```
31+
32+
## Dev Server with Auto-Reload
33+
34+
For Python-side changes without restarting Godot:
35+
36+
```bash
37+
python -m godot_ai --transport streamable-http --port 8000 --reload
38+
```
39+
40+
The Godot AI dock also has a **Start/Stop Dev Server** button when running from a dev checkout.
41+
42+
## PR Workflow
43+
44+
1. Branch off `main`
45+
2. Keep tests and lint clean
46+
3. Add tests for new behavior — both Python and Godot-side when crossing the plugin boundary
47+
48+
```bash
49+
git checkout -b feature/my-feature
50+
pytest -v && ruff check src/ tests/
51+
git push -u origin feature/my-feature
52+
gh pr create
53+
```

0 commit comments

Comments
 (0)