🎮 The most comprehensive MCP server for Roblox Studio - 41 tools for complete Studio control from Claude Code
🎮 Roblox Studio Ultimate MCP Server
English | 日本語
The most comprehensive MCP (Model Context Protocol) server for Roblox Studio. 41 tools for complete Studio control from Claude Code or any MCP-compatible AI assistant.
✨ Why This Exists
The default Roblox Studio MCP only provides run_code — forcing you to manipulate script sources via string operations (gsub). This leads to:
- ❌ Pattern matching failures
- ❌ Broken
end)statements - ❌ Silent rollbacks when scripts revert
- ❌ No syntax checking before writes
- ❌ Hours wasted on simple edits
This MCP solves all of that.
🚀 Features
Script Operations (The Game Changer)
| Tool | Description |
|------|-------------|
| getScript | Get full source code |
| setScript | Replace entire source (with syntax check + auto backup) |
| editScript | Edit specific line range (partial edit!) |
| insertCode | Insert code after a specific line |
| removeLines | Remove specific lines |
| replaceInScript | Find & replace text (plain text, safe) |
| getLines | Get only specific line range (lightweight) |
| getFunctionList | List all functions with line numbers |
| getScriptSummary | Overview: functions, requires, globals |
| listScripts | List all scripts in the game |
| getAllScripts | Get all script sources at once |
| searchInScripts | Search keyword across all scripts |
| getReferences | Find all usages of a variable/function |
| getModuleDependencies | List require() dependencies |
Safety Mechanisms
| Feature | Description | |---------|-------------| | 🔒 Syntax Check | Auto-validates before writing. Rejects bad code. | | 💾 Auto Backup | Saves previous version before every edit (10 generations) | | 🛑 Play Mode Guard | Blocks writes during Play mode (prevents silent rollbacks) | | 📝 UpdateSourceAsync | Uses ScriptEditorService for conflict-free writes |
Backup & Restore
| Tool | Description |
|------|-------------|
| restoreBackup | Restore from auto-saved backup |
| listBackups | List available backups |
Validation
| Tool | Description |
|------|-------------|
| checkSyntax | Check syntax without writing |
| verifyScript | Verify line count / source length |
| validateAllScripts | Batch syntax check all scripts |
Instance Operations
| Tool | Description |
|------|-------------|
| getTree | Get instance hierarchy |
| getChildren | List children (lightweight) |
| getProperty / setProperty | Get/set properties |
| createInstance | Create new instance |
| deleteInstance | Delete instance |
| cloneInstance | Clone instance |
| renameInstance | Rename instance |
| moveInstance | Move to different parent |
| findInstances | Search instances by name/class |
Other
| Tool | Description |
|------|-------------|
| runCode | Execute Luau code (with output capture) |
| batch | Execute multiple commands at once |
| getAttribute / setAttribute | Attribute operations |
| getErrors / clearErrors | Error log management |
| undo / redo | Undo/redo operations |
| getSelection | Get current selection |
| getStudioInfo | Get Studio info |
📦 Installation
1. Clone & Build
git clone https://github.com/YOUR_USERNAME/roblox-studio-ultimate-mcp.git
cd roblox-studio-ultimate-mcp
npm install
npm run build
2. Install Studio Plugin
Copy the plugin file to your Roblox Plugins folder:
Mac:
cp plugin/UltimateMCP.rbxmx ~/Documents/Roblox/Plugins/
Windows:
copy plugin\UltimateMCP.rbxmx %LOCALAPPDATA%\Roblox\Plugins\
Or generate it from source:
bash generate-plugin.sh
3. Enable HTTP in Studio
Open Roblox Studio, then in the Command Bar (View → Command Bar):
game:GetService("HttpService").HttpEnabled = true
4. Register with Claude Code
Add to your ~/.claude.json under the appropriate project:
{
"mcpServers": {
"roblox_ultimate": {
"type": "stdio",
"command": "node",
"args": ["/path/to/roblox-studio-ultimate-mcp/dist/index.js"],
"env": {}
}
}
}
5. Restart
- Restart Roblox Studio (to load the plugin)
- Restart Claude Code (to connect to the MCP)
🏗️ Architecture
Claude Code ←(stdio)→ MCP Server (Node.js) ←(HTTP)→ Studio Plugin (Luau)
Port 3002
- MCP Server (
src/index.ts): Translates MCP tool calls to HTTP commands - Studio Plugin (
plugin/RobloxMCP.lua): Polls the server, executes commands inside Studio - Communication: HTTP polling (300ms interval)
🔧 Usage with Other MCP Servers
This server is designed to work alongside the official Roblox Studio MCP:
| Use Case | Which MCP | |----------|-----------| | Script read/write | Ultimate (getScript/setScript) | | Play testing | Official (start_stop_play) | | Console output | Official (get_console_output) | | Instance manipulation | Ultimate | | Property changes | Ultimate |
📝 Real-World Impact
Before this MCP, a simple one-line fix in a 260-line script required:
run_codeto get the sourcegsubpattern matching (often fails)run_codeto write back- Pray it worked
- Repeat 3-5 times
Now: editScript(path, 103, 103, "new code") → Done. First try.
🤝 Contributing
PRs welcome! Especially for:
- New tools
- Better error handling
- Performance improvements
- Documentation
📄 License
MIT