robloxstudio-mcp 1.4.0 → 1.5.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/LICENSE +21 -0
- package/README.md +116 -141
- package/dist/http-server.d.ts.map +1 -1
- package/dist/http-server.js +69 -8
- package/dist/http-server.js.map +1 -1
- package/dist/index.js +57 -5
- package/dist/index.js.map +1 -1
- package/dist/tools/index.d.ts +12 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +29 -0
- package/dist/tools/index.js.map +1 -1
- package/package.json +1 -1
- package/studio-plugin/MCPPlugin.rbxmx +311 -164
- package/studio-plugin/plugin.luau +307 -160
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
# Roblox Studio MCP Server
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
MCP server for AI-powered Roblox Studio integration. 18 specialized tools for exploring projects, analyzing scripts, and performing bulk operations.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
<a href="https://glama.ai/mcp/servers/@boshyxd/robloxstudio-mcp">
|
|
6
|
+
<img width="380" height="200" src="https://glama.ai/mcp/servers/@boshyxd/robloxstudio-mcp/badge" alt="Roblox Studio Server MCP server" />
|
|
7
|
+
</a>
|
|
8
|
+
|
|
9
|
+
## Quick Start
|
|
6
10
|
|
|
7
11
|
**For Claude Code users:**
|
|
8
12
|
```bash
|
|
@@ -22,13 +26,13 @@ claude mcp add robloxstudio -- npx -y robloxstudio-mcp
|
|
|
22
26
|
}
|
|
23
27
|
```
|
|
24
28
|
|
|
25
|
-
##
|
|
29
|
+
## Studio Plugin Setup (Required)
|
|
26
30
|
|
|
27
31
|
The MCP server requires a companion Roblox Studio plugin:
|
|
28
32
|
|
|
29
|
-
1. **Roblox Creator Store
|
|
30
|
-
- Install from: https://create.roblox.com/store/asset/
|
|
31
|
-
- Click "Install"
|
|
33
|
+
1. **Roblox Creator Store**:
|
|
34
|
+
- Install from: https://create.roblox.com/store/asset/75577477776988
|
|
35
|
+
- Click "Install" - Opens in Studio automatically
|
|
32
36
|
|
|
33
37
|
2. **Manual download**:
|
|
34
38
|
- Download [MCPPlugin.rbxmx](https://github.com/boshyxd/robloxstudio-mcp/releases/latest/download/MCPPlugin.rbxmx)
|
|
@@ -38,38 +42,38 @@ The MCP server requires a companion Roblox Studio plugin:
|
|
|
38
42
|
- See [studio-plugin/INSTALLATION.md](studio-plugin/INSTALLATION.md) for other methods
|
|
39
43
|
|
|
40
44
|
**After installation:**
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
45
|
+
- Enable "Allow HTTP Requests" in Game Settings > Security
|
|
46
|
+
- Click the "MCP Server" button in the Plugins toolbar
|
|
47
|
+
- Status should show "Connected" when working
|
|
44
48
|
|
|
45
|
-
##
|
|
49
|
+
## Architecture Overview
|
|
46
50
|
|
|
47
|
-
|
|
51
|
+
Dual-component system bridging Roblox Studio with AI assistants:
|
|
48
52
|
|
|
49
53
|
```mermaid
|
|
50
54
|
%%{init: {'theme':'dark', 'themeVariables': {'primaryColor':'#2d3748', 'primaryTextColor':'#ffffff', 'primaryBorderColor':'#4a5568', 'lineColor':'#718096', 'sectionBkgColor':'#1a202c', 'altSectionBkgColor':'#2d3748', 'gridColor':'#4a5568', 'secondaryColor':'#2b6cb0', 'tertiaryColor':'#319795'}}}%%
|
|
51
55
|
graph TB
|
|
52
|
-
subgraph AI_ENV ["
|
|
53
|
-
AI["
|
|
54
|
-
MCP["
|
|
56
|
+
subgraph AI_ENV ["AI Environment"]
|
|
57
|
+
AI["AI Assistant<br/>Claude Code/Desktop"]
|
|
58
|
+
MCP["MCP Server<br/>Node.js + TypeScript"]
|
|
55
59
|
end
|
|
56
60
|
|
|
57
|
-
subgraph COMM_LAYER ["
|
|
58
|
-
HTTP["
|
|
59
|
-
QUEUE["
|
|
61
|
+
subgraph COMM_LAYER ["Communication Layer"]
|
|
62
|
+
HTTP["HTTP Bridge<br/>localhost:3002"]
|
|
63
|
+
QUEUE["Request Queue<br/>UUID tracking"]
|
|
60
64
|
end
|
|
61
65
|
|
|
62
|
-
subgraph STUDIO_ENV ["
|
|
63
|
-
PLUGIN["
|
|
64
|
-
STUDIO["
|
|
66
|
+
subgraph STUDIO_ENV ["Roblox Studio Environment"]
|
|
67
|
+
PLUGIN["Studio Plugin<br/>Luau Script"]
|
|
68
|
+
STUDIO["Roblox Studio<br/>APIs & Data"]
|
|
65
69
|
end
|
|
66
70
|
|
|
67
|
-
subgraph TOOLS ["
|
|
68
|
-
FILE["
|
|
69
|
-
CONTEXT["
|
|
70
|
-
PROPS["
|
|
71
|
-
CREATE["
|
|
72
|
-
PROJECT["
|
|
71
|
+
subgraph TOOLS ["18 AI Tools"]
|
|
72
|
+
FILE["File System<br/>Trees, Search"]
|
|
73
|
+
CONTEXT["Studio Context<br/>Services, Objects"]
|
|
74
|
+
PROPS["Properties<br/>Get, Set, Mass Ops"]
|
|
75
|
+
CREATE["Object Creation<br/>Single, Mass, Properties"]
|
|
76
|
+
PROJECT["Project Analysis<br/>Smart Structure"]
|
|
73
77
|
end
|
|
74
78
|
|
|
75
79
|
AI -->|stdio| MCP
|
|
@@ -104,81 +108,74 @@ graph TB
|
|
|
104
108
|
class FILE,CONTEXT,PROPS,CREATE,PROJECT toolStyle
|
|
105
109
|
```
|
|
106
110
|
|
|
107
|
-
###
|
|
108
|
-
-
|
|
109
|
-
-
|
|
110
|
-
-
|
|
111
|
-
-
|
|
111
|
+
### Key Components:
|
|
112
|
+
- MCP Server (Node.js/TypeScript) - Exposes 18 tools via stdio
|
|
113
|
+
- HTTP Bridge - Request/response queue on localhost:3002
|
|
114
|
+
- Studio Plugin (Luau) - Polls server and executes API calls
|
|
115
|
+
- Smart Caching - Efficient data transfer
|
|
112
116
|
|
|
113
|
-
##
|
|
117
|
+
## 18 AI Tools
|
|
114
118
|
|
|
115
|
-
###
|
|
116
|
-
-
|
|
117
|
-
-
|
|
119
|
+
### File System Tools
|
|
120
|
+
- `get_file_tree` - Complete project hierarchy with scripts, models, folders
|
|
121
|
+
- `search_files` - Find files by name, type, or content patterns
|
|
118
122
|
|
|
119
|
-
###
|
|
120
|
-
-
|
|
121
|
-
-
|
|
122
|
-
-
|
|
123
|
+
### Studio Context Tools
|
|
124
|
+
- `get_place_info` - Place ID, name, game settings, workspace info
|
|
125
|
+
- `get_services` - All Roblox services and their child counts
|
|
126
|
+
- `search_objects` - Find instances by name, class, or properties
|
|
123
127
|
|
|
124
|
-
###
|
|
125
|
-
-
|
|
126
|
-
-
|
|
127
|
-
-
|
|
128
|
-
-
|
|
128
|
+
### Instance & Property Tools
|
|
129
|
+
- `get_instance_properties` - Complete property dump for any object
|
|
130
|
+
- `get_instance_children` - Child objects with metadata
|
|
131
|
+
- `search_by_property` - Find objects with specific property values
|
|
132
|
+
- `get_class_info` - Available properties/methods for Roblox classes
|
|
129
133
|
|
|
130
|
-
###
|
|
131
|
-
-
|
|
132
|
-
-
|
|
133
|
-
-
|
|
134
|
+
### Property Modification Tools
|
|
135
|
+
- `set_property` - Set a property on any Roblox instance
|
|
136
|
+
- `mass_set_property` - Set the same property on multiple instances
|
|
137
|
+
- `mass_get_property` - Get the same property from multiple instances
|
|
134
138
|
|
|
135
|
-
###
|
|
136
|
-
-
|
|
137
|
-
-
|
|
138
|
-
-
|
|
139
|
-
-
|
|
140
|
-
-
|
|
139
|
+
### Object Creation Tools
|
|
140
|
+
- `create_object` - Create a new Roblox object instance
|
|
141
|
+
- `create_object_with_properties` - Create objects with initial properties
|
|
142
|
+
- `mass_create_objects` - Create multiple objects at once
|
|
143
|
+
- `mass_create_objects_with_properties` - Create multiple objects with properties
|
|
144
|
+
- `delete_object` - Delete a Roblox object instance
|
|
141
145
|
|
|
142
|
-
###
|
|
143
|
-
-
|
|
146
|
+
### Project Analysis Tools
|
|
147
|
+
- `get_project_structure` - Smart hierarchy with depth control (recommended: 5-10)
|
|
144
148
|
|
|
145
|
-
>
|
|
149
|
+
> Note: Previous tools removed: `get_file_content`, `get_file_properties`, `get_selection`, `get_dependencies`, `validate_references`. Use Rojo/Argon workflows instead.
|
|
146
150
|
|
|
147
|
-
##
|
|
151
|
+
## AI-Optimized Features
|
|
148
152
|
|
|
149
|
-
###
|
|
150
|
-
-
|
|
151
|
-
-
|
|
152
|
-
-
|
|
153
|
-
-
|
|
153
|
+
### Mass Operations (v1.3.0)
|
|
154
|
+
- Bulk property editing
|
|
155
|
+
- Mass object creation
|
|
156
|
+
- Batch property reading
|
|
157
|
+
- Atomic undo/redo operations
|
|
154
158
|
|
|
155
|
-
**Example Use Cases:**
|
|
156
159
|
```typescript
|
|
157
|
-
// Set
|
|
160
|
+
// Example: Set multiple parts to red
|
|
158
161
|
mass_set_property(["game.Workspace.Part1", "game.Workspace.Part2"], "BrickColor", "Really red")
|
|
159
|
-
|
|
160
|
-
// Create 10 parts with properties
|
|
161
|
-
mass_create_objects_with_properties([
|
|
162
|
-
{className: "Part", parent: "game.Workspace", name: "RedPart", properties: {BrickColor: "Really red"}},
|
|
163
|
-
{className: "Part", parent: "game.Workspace", name: "BluePart", properties: {BrickColor: "Really blue"}}
|
|
164
|
-
])
|
|
165
162
|
```
|
|
166
163
|
|
|
167
|
-
###
|
|
168
|
-
-
|
|
169
|
-
-
|
|
170
|
-
-
|
|
171
|
-
-
|
|
172
|
-
-
|
|
164
|
+
### Smart Project Structure
|
|
165
|
+
- Service overview with child counts
|
|
166
|
+
- Path-based exploration: `get_project_structure("game.ServerStorage", maxDepth=5)`
|
|
167
|
+
- Script-only filtering for code analysis
|
|
168
|
+
- Intelligent grouping for large folders
|
|
169
|
+
- Recommended maxDepth=5-10
|
|
173
170
|
|
|
174
|
-
###
|
|
175
|
-
-
|
|
176
|
-
-
|
|
177
|
-
-
|
|
171
|
+
### Rich Metadata
|
|
172
|
+
- Script status tracking
|
|
173
|
+
- GUI intelligence
|
|
174
|
+
- Performance optimized
|
|
178
175
|
|
|
179
|
-
##
|
|
176
|
+
## Development & Testing
|
|
180
177
|
|
|
181
|
-
###
|
|
178
|
+
### Commands
|
|
182
179
|
```bash
|
|
183
180
|
npm run dev # Development server with hot reload
|
|
184
181
|
npm run build # Production build
|
|
@@ -187,63 +184,63 @@ npm run lint # ESLint code quality
|
|
|
187
184
|
npm run typecheck # TypeScript validation
|
|
188
185
|
```
|
|
189
186
|
|
|
190
|
-
###
|
|
191
|
-
-
|
|
192
|
-
-
|
|
193
|
-
-
|
|
194
|
-
-
|
|
187
|
+
### Plugin Development
|
|
188
|
+
- Live reload
|
|
189
|
+
- Robust error handling
|
|
190
|
+
- Debug logging
|
|
191
|
+
- Visual status indicators
|
|
195
192
|
|
|
196
|
-
##
|
|
193
|
+
## Communication Protocol
|
|
197
194
|
|
|
198
195
|
```mermaid
|
|
199
196
|
%%{init: {'theme':'dark', 'themeVariables': {'primaryColor':'#2d3748', 'primaryTextColor':'#ffffff', 'primaryBorderColor':'#4a5568', 'lineColor':'#10b981', 'sectionBkgColor':'#1a202c', 'altSectionBkgColor':'#2d3748', 'gridColor':'#4a5568', 'secondaryColor':'#3b82f6', 'tertiaryColor':'#8b5cf6', 'background':'#1a202c', 'mainBkg':'#2d3748', 'secondBkg':'#374151', 'tertiaryColor':'#6366f1'}}}%%
|
|
200
197
|
sequenceDiagram
|
|
201
|
-
participant AI as
|
|
202
|
-
participant MCP as
|
|
203
|
-
participant HTTP as
|
|
204
|
-
participant PLUGIN as
|
|
205
|
-
participant STUDIO as
|
|
198
|
+
participant AI as AI Assistant
|
|
199
|
+
participant MCP as MCP Server
|
|
200
|
+
participant HTTP as HTTP Bridge
|
|
201
|
+
participant PLUGIN as Studio Plugin
|
|
202
|
+
participant STUDIO as Roblox Studio
|
|
206
203
|
|
|
207
|
-
Note over AI,STUDIO:
|
|
204
|
+
Note over AI,STUDIO: Tool Request Flow
|
|
208
205
|
|
|
209
206
|
AI->>+MCP: Call tool (e.g., get_file_tree)
|
|
210
207
|
MCP->>+HTTP: Queue request with UUID
|
|
211
208
|
HTTP->>HTTP: Store in pending requests map
|
|
212
|
-
HTTP-->>-MCP: Request queued
|
|
209
|
+
HTTP-->>-MCP: Request queued
|
|
213
210
|
|
|
214
|
-
Note over PLUGIN:
|
|
211
|
+
Note over PLUGIN: Polling every 500ms
|
|
215
212
|
PLUGIN->>+HTTP: GET /poll
|
|
216
213
|
HTTP->>-PLUGIN: Return pending request + UUID
|
|
217
214
|
|
|
218
215
|
PLUGIN->>+STUDIO: Execute Studio APIs
|
|
219
|
-
Note over STUDIO:
|
|
220
|
-
STUDIO->>-PLUGIN: Return Studio data
|
|
216
|
+
Note over STUDIO: game.ServerStorage<br/>Selection:Get()<br/>Instance properties
|
|
217
|
+
STUDIO->>-PLUGIN: Return Studio data
|
|
221
218
|
|
|
222
219
|
PLUGIN->>+HTTP: POST /response with UUID + data
|
|
223
220
|
HTTP->>-MCP: Resolve promise with data
|
|
224
|
-
MCP->>-AI: Return tool result
|
|
221
|
+
MCP->>-AI: Return tool result
|
|
225
222
|
|
|
226
|
-
Note over AI,STUDIO:
|
|
223
|
+
Note over AI,STUDIO: Error Handling
|
|
227
224
|
|
|
228
225
|
alt Request Timeout (30s)
|
|
229
|
-
HTTP->>MCP: Reject promise with timeout
|
|
230
|
-
MCP->>AI: Return error message
|
|
226
|
+
HTTP->>MCP: Reject promise with timeout
|
|
227
|
+
MCP->>AI: Return error message
|
|
231
228
|
end
|
|
232
229
|
|
|
233
230
|
alt Plugin Disconnected
|
|
234
|
-
PLUGIN->>HTTP: Connection lost
|
|
235
|
-
HTTP->>HTTP: Exponential backoff retry
|
|
236
|
-
Note over PLUGIN: Status: "Waiting for server..."
|
|
231
|
+
PLUGIN->>HTTP: Connection lost
|
|
232
|
+
HTTP->>HTTP: Exponential backoff retry
|
|
233
|
+
Note over PLUGIN: Status: "Waiting for server..."
|
|
237
234
|
end
|
|
238
235
|
```
|
|
239
236
|
|
|
240
237
|
**Features:**
|
|
241
|
-
-
|
|
242
|
-
-
|
|
243
|
-
-
|
|
244
|
-
-
|
|
238
|
+
- 30-second timeouts with exponential backoff
|
|
239
|
+
- Automatic retries
|
|
240
|
+
- Response limiting
|
|
241
|
+
- Request deduplication
|
|
245
242
|
|
|
246
|
-
##
|
|
243
|
+
## Example Usage
|
|
247
244
|
|
|
248
245
|
```javascript
|
|
249
246
|
// Get service overview
|
|
@@ -265,7 +262,7 @@ validate_references()
|
|
|
265
262
|
get_instance_properties("game.StarterGui.MainMenu.SettingsFrame")
|
|
266
263
|
```
|
|
267
264
|
|
|
268
|
-
##
|
|
265
|
+
## Configuration
|
|
269
266
|
|
|
270
267
|
**Environment Variables:**
|
|
271
268
|
- `MCP_SERVER_PORT` - MCP server port (default: stdio)
|
|
@@ -274,32 +271,10 @@ get_instance_properties("game.StarterGui.MainMenu.SettingsFrame")
|
|
|
274
271
|
- `REQUEST_TIMEOUT` - Request timeout (default: 30000ms)
|
|
275
272
|
|
|
276
273
|
**Studio Settings:**
|
|
277
|
-
-
|
|
278
|
-
-
|
|
279
|
-
-
|
|
280
|
-
|
|
281
|
-
##
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
- ➕ **NEW**: `mass_set_property` - Bulk property modification
|
|
285
|
-
- ➕ **NEW**: `mass_get_property` - Batch property reading
|
|
286
|
-
- ➕ **NEW**: `create_object_with_properties` - Object creation with initial properties
|
|
287
|
-
- ➕ **NEW**: `mass_create_objects` - Bulk object creation
|
|
288
|
-
- ➕ **NEW**: `mass_create_objects_with_properties` - Bulk creation with properties
|
|
289
|
-
- 🔥 **ENHANCED**: `get_project_structure` with improved depth parameter documentation
|
|
290
|
-
- 🗑️ **REMOVED**: `get_file_content`, `get_file_properties`, `get_selection`, `get_dependencies`, `validate_references` (use Rojo/Argon workflows instead)
|
|
291
|
-
- ⚡ **PERFORMANCE**: Streamlined API with 18 focused tools vs 15 mixed-purpose tools
|
|
292
|
-
|
|
293
|
-
### **v1.2.0** - Property Modification
|
|
294
|
-
- ➕ Added `set_property` tool for instance modification
|
|
295
|
-
- ➕ Added `create_object` and `delete_object` tools
|
|
296
|
-
- 🔧 Enhanced error handling and validation
|
|
297
|
-
|
|
298
|
-
### **v1.1.0** - Enhanced Discovery
|
|
299
|
-
- 🔍 Improved project structure analysis
|
|
300
|
-
- 📊 Better metadata extraction
|
|
301
|
-
- 🎯 Script and GUI intelligence
|
|
302
|
-
|
|
303
|
-
## 📄 License
|
|
304
|
-
|
|
305
|
-
MIT License - Feel free to use in commercial and personal projects!
|
|
274
|
+
- **Allow HTTP Requests** (Game Settings > Security)
|
|
275
|
+
- **HttpService.HttpEnabled = true**
|
|
276
|
+
- **Plugin activated** via toolbar button
|
|
277
|
+
|
|
278
|
+
## License
|
|
279
|
+
|
|
280
|
+
MIT License - Feel free to use in commercial and personal projects!
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,aAAa,+
|
|
1
|
+
{"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,aAAa,+CAkQ/E"}
|
package/dist/http-server.js
CHANGED
|
@@ -3,30 +3,83 @@ import cors from 'cors';
|
|
|
3
3
|
export function createHttpServer(tools, bridge) {
|
|
4
4
|
const app = express();
|
|
5
5
|
let pluginConnected = false;
|
|
6
|
+
let mcpServerActive = false;
|
|
7
|
+
let lastMCPActivity = 0;
|
|
8
|
+
let mcpServerStartTime = 0;
|
|
9
|
+
// Track MCP server lifecycle
|
|
10
|
+
const setMCPServerActive = (active) => {
|
|
11
|
+
mcpServerActive = active;
|
|
12
|
+
if (active) {
|
|
13
|
+
mcpServerStartTime = Date.now();
|
|
14
|
+
lastMCPActivity = Date.now();
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
mcpServerStartTime = 0;
|
|
18
|
+
lastMCPActivity = 0;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
const trackMCPActivity = () => {
|
|
22
|
+
if (mcpServerActive) {
|
|
23
|
+
lastMCPActivity = Date.now();
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
const isMCPServerActive = () => {
|
|
27
|
+
return mcpServerActive && (Date.now() - lastMCPActivity < 15000); // 15 second timeout
|
|
28
|
+
};
|
|
6
29
|
app.use(cors());
|
|
7
30
|
app.use(express.json({ limit: '50mb' }));
|
|
8
31
|
app.use(express.urlencoded({ limit: '50mb', extended: true }));
|
|
9
32
|
// Health check endpoint
|
|
10
33
|
app.get('/health', (req, res) => {
|
|
11
|
-
res.json({
|
|
34
|
+
res.json({
|
|
35
|
+
status: 'ok',
|
|
36
|
+
service: 'robloxstudio-mcp',
|
|
37
|
+
pluginConnected,
|
|
38
|
+
mcpServerActive: isMCPServerActive(),
|
|
39
|
+
uptime: mcpServerActive ? Date.now() - mcpServerStartTime : 0
|
|
40
|
+
});
|
|
12
41
|
});
|
|
13
42
|
// Plugin readiness endpoint
|
|
14
43
|
app.post('/ready', (req, res) => {
|
|
15
44
|
pluginConnected = true;
|
|
16
45
|
res.json({ success: true });
|
|
17
46
|
});
|
|
18
|
-
//
|
|
47
|
+
// Enhanced status endpoint
|
|
19
48
|
app.get('/status', (req, res) => {
|
|
20
|
-
res.json({
|
|
21
|
-
|
|
22
|
-
|
|
49
|
+
res.json({
|
|
50
|
+
pluginConnected,
|
|
51
|
+
mcpServerActive: isMCPServerActive(),
|
|
52
|
+
lastMCPActivity,
|
|
53
|
+
uptime: mcpServerActive ? Date.now() - mcpServerStartTime : 0
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
// Enhanced polling endpoint for Studio plugin
|
|
23
57
|
app.get('/poll', (req, res) => {
|
|
58
|
+
if (!isMCPServerActive()) {
|
|
59
|
+
res.status(503).json({
|
|
60
|
+
error: 'MCP server not connected',
|
|
61
|
+
pluginConnected: true,
|
|
62
|
+
mcpConnected: false,
|
|
63
|
+
request: null
|
|
64
|
+
});
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
trackMCPActivity();
|
|
24
68
|
const pendingRequest = bridge.getPendingRequest();
|
|
25
69
|
if (pendingRequest) {
|
|
26
|
-
res.json({
|
|
70
|
+
res.json({
|
|
71
|
+
request: pendingRequest.request,
|
|
72
|
+
requestId: pendingRequest.requestId,
|
|
73
|
+
mcpConnected: true,
|
|
74
|
+
pluginConnected: true
|
|
75
|
+
});
|
|
27
76
|
}
|
|
28
77
|
else {
|
|
29
|
-
res.json({
|
|
78
|
+
res.json({
|
|
79
|
+
request: null,
|
|
80
|
+
mcpConnected: true,
|
|
81
|
+
pluginConnected: true
|
|
82
|
+
});
|
|
30
83
|
}
|
|
31
84
|
});
|
|
32
85
|
// Response endpoint for Studio plugin
|
|
@@ -40,6 +93,11 @@ export function createHttpServer(tools, bridge) {
|
|
|
40
93
|
}
|
|
41
94
|
res.json({ success: true });
|
|
42
95
|
});
|
|
96
|
+
// Middleware to track MCP activity for all MCP endpoints
|
|
97
|
+
app.use('/mcp/*', (req, res, next) => {
|
|
98
|
+
trackMCPActivity();
|
|
99
|
+
next();
|
|
100
|
+
});
|
|
43
101
|
// MCP tool proxy endpoints - these will be called by AI tools
|
|
44
102
|
app.post('/mcp/get_file_tree', async (req, res) => {
|
|
45
103
|
try {
|
|
@@ -176,8 +234,11 @@ export function createHttpServer(tools, bridge) {
|
|
|
176
234
|
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
177
235
|
}
|
|
178
236
|
});
|
|
179
|
-
// Add
|
|
237
|
+
// Add methods to control and check server status
|
|
180
238
|
app.isPluginConnected = () => pluginConnected;
|
|
239
|
+
app.setMCPServerActive = setMCPServerActive;
|
|
240
|
+
app.isMCPServerActive = isMCPServerActive;
|
|
241
|
+
app.trackMCPActivity = trackMCPActivity;
|
|
181
242
|
return app;
|
|
182
243
|
}
|
|
183
244
|
//# sourceMappingURL=http-server.js.map
|
package/dist/http-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-server.js","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http-server.js","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -27,7 +27,7 @@ class RobloxStudioMCPServer {
|
|
|
27
27
|
constructor() {
|
|
28
28
|
this.server = new Server({
|
|
29
29
|
name: 'robloxstudio-mcp',
|
|
30
|
-
version: '1.
|
|
30
|
+
version: '1.5.0',
|
|
31
31
|
}, {
|
|
32
32
|
capabilities: {
|
|
33
33
|
tools: {},
|
|
@@ -587,6 +587,39 @@ class RobloxStudioMCPServer {
|
|
|
587
587
|
},
|
|
588
588
|
required: ['paths', 'propertyName', 'operation', 'value']
|
|
589
589
|
}
|
|
590
|
+
},
|
|
591
|
+
// Script Management Tools
|
|
592
|
+
{
|
|
593
|
+
name: 'get_script_source',
|
|
594
|
+
description: 'Get the source code of a script object (LocalScript, Script, or ModuleScript)',
|
|
595
|
+
inputSchema: {
|
|
596
|
+
type: 'object',
|
|
597
|
+
properties: {
|
|
598
|
+
instancePath: {
|
|
599
|
+
type: 'string',
|
|
600
|
+
description: 'Path to the script instance (e.g., "game.ServerScriptService.MainScript")'
|
|
601
|
+
}
|
|
602
|
+
},
|
|
603
|
+
required: ['instancePath']
|
|
604
|
+
}
|
|
605
|
+
},
|
|
606
|
+
{
|
|
607
|
+
name: 'set_script_source',
|
|
608
|
+
description: 'Safely set the source code of a script object without using loadstring (Studio only)',
|
|
609
|
+
inputSchema: {
|
|
610
|
+
type: 'object',
|
|
611
|
+
properties: {
|
|
612
|
+
instancePath: {
|
|
613
|
+
type: 'string',
|
|
614
|
+
description: 'Path to the script instance (e.g., "game.ServerScriptService.MainScript")'
|
|
615
|
+
},
|
|
616
|
+
source: {
|
|
617
|
+
type: 'string',
|
|
618
|
+
description: 'New source code for the script'
|
|
619
|
+
}
|
|
620
|
+
},
|
|
621
|
+
required: ['instancePath', 'source']
|
|
622
|
+
}
|
|
590
623
|
}
|
|
591
624
|
]
|
|
592
625
|
};
|
|
@@ -649,6 +682,11 @@ class RobloxStudioMCPServer {
|
|
|
649
682
|
// Relative Property Tools
|
|
650
683
|
case 'set_relative_property':
|
|
651
684
|
return await this.tools.setRelativeProperty(args?.paths, args?.propertyName, args?.operation, args?.value, args?.component);
|
|
685
|
+
// Script Management Tools
|
|
686
|
+
case 'get_script_source':
|
|
687
|
+
return await this.tools.getScriptSource(args?.instancePath);
|
|
688
|
+
case 'set_script_source':
|
|
689
|
+
return await this.tools.setScriptSource(args?.instancePath, args?.source);
|
|
652
690
|
default:
|
|
653
691
|
throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${name}`);
|
|
654
692
|
}
|
|
@@ -672,13 +710,27 @@ class RobloxStudioMCPServer {
|
|
|
672
710
|
const transport = new StdioServerTransport();
|
|
673
711
|
await this.server.connect(transport);
|
|
674
712
|
console.error('Roblox Studio MCP server running on stdio');
|
|
675
|
-
//
|
|
713
|
+
// Mark MCP server as active
|
|
714
|
+
httpServer.setMCPServerActive(true);
|
|
715
|
+
console.error('MCP server marked as active');
|
|
716
|
+
// Monitor plugin and MCP server connection status
|
|
676
717
|
console.error('Waiting for Studio plugin to connect...');
|
|
677
718
|
setInterval(() => {
|
|
678
|
-
|
|
679
|
-
|
|
719
|
+
const pluginConnected = httpServer.isPluginConnected();
|
|
720
|
+
const mcpActive = httpServer.isMCPServerActive();
|
|
721
|
+
if (pluginConnected && mcpActive) {
|
|
722
|
+
// Both connected - no need to spam logs
|
|
723
|
+
}
|
|
724
|
+
else if (pluginConnected && !mcpActive) {
|
|
725
|
+
console.error('Studio plugin connected, but MCP server inactive');
|
|
726
|
+
}
|
|
727
|
+
else if (!pluginConnected && mcpActive) {
|
|
728
|
+
console.error('MCP server active, waiting for Studio plugin...');
|
|
729
|
+
}
|
|
730
|
+
else {
|
|
731
|
+
console.error('Waiting for connections...');
|
|
680
732
|
}
|
|
681
|
-
},
|
|
733
|
+
}, 5000); // Reduced frequency to avoid spam
|
|
682
734
|
// Periodic cleanup of old requests
|
|
683
735
|
setInterval(() => {
|
|
684
736
|
this.bridge.cleanupOldRequests();
|