@el4cteo/rbx-studio-mcp 0.5.8 → 0.6.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.
- package/README.md +149 -139
- package/package.json +1 -1
- package/plugin/src/Config.luau +1 -1
package/README.md
CHANGED
|
@@ -1,139 +1,149 @@
|
|
|
1
|
-
# Roblox Studio MCP
|
|
2
|
-
|
|
3
|
-
Let an AI agent drive Roblox Studio: read your place, edit scripts, build geometry, run playtests, take screenshots. 31 tools. MIT.
|
|
4
|
-
|
|
5
|
-

|
|
6
|
-
|
|
7
|
-
## Install
|
|
8
|
-
|
|
9
|
-
**1. The plugin**
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
npx -y @el4cteo/rbx-studio-mcp --install-plugin
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
Or drop `StudioMCP.rbxmx` from [Releases](https://github.com/EL4CTEO/rbx-studio-mcp/releases) into your Studio plugins folder.
|
|
16
|
-
|
|
17
|
-
**2. The server**
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
claude mcp add roblox-studio -- npx -y @el4cteo/rbx-studio-mcp
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
<details>
|
|
24
|
-
<summary>Other clients</summary>
|
|
25
|
-
|
|
26
|
-
Codex CLI:
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
codex mcp add roblox-studio -- npx -y @el4cteo/rbx-studio-mcp
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
Cursor, Claude Desktop, Gemini CLI, Windsurf — add to their config file:
|
|
33
|
-
|
|
34
|
-
```json
|
|
35
|
-
{
|
|
36
|
-
"mcpServers": {
|
|
37
|
-
"roblox-studio": {
|
|
38
|
-
"command": "npx",
|
|
39
|
-
"args": ["-y", "@el4cteo/rbx-studio-mcp"]
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
VS Code / Copilot (`.vscode/mcp.json`) uses `"servers"` instead of `"mcpServers"`, plus `"type": "stdio"`.
|
|
46
|
-
|
|
47
|
-
opencode (`opencode.json`):
|
|
48
|
-
|
|
49
|
-
```json
|
|
50
|
-
{
|
|
51
|
-
"mcp": {
|
|
52
|
-
"roblox-studio": {
|
|
53
|
-
"type": "local",
|
|
54
|
-
"command": ["npx", "-y", "@el4cteo/rbx-studio-mcp"],
|
|
55
|
-
"enabled": true
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
```
|
|
60
|
-
</details>
|
|
61
|
-
|
|
62
|
-
**3.** Open Studio and accept the `127.0.0.1` prompt. Check it works with `studio_status`.
|
|
63
|
-
|
|
64
|
-
Something wrong? Run `npx -y @el4cteo/rbx-studio-mcp doctor` — it says what is broken and how to fix it.
|
|
65
|
-
|
|
66
|
-
Port is **44755**, loopback only. Change it with `--port` and match it in the plugin.
|
|
67
|
-
|
|
68
|
-
## Tools
|
|
69
|
-
|
|
70
|
-
| | |
|
|
71
|
-
|---|---|
|
|
72
|
-
| **Session** | `studio_status` `list_studios` `set_active_studio` |
|
|
73
|
-
| **Discover** | `tree` `inspect` `find` `api` |
|
|
74
|
-
| **Scripts** | `script_read` `script_edit` `script_grep` `script_create` |
|
|
75
|
-
| **Instances** | `create` `modify` `delete` `move` |
|
|
76
|
-
| **World** | `geometry` `terrain` `generate` `assets` `collision` `undo` |
|
|
77
|
-
| **Run & debug** | `playtest` `execute_luau` `character` `input` `console` `debug` `performance` |
|
|
78
|
-
| **Look** | `screenshot` `viewport` `device` |
|
|
79
|
-
|
|
80
|
-
Write tools take arrays — ten script edits is one call, one **Ctrl+Z**, and all-or-nothing.
|
|
81
|
-
|
|
82
|
-
Two things to watch: a playtest connects a second session, so pass `studioId` and use the edit one for changes that must last; `device` emulation stays on until `device op="stop"`.
|
|
83
|
-
|
|
84
|
-
## The console panel
|
|
85
|
-
|
|
86
|
-
Every call is logged with how long it took. Below the header is a command line — type a command, or type a sentence and a coding agent answers it.
|
|
87
|
-
|
|
88
|
-
| | |
|
|
89
|
-
|---|---|
|
|
90
|
-
| `help` | list everything |
|
|
91
|
-
| `doctor` | check the setup |
|
|
92
|
-
| `status` `version` `place` `clients` | what this session is |
|
|
93
|
-
| `studios` `use <n>` | which Studio window calls go to |
|
|
94
|
-
| `theme [name]` `visuals` `log [level]` `clear` `copy` | the panel |
|
|
95
|
-
| `port [n]` `reconnect` | the connection |
|
|
96
|
-
| `agent [use <id>\|new]` `stop` | which agent runs your prompts |
|
|
97
|
-
| anything else | sent to that agent |
|
|
98
|
-
|
|
99
|
-
Arrows walk the history, Tab completes.
|
|
100
|
-
|
|
101
|
-
**Prompts start a real agent** — whichever you have on PATH: Claude Code, Codex, opencode, Gemini, Cursor, Amp, Qwen Code, Factory Droid, goose, Copilot CLI, Aider, Crush, DeepSeek Harness. It runs headless, drives the same Studio, and its work appears in the log. It is a separate session from your terminal, billed separately, and allowed the `rbx-studio` tools only. `stop` cancels it.
|
|
102
|
-
|
|
103
|
-
Eight themes behind the tab on the right edge. Your pick is remembered.
|
|
104
|
-
|
|
105
|
-
## Why this one
|
|
106
|
-
|
|
107
|
-
- **Push, not poll** — 13.6 ms per call against 25.8 ms.
|
|
108
|
-
- **Safe script edits** — writes go through the script editor, so unsaved work survives.
|
|
109
|
-
- **Stale edits are refused** — pass back the `rev` from `script_read` and a write lands only if nobody else touched the file.
|
|
110
|
-
- **Property names are checked** against the running engine, so `Anchorred` comes back as a suggestion, not a runtime error.
|
|
111
|
-
|
|
112
|
-
## DeepSeek Harness (dsh)
|
|
113
|
-
|
|
114
|
-
This server registers as a dsh plugin.
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
1
|
+
# Roblox Studio MCP
|
|
2
|
+
|
|
3
|
+
Let an AI agent drive Roblox Studio: read your place, edit scripts, build geometry, run playtests, take screenshots. 31 tools. MIT.
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
**1. The plugin**
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx -y @el4cteo/rbx-studio-mcp --install-plugin
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Or drop `StudioMCP.rbxmx` from [Releases](https://github.com/EL4CTEO/rbx-studio-mcp/releases) into your Studio plugins folder.
|
|
16
|
+
|
|
17
|
+
**2. The server**
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
claude mcp add roblox-studio -- npx -y @el4cteo/rbx-studio-mcp
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
<details>
|
|
24
|
+
<summary>Other clients</summary>
|
|
25
|
+
|
|
26
|
+
Codex CLI:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
codex mcp add roblox-studio -- npx -y @el4cteo/rbx-studio-mcp
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Cursor, Claude Desktop, Gemini CLI, Windsurf — add to their config file:
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"mcpServers": {
|
|
37
|
+
"roblox-studio": {
|
|
38
|
+
"command": "npx",
|
|
39
|
+
"args": ["-y", "@el4cteo/rbx-studio-mcp"]
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
VS Code / Copilot (`.vscode/mcp.json`) uses `"servers"` instead of `"mcpServers"`, plus `"type": "stdio"`.
|
|
46
|
+
|
|
47
|
+
opencode (`opencode.json`):
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"mcp": {
|
|
52
|
+
"roblox-studio": {
|
|
53
|
+
"type": "local",
|
|
54
|
+
"command": ["npx", "-y", "@el4cteo/rbx-studio-mcp"],
|
|
55
|
+
"enabled": true
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
</details>
|
|
61
|
+
|
|
62
|
+
**3.** Open Studio and accept the `127.0.0.1` prompt. Check it works with `studio_status`.
|
|
63
|
+
|
|
64
|
+
Something wrong? Run `npx -y @el4cteo/rbx-studio-mcp doctor` — it says what is broken and how to fix it.
|
|
65
|
+
|
|
66
|
+
Port is **44755**, loopback only. Change it with `--port` and match it in the plugin.
|
|
67
|
+
|
|
68
|
+
## Tools
|
|
69
|
+
|
|
70
|
+
| | |
|
|
71
|
+
|---|---|
|
|
72
|
+
| **Session** | `studio_status` `list_studios` `set_active_studio` |
|
|
73
|
+
| **Discover** | `tree` `inspect` `find` `api` |
|
|
74
|
+
| **Scripts** | `script_read` `script_edit` `script_grep` `script_create` |
|
|
75
|
+
| **Instances** | `create` `modify` `delete` `move` |
|
|
76
|
+
| **World** | `geometry` `terrain` `generate` `assets` `collision` `undo` |
|
|
77
|
+
| **Run & debug** | `playtest` `execute_luau` `character` `input` `console` `debug` `performance` |
|
|
78
|
+
| **Look** | `screenshot` `viewport` `device` |
|
|
79
|
+
|
|
80
|
+
Write tools take arrays — ten script edits is one call, one **Ctrl+Z**, and all-or-nothing.
|
|
81
|
+
|
|
82
|
+
Two things to watch: a playtest connects a second session, so pass `studioId` and use the edit one for changes that must last; `device` emulation stays on until `device op="stop"`.
|
|
83
|
+
|
|
84
|
+
## The console panel
|
|
85
|
+
|
|
86
|
+
Every call is logged with how long it took. Below the header is a command line — type a command, or type a sentence and a coding agent answers it.
|
|
87
|
+
|
|
88
|
+
| | |
|
|
89
|
+
|---|---|
|
|
90
|
+
| `help` | list everything |
|
|
91
|
+
| `doctor` | check the setup |
|
|
92
|
+
| `status` `version` `place` `clients` | what this session is |
|
|
93
|
+
| `studios` `use <n>` | which Studio window calls go to |
|
|
94
|
+
| `theme [name]` `visuals` `log [level]` `clear` `copy` | the panel |
|
|
95
|
+
| `port [n]` `reconnect` | the connection |
|
|
96
|
+
| `agent [use <id>\|new]` `stop` | which agent runs your prompts |
|
|
97
|
+
| anything else | sent to that agent |
|
|
98
|
+
|
|
99
|
+
Arrows walk the history, Tab completes.
|
|
100
|
+
|
|
101
|
+
**Prompts start a real agent** — whichever you have on PATH: Claude Code, Codex, opencode, Gemini, Cursor, Amp, Qwen Code, Factory Droid, goose, Copilot CLI, Aider, Crush, DeepSeek Harness. It runs headless, drives the same Studio, and its work appears in the log. It is a separate session from your terminal, billed separately, and allowed the `rbx-studio` tools only. `stop` cancels it.
|
|
102
|
+
|
|
103
|
+
Eight themes behind the tab on the right edge. Your pick is remembered.
|
|
104
|
+
|
|
105
|
+
## Why this one
|
|
106
|
+
|
|
107
|
+
- **Push, not poll** — 13.6 ms per call against 25.8 ms.
|
|
108
|
+
- **Safe script edits** — writes go through the script editor, so unsaved work survives.
|
|
109
|
+
- **Stale edits are refused** — pass back the `rev` from `script_read` and a write lands only if nobody else touched the file.
|
|
110
|
+
- **Property names are checked** against the running engine, so `Anchorred` comes back as a suggestion, not a runtime error.
|
|
111
|
+
|
|
112
|
+
## DeepSeek Harness (dsh)
|
|
113
|
+
|
|
114
|
+
This server registers as a dsh plugin. Append this row to `$DSH_HOME/cordis.patch.yml`,
|
|
115
|
+
or to `$DSH_HOME/profiles/<name>/cordis.patch.yml` for one profile only:
|
|
116
|
+
|
|
117
|
+
```yaml
|
|
118
|
+
- insert:
|
|
119
|
+
- id: mcp-rbx-studio
|
|
120
|
+
name: '@deepseek-ai/dsh-mcp-client'
|
|
121
|
+
config:
|
|
122
|
+
serverName: rbx-studio
|
|
123
|
+
transport: stdio
|
|
124
|
+
command: npx
|
|
125
|
+
args: ['-y', '@el4cteo/rbx-studio-mcp']
|
|
126
|
+
cwd: !!js process.cwd()
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Then `dsh --profile headless "add a spawn point"`. Needs `DEEPSEEK_API_KEY`.
|
|
130
|
+
The same row, commented, is in `config/dsh.cordis.yml` for use with `dsh --patch`.
|
|
131
|
+
|
|
132
|
+
## Security
|
|
133
|
+
|
|
134
|
+
Loopback only, and requires a header a browser cannot set cross-origin. Your experience's "Allow HTTP Requests" setting is untouched.
|
|
135
|
+
|
|
136
|
+
## Development
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
npm install
|
|
140
|
+
npm run build # TypeScript -> dist/
|
|
141
|
+
npm run install:plugin # build the plugin and copy it into Studio
|
|
142
|
+
npm test
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Needs `luau`, `luau-compile` and `luau-analyze` from [the Luau releases](https://github.com/luau-lang/luau/releases) on `PATH` or in `tools/`.
|
|
146
|
+
|
|
147
|
+
## Licence
|
|
148
|
+
|
|
149
|
+
MIT.
|
package/package.json
CHANGED
package/plugin/src/Config.luau
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
local Config = {}
|
|
11
11
|
|
|
12
|
-
Config.PLUGIN_VERSION = "0.
|
|
12
|
+
Config.PLUGIN_VERSION = "0.6.0"
|
|
13
13
|
|
|
14
14
|
-- Fingerprint of plugin/src, stamped in by scripts/build-plugin.mjs. The server
|
|
15
15
|
-- computes the same hash from its own copy of the sources and compares, so a
|