robloxstudio-mcp 1.0.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/CLAUDE.md +63 -0
- package/README.md +104 -0
- package/dist/bridge-service.d.ts +16 -0
- package/dist/bridge-service.d.ts.map +1 -0
- package/dist/bridge-service.js +70 -0
- package/dist/bridge-service.js.map +1 -0
- package/dist/http-server.d.ts +4 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +170 -0
- package/dist/http-server.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +323 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/index.d.ts +96 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +202 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/studio-client.d.ts +7 -0
- package/dist/tools/studio-client.d.ts.map +1 -0
- package/dist/tools/studio-client.js +19 -0
- package/dist/tools/studio-client.js.map +1 -0
- package/package.json +54 -0
- package/studio-plugin/INSTALLATION.md +105 -0
- package/studio-plugin/plugin.json +10 -0
- package/studio-plugin/plugin.lua +683 -0
package/CLAUDE.md
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## Development Commands
|
|
6
|
+
|
|
7
|
+
- `npm run dev` - Start development server with hot reload using tsx
|
|
8
|
+
- `npm run build` - Build TypeScript to JavaScript in dist/
|
|
9
|
+
- `npm start` - Run the built MCP server (requires build first)
|
|
10
|
+
- `npm run lint` - Run ESLint on TypeScript source files
|
|
11
|
+
- `npm run typecheck` - Run TypeScript compiler without emitting files
|
|
12
|
+
|
|
13
|
+
## Architecture Overview
|
|
14
|
+
|
|
15
|
+
This is a dual-component system that bridges Roblox Studio with MCP (Model Context Protocol) for AI tool integration:
|
|
16
|
+
|
|
17
|
+
### Core Components
|
|
18
|
+
|
|
19
|
+
1. **MCP Server** (`src/index.ts`): Stdio-based MCP server that exposes 15 tools for Studio data access
|
|
20
|
+
2. **Bridge Service** (`src/bridge-service.ts`): Request/response queue manager using Promise-based async handling with UUID tracking
|
|
21
|
+
3. **Studio Plugin** (`studio-plugin/plugin.lua`): Luau plugin that polls the HTTP server and executes Studio API calls
|
|
22
|
+
4. **HTTP Server** (`src/http-server.ts`): Express server on port 3002 providing polling endpoints for the Studio plugin
|
|
23
|
+
|
|
24
|
+
### Communication Flow
|
|
25
|
+
|
|
26
|
+
The system uses a polling architecture because Roblox plugins cannot run HTTP servers:
|
|
27
|
+
|
|
28
|
+
1. AI tools call MCP server via stdio
|
|
29
|
+
2. MCP server queues requests in BridgeService
|
|
30
|
+
3. Studio plugin polls `/poll` endpoint every 500ms
|
|
31
|
+
4. Plugin processes requests using Studio APIs
|
|
32
|
+
5. Plugin sends responses via `/response` endpoint
|
|
33
|
+
6. BridgeService resolves promises and returns data to MCP tools
|
|
34
|
+
|
|
35
|
+
### Key Design Patterns
|
|
36
|
+
|
|
37
|
+
- **Async Bridge Pattern**: BridgeService uses Map<string, PendingRequest> to track requests with Promise resolve/reject
|
|
38
|
+
- **Polling Architecture**: Studio plugin maintains connection state and polls for work rather than receiving pushes
|
|
39
|
+
- **Tool Proxy Pattern**: Each MCP tool proxies through HTTP to Studio plugin endpoints
|
|
40
|
+
- **Timeout Management**: 30-second request timeouts with periodic cleanup
|
|
41
|
+
|
|
42
|
+
### Tool Categories
|
|
43
|
+
|
|
44
|
+
All 15 tools follow the same request/response pattern but are organized into:
|
|
45
|
+
- File System Tools (file tree, content, search, properties)
|
|
46
|
+
- Studio Context Tools (place info, services, selection, object search)
|
|
47
|
+
- Property & Instance Tools (instance data, children, property search, class info)
|
|
48
|
+
- Project Tools (structure, dependencies, reference validation)
|
|
49
|
+
|
|
50
|
+
### Studio Plugin Integration
|
|
51
|
+
|
|
52
|
+
The plugin uses proper Roblox Studio APIs:
|
|
53
|
+
- `plugin:CreateToolbar()` and `plugin:CreateDockWidgetPluginGui()` for UI
|
|
54
|
+
- `HttpService:RequestAsync()` for HTTP communication
|
|
55
|
+
- `RunService.Heartbeat` for polling timer
|
|
56
|
+
- Studio services (Selection, StudioService, etc.) for data extraction
|
|
57
|
+
|
|
58
|
+
### Build System
|
|
59
|
+
|
|
60
|
+
- TypeScript with ES modules (`"type": "module"`)
|
|
61
|
+
- ESLint with TypeScript parser
|
|
62
|
+
- Builds to `dist/` directory
|
|
63
|
+
- Uses tsx for development hot reload
|
package/README.md
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# Roblox Studio MCP Server
|
|
2
|
+
|
|
3
|
+
An MCP (Model Context Protocol) server that provides AI tools access to Roblox Studio data through a plugin-based architecture.
|
|
4
|
+
|
|
5
|
+
## Quick Installation
|
|
6
|
+
|
|
7
|
+
### For End Users (Easy Setup)
|
|
8
|
+
|
|
9
|
+
Add to your MCP configuration (like in Claude Desktop or other MCP clients):
|
|
10
|
+
|
|
11
|
+
```json
|
|
12
|
+
{
|
|
13
|
+
"mcpServers": {
|
|
14
|
+
"robloxstudio": {
|
|
15
|
+
"command": "npx",
|
|
16
|
+
"args": ["-y", "robloxstudio-mcp"],
|
|
17
|
+
"description": "Roblox Studio integration for AI assistants"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Or use with Claude Code MCP add command:
|
|
24
|
+
```bash
|
|
25
|
+
claude mcp add robloxstudio -- npx -y robloxstudio-mcp
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### For Developers
|
|
29
|
+
|
|
30
|
+
1. **Clone and install:**
|
|
31
|
+
```bash
|
|
32
|
+
git clone <repo-url>
|
|
33
|
+
cd robloxstudio-mcp
|
|
34
|
+
npm install
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
2. **Build and test:**
|
|
38
|
+
```bash
|
|
39
|
+
npm run build
|
|
40
|
+
npm start
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Studio Plugin Setup
|
|
44
|
+
|
|
45
|
+
**Required for both installation methods:**
|
|
46
|
+
|
|
47
|
+
1. **Install the Studio plugin:**
|
|
48
|
+
- See [studio-plugin/INSTALLATION.md](studio-plugin/INSTALLATION.md) for detailed instructions
|
|
49
|
+
- Enable HTTP Requests in Game Settings
|
|
50
|
+
- Activate the plugin using the toolbar button
|
|
51
|
+
|
|
52
|
+
## Architecture
|
|
53
|
+
|
|
54
|
+
- **MCP Server** (TypeScript/Node.js) - Handles AI tool calls via stdio
|
|
55
|
+
- **Studio Plugin** (Luau) - Extracts Studio data and communicates with MCP server
|
|
56
|
+
- **HTTP Bridge** - Communication layer between plugin and server (localhost:3002)
|
|
57
|
+
|
|
58
|
+
## Development
|
|
59
|
+
|
|
60
|
+
- `npm run dev` - Start development server with hot reload
|
|
61
|
+
- `npm run build` - Build TypeScript to JavaScript
|
|
62
|
+
- `npm run lint` - Run ESLint
|
|
63
|
+
- `npm run typecheck` - Run TypeScript type checking
|
|
64
|
+
|
|
65
|
+
## Available Tools
|
|
66
|
+
|
|
67
|
+
### File System Tools
|
|
68
|
+
- `get_file_tree` - Complete hierarchy with script types, models, folders
|
|
69
|
+
- `get_file_content` - Retrieve script source code
|
|
70
|
+
- `search_files` - Find files by name, type, or content patterns
|
|
71
|
+
- `get_file_properties` - Script properties, parent/child relationships
|
|
72
|
+
|
|
73
|
+
### Studio Context Tools
|
|
74
|
+
- `get_place_info` - Place ID, name, game settings
|
|
75
|
+
- `get_services` - Available Roblox services and their children
|
|
76
|
+
- `get_selection` - Currently selected objects in Studio
|
|
77
|
+
- `search_objects` - Find instances by name, class, properties
|
|
78
|
+
|
|
79
|
+
### Property & Instance Tools
|
|
80
|
+
- `get_instance_properties` - All properties of a specific instance
|
|
81
|
+
- `get_instance_children` - Child objects and their types
|
|
82
|
+
- `search_by_property` - Find objects with specific property values
|
|
83
|
+
- `get_class_info` - Available properties/methods for Roblox classes
|
|
84
|
+
|
|
85
|
+
### Project Tools
|
|
86
|
+
- `get_project_structure` - Complete game hierarchy
|
|
87
|
+
- `get_dependencies` - Module dependencies and relationships
|
|
88
|
+
- `validate_references` - Check for broken script references
|
|
89
|
+
|
|
90
|
+
## Communication Protocol
|
|
91
|
+
|
|
92
|
+
The MCP server exposes tools via stdio for AI integration. The Studio plugin polls the server on port 3002 using HTTP requests. When an AI tool is called:
|
|
93
|
+
|
|
94
|
+
1. MCP server queues the request
|
|
95
|
+
2. Studio plugin polls and receives the request
|
|
96
|
+
3. Plugin extracts data using Studio APIs
|
|
97
|
+
4. Plugin sends response back to server
|
|
98
|
+
5. Server returns result to AI tool
|
|
99
|
+
|
|
100
|
+
## Configuration
|
|
101
|
+
|
|
102
|
+
The server can be configured through environment variables:
|
|
103
|
+
- `MCP_SERVER_PORT` - Server port (default: 3001)
|
|
104
|
+
- `STUDIO_PLUGIN_URL` - Studio plugin URL (default: http://localhost:3002)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare class BridgeService {
|
|
2
|
+
private pendingRequests;
|
|
3
|
+
private requestTimeout;
|
|
4
|
+
sendRequest(endpoint: string, data: any): Promise<any>;
|
|
5
|
+
getPendingRequest(): {
|
|
6
|
+
requestId: string;
|
|
7
|
+
request: {
|
|
8
|
+
endpoint: string;
|
|
9
|
+
data: any;
|
|
10
|
+
};
|
|
11
|
+
} | null;
|
|
12
|
+
resolveRequest(requestId: string, response: any): void;
|
|
13
|
+
rejectRequest(requestId: string, error: any): void;
|
|
14
|
+
cleanupOldRequests(): void;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=bridge-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge-service.d.ts","sourceRoot":"","sources":["../src/bridge-service.ts"],"names":[],"mappings":"AAWA,qBAAa,aAAa;IACxB,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,cAAc,CAAS;IAEzB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAyB5D,iBAAiB,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,GAAG,CAAA;SAAE,CAAA;KAAE,GAAG,IAAI;IAuB3F,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG;IAQ/C,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAS3C,kBAAkB;CASnB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
2
|
+
export class BridgeService {
|
|
3
|
+
pendingRequests = new Map();
|
|
4
|
+
requestTimeout = 30000; // 30 seconds timeout
|
|
5
|
+
async sendRequest(endpoint, data) {
|
|
6
|
+
const requestId = uuidv4();
|
|
7
|
+
return new Promise((resolve, reject) => {
|
|
8
|
+
const request = {
|
|
9
|
+
id: requestId,
|
|
10
|
+
endpoint,
|
|
11
|
+
data,
|
|
12
|
+
timestamp: Date.now(),
|
|
13
|
+
resolve,
|
|
14
|
+
reject
|
|
15
|
+
};
|
|
16
|
+
this.pendingRequests.set(requestId, request);
|
|
17
|
+
// Set timeout
|
|
18
|
+
setTimeout(() => {
|
|
19
|
+
if (this.pendingRequests.has(requestId)) {
|
|
20
|
+
this.pendingRequests.delete(requestId);
|
|
21
|
+
reject(new Error('Request timeout'));
|
|
22
|
+
}
|
|
23
|
+
}, this.requestTimeout);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
getPendingRequest() {
|
|
27
|
+
// Get oldest pending request
|
|
28
|
+
let oldestRequest = null;
|
|
29
|
+
for (const request of this.pendingRequests.values()) {
|
|
30
|
+
if (!oldestRequest || request.timestamp < oldestRequest.timestamp) {
|
|
31
|
+
oldestRequest = request;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (oldestRequest) {
|
|
35
|
+
return {
|
|
36
|
+
requestId: oldestRequest.id,
|
|
37
|
+
request: {
|
|
38
|
+
endpoint: oldestRequest.endpoint,
|
|
39
|
+
data: oldestRequest.data
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
resolveRequest(requestId, response) {
|
|
46
|
+
const request = this.pendingRequests.get(requestId);
|
|
47
|
+
if (request) {
|
|
48
|
+
this.pendingRequests.delete(requestId);
|
|
49
|
+
request.resolve(response);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
rejectRequest(requestId, error) {
|
|
53
|
+
const request = this.pendingRequests.get(requestId);
|
|
54
|
+
if (request) {
|
|
55
|
+
this.pendingRequests.delete(requestId);
|
|
56
|
+
request.reject(error);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Clean up old requests
|
|
60
|
+
cleanupOldRequests() {
|
|
61
|
+
const now = Date.now();
|
|
62
|
+
for (const [id, request] of this.pendingRequests.entries()) {
|
|
63
|
+
if (now - request.timestamp > this.requestTimeout) {
|
|
64
|
+
this.pendingRequests.delete(id);
|
|
65
|
+
request.reject(new Error('Request timeout'));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=bridge-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge-service.js","sourceRoot":"","sources":["../src/bridge-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { RobloxStudioTools } from './tools/index.js';
|
|
2
|
+
import { BridgeService } from './bridge-service.js';
|
|
3
|
+
export declare function createHttpServer(tools: RobloxStudioTools, bridge: BridgeService): import("express-serve-static-core").Express;
|
|
4
|
+
//# sourceMappingURL=http-server.d.ts.map
|
|
@@ -0,0 +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,+CA2K/E"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import express from 'express';
|
|
2
|
+
import cors from 'cors';
|
|
3
|
+
export function createHttpServer(tools, bridge) {
|
|
4
|
+
const app = express();
|
|
5
|
+
app.use(cors());
|
|
6
|
+
app.use(express.json());
|
|
7
|
+
// Health check endpoint
|
|
8
|
+
app.get('/health', (req, res) => {
|
|
9
|
+
res.json({ status: 'ok', service: 'robloxstudio-mcp' });
|
|
10
|
+
});
|
|
11
|
+
// Polling endpoint for Studio plugin
|
|
12
|
+
app.get('/poll', (req, res) => {
|
|
13
|
+
const pendingRequest = bridge.getPendingRequest();
|
|
14
|
+
if (pendingRequest) {
|
|
15
|
+
res.json({ request: pendingRequest.request, requestId: pendingRequest.requestId });
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
res.json({ request: null });
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
// Response endpoint for Studio plugin
|
|
22
|
+
app.post('/response', (req, res) => {
|
|
23
|
+
const { requestId, response, error } = req.body;
|
|
24
|
+
if (error) {
|
|
25
|
+
bridge.rejectRequest(requestId, error);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
bridge.resolveRequest(requestId, response);
|
|
29
|
+
}
|
|
30
|
+
res.json({ success: true });
|
|
31
|
+
});
|
|
32
|
+
// MCP tool proxy endpoints - these will be called by AI tools
|
|
33
|
+
app.post('/mcp/get_file_tree', async (req, res) => {
|
|
34
|
+
try {
|
|
35
|
+
const result = await tools.getFileTree(req.body.path);
|
|
36
|
+
res.json(result);
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
app.post('/mcp/get_file_content', async (req, res) => {
|
|
43
|
+
try {
|
|
44
|
+
const result = await tools.getFileContent(req.body.path);
|
|
45
|
+
res.json(result);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
app.post('/mcp/search_files', async (req, res) => {
|
|
52
|
+
try {
|
|
53
|
+
const result = await tools.searchFiles(req.body.query, req.body.searchType);
|
|
54
|
+
res.json(result);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
app.post('/mcp/get_file_properties', async (req, res) => {
|
|
61
|
+
try {
|
|
62
|
+
const result = await tools.getFileProperties(req.body.path);
|
|
63
|
+
res.json(result);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
app.post('/mcp/get_place_info', async (req, res) => {
|
|
70
|
+
try {
|
|
71
|
+
const result = await tools.getPlaceInfo();
|
|
72
|
+
res.json(result);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
app.post('/mcp/get_services', async (req, res) => {
|
|
79
|
+
try {
|
|
80
|
+
const result = await tools.getServices(req.body.serviceName);
|
|
81
|
+
res.json(result);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
app.post('/mcp/get_selection', async (req, res) => {
|
|
88
|
+
try {
|
|
89
|
+
const result = await tools.getSelection();
|
|
90
|
+
res.json(result);
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
app.post('/mcp/search_objects', async (req, res) => {
|
|
97
|
+
try {
|
|
98
|
+
const result = await tools.searchObjects(req.body.query, req.body.searchType, req.body.propertyName);
|
|
99
|
+
res.json(result);
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
app.post('/mcp/get_instance_properties', async (req, res) => {
|
|
106
|
+
try {
|
|
107
|
+
const result = await tools.getInstanceProperties(req.body.instancePath);
|
|
108
|
+
res.json(result);
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
app.post('/mcp/get_instance_children', async (req, res) => {
|
|
115
|
+
try {
|
|
116
|
+
const result = await tools.getInstanceChildren(req.body.instancePath);
|
|
117
|
+
res.json(result);
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
app.post('/mcp/search_by_property', async (req, res) => {
|
|
124
|
+
try {
|
|
125
|
+
const result = await tools.searchByProperty(req.body.propertyName, req.body.propertyValue);
|
|
126
|
+
res.json(result);
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
app.post('/mcp/get_class_info', async (req, res) => {
|
|
133
|
+
try {
|
|
134
|
+
const result = await tools.getClassInfo(req.body.className);
|
|
135
|
+
res.json(result);
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
app.post('/mcp/get_project_structure', async (req, res) => {
|
|
142
|
+
try {
|
|
143
|
+
const result = await tools.getProjectStructure();
|
|
144
|
+
res.json(result);
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
app.post('/mcp/get_dependencies', async (req, res) => {
|
|
151
|
+
try {
|
|
152
|
+
const result = await tools.getDependencies(req.body.modulePath);
|
|
153
|
+
res.json(result);
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
app.post('/mcp/validate_references', async (req, res) => {
|
|
160
|
+
try {
|
|
161
|
+
const result = await tools.validateReferences();
|
|
162
|
+
res.json(result);
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
res.status(500).json({ error: error instanceof Error ? error.message : 'Unknown error' });
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
return app;
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=http-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-server.js","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Roblox Studio MCP Server
|
|
4
|
+
*
|
|
5
|
+
* This server provides Model Context Protocol (MCP) tools for interacting with Roblox Studio.
|
|
6
|
+
* It allows AI assistants to access Studio data, scripts, and objects through a bridge plugin.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* npx robloxstudio-mcp
|
|
10
|
+
*
|
|
11
|
+
* Or add to your MCP configuration:
|
|
12
|
+
* "robloxstudio": {
|
|
13
|
+
* "command": "npx",
|
|
14
|
+
* "args": ["-y", "robloxstudio-mcp"]
|
|
15
|
+
* }
|
|
16
|
+
*/
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;GAcG"}
|