@el4cteo/rbx-studio-mcp 0.5.6 → 0.5.9

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 CHANGED
@@ -1,139 +1,141 @@
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
- ![The Studio MCP panel](docs/rbx-studio.png)
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. `config/dsh.cordis.yml` is the row:
115
-
116
- ```sh
117
- dsh --profile headless --patch config/dsh.cordis.yml "add a spawn point"
118
- ```
119
-
120
- To keep it, append that row to your own `cordis.patch.yml`. Needs `DEEPSEEK_API_KEY`.
121
-
122
- ## Security
123
-
124
- Loopback only, and requires a header a browser cannot set cross-origin. Your experience's "Allow HTTP Requests" setting is untouched.
125
-
126
- ## Development
127
-
128
- ```bash
129
- npm install
130
- npm run build # TypeScript -> dist/
131
- npm run install:plugin # build the plugin and copy it into Studio
132
- npm test
133
- ```
134
-
135
- Needs `luau`, `luau-compile` and `luau-analyze` from [the Luau releases](https://github.com/luau-lang/luau/releases) on `PATH` or in `tools/`.
136
-
137
- ## Licence
138
-
139
- MIT.
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
+ ![The Studio MCP panel](docs/rbx-studio.png)
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. The row ships in the package, at
115
+ `node_modules/@el4cteo/rbx-studio-mcp/config/dsh.cordis.yml`:
116
+
117
+ ```sh
118
+ dsh --profile headless --patch <that path> "add a spawn point"
119
+ ```
120
+
121
+ To keep it, append the row to `$DSH_HOME/profiles/<name>/cordis.patch.yml` for one
122
+ profile, or `$DSH_HOME/cordis.patch.yml` for all of them. Needs `DEEPSEEK_API_KEY`.
123
+
124
+ ## Security
125
+
126
+ Loopback only, and requires a header a browser cannot set cross-origin. Your experience's "Allow HTTP Requests" setting is untouched.
127
+
128
+ ## Development
129
+
130
+ ```bash
131
+ npm install
132
+ npm run build # TypeScript -> dist/
133
+ npm run install:plugin # build the plugin and copy it into Studio
134
+ npm test
135
+ ```
136
+
137
+ Needs `luau`, `luau-compile` and `luau-analyze` from [the Luau releases](https://github.com/luau-lang/luau/releases) on `PATH` or in `tools/`.
138
+
139
+ ## Licence
140
+
141
+ MIT.
@@ -0,0 +1,45 @@
1
+ # rbx-studio for DeepSeek Harness (dsh).
2
+ #
3
+ # dsh is "everything is a plugin", and an MCP server becomes one through the
4
+ # `@deepseek-ai/dsh-mcp-client` bridge: one overlay row per server, and its
5
+ # tools arrive as native tools named `mcp__<serverName>__<tool>`. That is the
6
+ # same naming Claude Code and Codex use, so nothing else in this project has to
7
+ # know which harness is driving it.
8
+ #
9
+ # Use it for one run:
10
+ #
11
+ # dsh --profile headless --patch /path/to/dsh.cordis.yml "add a spawn point"
12
+ #
13
+ # Or keep it, by merging this row into your own patch layer -- append to it
14
+ # rather than overwriting, since it may already hold unrelated patches:
15
+ #
16
+ # $DSH_HOME/profiles/<name>/cordis.patch.yml one profile
17
+ # $DSH_HOME/cordis.patch.yml every profile
18
+ #
19
+ # Studio must be open with the plugin installed; dsh starts the bridge, not the
20
+ # editor. If the port is already held by another agent's server, this one
21
+ # becomes a peer and proxies to it, which is how several agents share one
22
+ # Studio.
23
+ - insert:
24
+ - id: mcp-rbx-studio
25
+ name: '@deepseek-ai/dsh-mcp-client'
26
+ config:
27
+ # Fixes the tool prefix at `mcp__rbx-studio__`. Deliberately not left to
28
+ # the server's own reported name: dsh treats that as untrusted, and a
29
+ # rename would silently invalidate every permission rule and every
30
+ # session history entry that referred to these tools.
31
+ serverName: rbx-studio
32
+ transport: stdio
33
+ command: npx
34
+ args: ['-y', '@el4cteo/rbx-studio-mcp']
35
+ env: {}
36
+ # The place dsh was started from. The bridge itself does not care, but
37
+ # the tools report paths relative to it.
38
+ cwd: !!js process.cwd()
39
+ # Screenshots and script reads are the big payloads here, and a slow
40
+ # Studio round trip on a large place can outrun a shorter budget.
41
+ toolCallTimeoutMs: 60000
42
+ # A missing Studio is not a reason to refuse to start. The tools simply
43
+ # answer NO_STUDIO until the editor is open, which is a better first
44
+ # session than a harness that will not boot.
45
+ failOnStartupError: false
package/package.json CHANGED
@@ -1,68 +1,74 @@
1
- {
2
- "name": "@el4cteo/rbx-studio-mcp",
3
- "version": "0.5.6",
4
- "description": "MCP server for Roblox Studio. 31 tools, push-based SSE bridge, editor-safe script edits, one-step undo.",
5
- "type": "module",
6
- "license": "MIT",
7
- "bin": {
8
- "rbx-studio-mcp": "dist/index.js"
9
- },
10
- "files": [
11
- "dist",
12
- "plugin",
13
- "scripts",
14
- "README.md",
15
- "LICENSE"
16
- ],
17
- "engines": {
18
- "node": ">=22.15"
19
- },
20
- "scripts": {
21
- "build": "tsc",
22
- "watch": "tsc --watch",
23
- "typecheck": "tsc --noEmit",
24
- "start": "node dist/index.js",
25
- "build:plugin": "node scripts/check-plugin.mjs && node scripts/build-plugin.mjs",
26
- "sourcemap": "node scripts/sourcemap.mjs",
27
- "test": "node scripts/test-plugin.mjs && node scripts/test-transport.mjs && node scripts/test-bridge.mjs && node scripts/test-console.mjs && node scripts/test-failover.mjs",
28
- "build:all": "npm run build && npm run build:plugin",
29
- "install:plugin": "node scripts/install-plugin.mjs",
30
- "check:plugin": "node scripts/check-plugin.mjs",
31
- "doctor": "node dist/index.js doctor",
32
- "prepack": "npm run build"
33
- },
34
- "keywords": [
35
- "mcp",
36
- "mcp-server",
37
- "model-context-protocol",
38
- "roblox",
39
- "roblox-studio",
40
- "roblox-development",
41
- "luau",
42
- "claude",
43
- "claude-code",
44
- "cursor",
45
- "ai",
46
- "ai-agent"
47
- ],
48
- "dependencies": {
49
- "@modelcontextprotocol/sdk": "^1.30.0",
50
- "zod": "^4.5.4"
51
- },
52
- "devDependencies": {
53
- "@types/node": "^26.5.0",
54
- "typescript": "^7.0.2"
55
- },
56
- "author": "EL4CTEO",
57
- "repository": {
58
- "type": "git",
59
- "url": "git+https://github.com/EL4CTEO/rbx-studio-mcp.git"
60
- },
61
- "homepage": "https://github.com/EL4CTEO/rbx-studio-mcp#readme",
62
- "bugs": {
63
- "url": "https://github.com/EL4CTEO/rbx-studio-mcp/issues"
64
- },
65
- "publishConfig": {
66
- "access": "public"
67
- }
68
- }
1
+ {
2
+ "name": "@el4cteo/rbx-studio-mcp",
3
+ "version": "0.5.9",
4
+ "description": "MCP server for Roblox Studio. 31 tools, push-based SSE bridge, editor-safe script edits, one-step undo.",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "bin": {
8
+ "rbx-studio-mcp": "dist/index.js"
9
+ },
10
+ "files": [
11
+ "dist",
12
+ "plugin",
13
+ "scripts",
14
+ "config/dsh.cordis.yml",
15
+ "README.md",
16
+ "LICENSE"
17
+ ],
18
+ "dsh": {
19
+ "bundle": {
20
+ "patch": "./config/dsh.cordis.yml"
21
+ }
22
+ },
23
+ "engines": {
24
+ "node": ">=22.15"
25
+ },
26
+ "scripts": {
27
+ "build": "tsc",
28
+ "watch": "tsc --watch",
29
+ "typecheck": "tsc --noEmit",
30
+ "start": "node dist/index.js",
31
+ "build:plugin": "node scripts/check-plugin.mjs && node scripts/build-plugin.mjs",
32
+ "sourcemap": "node scripts/sourcemap.mjs",
33
+ "test": "node scripts/test-plugin.mjs && node scripts/test-transport.mjs && node scripts/test-bridge.mjs && node scripts/test-console.mjs && node scripts/test-failover.mjs",
34
+ "build:all": "npm run build && npm run build:plugin",
35
+ "install:plugin": "node scripts/install-plugin.mjs",
36
+ "check:plugin": "node scripts/check-plugin.mjs",
37
+ "doctor": "node dist/index.js doctor",
38
+ "prepack": "npm run build"
39
+ },
40
+ "keywords": [
41
+ "mcp",
42
+ "mcp-server",
43
+ "model-context-protocol",
44
+ "roblox",
45
+ "roblox-studio",
46
+ "roblox-development",
47
+ "luau",
48
+ "claude",
49
+ "claude-code",
50
+ "cursor",
51
+ "ai",
52
+ "ai-agent"
53
+ ],
54
+ "dependencies": {
55
+ "@modelcontextprotocol/sdk": "^1.30.0",
56
+ "zod": "^4.6.2"
57
+ },
58
+ "devDependencies": {
59
+ "@types/node": "^26.5.1",
60
+ "typescript": "^7.0.2"
61
+ },
62
+ "author": "EL4CTEO",
63
+ "repository": {
64
+ "type": "git",
65
+ "url": "git+https://github.com/EL4CTEO/rbx-studio-mcp.git"
66
+ },
67
+ "homepage": "https://github.com/EL4CTEO/rbx-studio-mcp#readme",
68
+ "bugs": {
69
+ "url": "https://github.com/EL4CTEO/rbx-studio-mcp/issues"
70
+ },
71
+ "publishConfig": {
72
+ "access": "public"
73
+ }
74
+ }