Roblox Studio MCP Server
Enables programmatic manipulation of Roblox instances and objects, including bulk property editing, object creation, and management of attributes and tags.
Provides deep integration with Roblox Studio to explore project hierarchies, search for files, and directly edit or refactor script source code.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Roblox Studio MCP Server List the children of Workspace and find the script named 'GameManager'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Roblox Studio MCP Server (Enhanced Fork)
Fork of boshyxd/robloxstudio-mcp — the original MCP server for Roblox Studio created by @boshyxd.
This fork (
v2.0.0) adds significant improvements: long polling instead of 500ms interval polling, 16 new tools, Vector3 property fix, enhanced activity logger with copy/export, and a battle-tested plugin for complex Roblox projects.
MCP server for AI-powered Roblox Studio integration. 37+ specialized tools for exploring projects, editing scripts, manipulating attributes/tags, and performing bulk operations.
What's new in this fork
Feature | Original | This Fork |
Polling | 500ms interval polling | Long polling (instant response) |
Tools | 37 tools | 37+ tools + 16 new ones |
Vector3 properties | Broken on mass operations | Fixed ( |
Activity logger | None | Full UI logger with copy/export |
Plugin UI | Basic status | Enhanced status + activity panel |
Related MCP server: robloxstudio-mcp
Quick Start
For Claude Code users:
claude mcp add robloxstudio -- npx -y robloxstudio-mcpFor other MCP clients (Claude Desktop, etc.):
{
"mcpServers": {
"robloxstudio-mcp": {
"command": "npx",
"args": ["-y", "robloxstudio-mcp"],
"description": "Advanced Roblox Studio integration for AI assistants"
}
}
}Install NPM Package
npm i robloxstudio-mcp{
"mcpServers": {
"robloxstudio-mcp": {
"command": "cmd",
"args": ["/c", "npx", "-y", "robloxstudio-mcp@latest"]
}
}
}Studio Plugin Setup (Required)
The MCP server requires a companion Roblox Studio plugin:
Download MCPPlugin.rbxmx
Save to your
%LOCALAPPDATA%/Roblox/Pluginsfolder
After installation:
Enable "Allow HTTP Requests" in Game Settings > Security
Click the "MCP Server" button in the Plugins toolbar
Status should show "Connected" when working
Architecture Overview
Dual-component system bridging Roblox Studio with AI assistants:
%%{init: {'theme':'dark', 'themeVariables': {'primaryColor':'#2d3748', 'primaryTextColor':'#ffffff', 'primaryBorderColor':'#4a5568', 'lineColor':'#718096', 'sectionBkgColor':'#1a202c', 'altSectionBkgColor':'#2d3748', 'gridColor':'#4a5568', 'secondaryColor':'#2b6cb0', 'tertiaryColor':'#319795'}}}%%
graph TB
subgraph AI_ENV ["AI Environment"]
AI["AI Assistant<br/>Claude Code/Desktop"]
MCP["MCP Server<br/>Node.js + TypeScript"]
end
subgraph COMM_LAYER ["Communication Layer"]
HTTP["HTTP Bridge<br/>localhost:3002"]
QUEUE["Request Queue<br/>UUID tracking"]
end
subgraph STUDIO_ENV ["Roblox Studio Environment"]
PLUGIN["Studio Plugin<br/>Luau Script"]
STUDIO["Roblox Studio<br/>APIs & Data"]
end
subgraph TOOLS ["37+ AI Tools"]
FILE["File System<br/>Trees, Search"]
CONTEXT["Studio Context<br/>Services, Objects"]
PROPS["Properties<br/>Get, Set, Mass Ops"]
CREATE["Object Creation<br/>Single, Mass, Properties"]
PROJECT["Project Analysis<br/>Smart Structure"]
end
AI -->|stdio| MCP
MCP -->|HTTP POST| HTTP
HTTP -->|Queue Request| QUEUE
PLUGIN -->|Poll every 500ms| HTTP
HTTP -->|Pending Work| PLUGIN
PLUGIN -->|Execute APIs| STUDIO
STUDIO -->|Return Data| PLUGIN
PLUGIN -->|HTTP Response| HTTP
HTTP -->|Resolve Promise| MCP
MCP -->|Tool Result| AI
MCP -.->|Exposes| FILE
MCP -.->|Exposes| CONTEXT
MCP -.->|Exposes| PROPS
MCP -.->|Exposes| CREATE
MCP -.->|Exposes| PROJECT
classDef aiStyle fill:#1e40af,stroke:#3b82f6,stroke-width:2px,color:#ffffff
classDef mcpStyle fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:#ffffff
classDef httpStyle fill:#ea580c,stroke:#f97316,stroke-width:2px,color:#ffffff
classDef pluginStyle fill:#059669,stroke:#10b981,stroke-width:2px,color:#ffffff
classDef studioStyle fill:#dc2626,stroke:#ef4444,stroke-width:2px,color:#ffffff
classDef toolStyle fill:#0891b2,stroke:#06b6d4,stroke-width:2px,color:#ffffff
class AI aiStyle
class MCP mcpStyle
class HTTP,QUEUE httpStyle
class PLUGIN pluginStyle
class STUDIO studioStyle
class FILE,CONTEXT,PROPS,CREATE,PROJECT toolStyleKey Components:
MCP Server (Node.js/TypeScript) - Exposes 37+ tools via stdio and HTTP
HTTP Bridge - Request/response queue on localhost:3002
Studio Plugin (Luau) - Polls server and executes API calls
Full HTTP API - All tools available via both stdio MCP and HTTP endpoints
37+ AI Tools
File System Tools
get_file_tree- Complete project hierarchy with scripts, models, folderssearch_files- Find files by name, type, or content patterns
Studio Context Tools
get_place_info- Place ID, name, game settings, workspace infoget_services- All Roblox services and their child countssearch_objects- Find instances by name, class, or propertiesget_selection- Get currently selected objects in Studio
Instance & Property Tools
get_instance_properties- Complete property dump for any objectget_instance_children- Child objects with metadatasearch_by_property- Find objects with specific property valuesget_class_info- Available properties/methods for Roblox classes
Property Modification Tools
set_property- Set a property on any Roblox instancemass_set_property- Set the same property on multiple instancesmass_get_property- Get the same property from multiple instancesset_calculated_property- Set properties using mathematical formulasset_relative_property- Modify properties relative to current values
Object Creation & Manipulation Tools
create_object- Create a new Roblox object instancecreate_object_with_properties- Create objects with initial propertiesmass_create_objects- Create multiple objects at oncemass_create_objects_with_properties- Create multiple objects with propertiesdelete_object- Delete a Roblox object instancesmart_duplicate- Duplicate with naming patterns, position offsets, property variationsmass_duplicate- Perform multiple smart duplications at once
Script Editing Tools (v1.9.0)
get_script_source- Read script source code with line numbersset_script_source- Replace entire script sourceedit_script_lines- Replace specific lines without rewriting entire scriptinsert_script_lines- Insert new lines at specific positionsdelete_script_lines- Delete specific lines from scripts
Attribute Tools (v1.9.0)
get_attribute- Get a single attribute valueset_attribute- Set an attribute (supports Vector3, Color3, etc.)get_attributes- Get all attributes on an instancedelete_attribute- Remove an attribute
Tag Tools (CollectionService) (v1.9.0)
get_tags- Get all tags on an instanceadd_tag- Add a tag to an instanceremove_tag- Remove a tag from an instanceget_tagged- Find all instances with a specific tag
Project Analysis Tools
get_project_structure- Smart hierarchy with depth control (recommended: 5-10)
AI-Optimized Features
Mass Operations (v1.3.0)
Bulk property editing
Mass object creation
Batch property reading
Atomic undo/redo operations
// Example: Set multiple parts to red
mass_set_property(["game.Workspace.Part1", "game.Workspace.Part2"], "BrickColor", "Really red")Smart Project Structure
Service overview with child counts
Path-based exploration:
get_project_structure("game.ServerStorage", maxDepth=5)Script-only filtering for code analysis
Intelligent grouping for large folders
Recommended maxDepth=5-10
Rich Metadata
Script status tracking
GUI intelligence
Performance optimized
Development & Testing
Commands
npm run dev # Development server with hot reload
npm run build # Production build
npm start # Run built server
npm run lint # ESLint code quality
npm run typecheck # TypeScript validation
npm test # Run Jest unit tests
npm run test:e2e # Run Lune E2E tests (requires server running)
npm run test:all # Run all testsTesting
Jest Unit Tests - 32 tests covering bridge service, HTTP server, and integration
Lune E2E Tests - 30 tests verifying all HTTP endpoints work correctly
Tests ensure full feature parity between stdio MCP and HTTP modes
Plugin Development
Live reload
Robust error handling
Debug logging
Visual status indicators
Communication Protocol
%%{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'}}}%%
sequenceDiagram
participant AI as AI Assistant
participant MCP as MCP Server
participant HTTP as HTTP Bridge
participant PLUGIN as Studio Plugin
participant STUDIO as Roblox Studio
Note over AI,STUDIO: Tool Request Flow
AI->>+MCP: Call tool (e.g., get_file_tree)
MCP->>+HTTP: Queue request with UUID
HTTP->>HTTP: Store in pending requests map
HTTP-->>-MCP: Request queued
Note over PLUGIN: Polling every 500ms
PLUGIN->>+HTTP: GET /poll
HTTP->>-PLUGIN: Return pending request + UUID
PLUGIN->>+STUDIO: Execute Studio APIs
Note over STUDIO: game.ServerStorage<br/>Selection:Get()<br/>Instance properties
STUDIO->>-PLUGIN: Return Studio data
PLUGIN->>+HTTP: POST /response with UUID + data
HTTP->>-MCP: Resolve promise with data
MCP->>-AI: Return tool result
Note over AI,STUDIO: Error Handling
alt Request Timeout (30s)
HTTP->>MCP: Reject promise with timeout
MCP->>AI: Return error message
end
alt Plugin Disconnected
PLUGIN->>HTTP: Connection lost
HTTP->>HTTP: Exponential backoff retry
Note over PLUGIN: Status: "Waiting for server..."
endFeatures:
30-second timeouts with exponential backoff
Automatic retries
Response limiting
Request deduplication
Example Usage
// Get service overview
get_project_structure()
// Explore weapons folder
get_project_structure("game.ServerStorage.Weapons", maxDepth=2)
// Find all Sound objects
search_by_property("ClassName", "Sound")
// Check script dependencies
get_dependencies("game.ServerScriptService.MainScript")
// Find broken references
validate_references()
// Get UI component details
get_instance_properties("game.StarterGui.MainMenu.SettingsFrame")Configuration
Environment Variables:
MCP_SERVER_PORT- MCP server port (default: stdio)HTTP_SERVER_PORT- HTTP bridge port (default: 3002)PLUGIN_POLL_INTERVAL- Plugin poll frequency (default: 500ms)REQUEST_TIMEOUT- Request timeout (default: 30000ms)
Studio Settings:
Allow HTTP Requests (Game Settings > Security)
HttpService.HttpEnabled = true
Plugin activated via toolbar button
License
MIT License - Feel free to use in commercial and personal projects!
Available Tools
52 toolsadd_tagB
Add a CollectionService tag to a Roblox instance
Inputs: tagName (required), instancePath (required).
batch_operationsB
Execute multiple operations in a single round-trip. Each operation has a type (setProperty, createObject, deleteObject, reparent, clone) and corresponding data.
Inputs: operations (required).
clear_terrainA
Clear (remove) terrain in a region
Inputs: size (required), center (required).
clone_objectB
Clone a Roblox instance (with all children) to a parent
Inputs: instancePath (required), newName, newParent.
create_objectA
Create a new Roblox object instance (basic, without properties)
Inputs: parent (required), className (required), name.
create_object_with_propertiesB
Create a new Roblox object instance with initial properties
Inputs: parent (required), className (required), name, properties.
create_weldB
Create a WeldConstraint between two BaseParts
Inputs: part0Path (required), part1Path (required).
delete_attributeA
Delete an attribute from a Roblox instance
Inputs: instancePath (required), attributeName (required).
delete_objectB
Delete a Roblox object instance
Inputs: instancePath (required).
delete_script_linesA
Delete specific lines from a Roblox script. IMPORTANT: Use the "numberedSource" field from get_script_source to identify the correct line numbers.
Inputs: endLine (required), startLine (required), instancePath (required).
edit_script_linesA
Replace specific lines in a Roblox script without rewriting the entire source. IMPORTANT: Use the "numberedSource" field from get_script_source to identify the correct line numbers. Lines are 1-indexed and ranges are inclusive.
Inputs: endLine (required), startLine (required), newContent (required), instancePath (required).
execute_luaA
Execute arbitrary Luau code in Roblox Studio and return the result. The code runs in the plugin context with full API access. Use "return " to get results back.
Inputs: code (required), args.
fill_terrainA
Fill a region of terrain with a material using a shape (Block, Ball, or Cylinder)
Inputs: size (required), shape (required), center (required), material (required).
get_attributeA
Get a single attribute value from a Roblox instance
Inputs: instancePath (required), attributeName (required).
get_attributesB
Get all attributes on a Roblox instance
Inputs: instancePath (required).
get_bounding_boxA
Get the axis-aligned bounding box of a Model or BasePart
Inputs: instancePath (required).
get_class_infoB
Get available properties/methods for Roblox classes
Inputs: className (required).
get_descendantsA
Get all descendants of an instance with optional class/name filters and depth limit
Inputs: instancePath (required), maxDepth, nameFilter, classFilter.
get_file_treeA
Get the Roblox instance hierarchy tree from Roblox Studio. Returns game instances (Parts, Scripts, Models, Folders, etc.) as a tree structure. NOTE: This operates on Roblox Studio instances, NOT local filesystem files.
Inputs: path.
get_instance_childrenB
Get child instances and their class types from a Roblox parent instance
Inputs: instancePath (required).
get_instance_propertiesA
Get all properties of a specific Roblox instance in Studio
Inputs: instancePath (required).
get_place_infoA
Get place ID, name, and game settings
Inputs: no named parameters.
get_project_structureB
Get complete game hierarchy. IMPORTANT: Use maxDepth parameter (default: 3) to explore deeper levels of the hierarchy. Set higher values like 5-10 for comprehensive exploration
Inputs: path, maxDepth, scriptsOnly.
get_script_sourceA
Get the source code of a Roblox script (LocalScript, Script, or ModuleScript). Returns both "source" (raw code) and "numberedSource" (with line numbers prefixed like "1: code"). Use numberedSource to accurately identify line numbers for editing. For large scripts (>1500 lines), use startLine/endLine to read specific sections.
Inputs: instancePath (required), endLine, startLine.
get_selectionB
Get all currently selected objects
Inputs: no named parameters.
get_servicesC
Get available Roblox services and their children
Inputs: serviceName.
get_taggedB
Get all instances with a specific tag
Inputs: tagName (required).
get_tagsA
Get all CollectionService tags on a Roblox instance
Inputs: instancePath (required).
group_objectsB
Group multiple instances into a Model or Folder
Inputs: paths (required), groupName, groupType.
insert_script_linesA
Insert new lines into a Roblox script at a specific position. IMPORTANT: Use the "numberedSource" field from get_script_source to identify the correct line numbers.
Inputs: newContent (required), instancePath (required), afterLine.
mass_create_objectsA
Create multiple objects at once (basic, without properties)
Inputs: objects (required).
mass_create_objects_with_propertiesB
Create multiple objects at once with initial properties
Inputs: objects (required).
mass_duplicateC
Perform multiple smart duplications at once
Inputs: duplications (required).
mass_get_propertyA
Get the same property from multiple instances at once
Inputs: paths (required), propertyName (required).
mass_reparentA
Move multiple instances to a new parent at once
Inputs: paths (required), newParent (required).
mass_set_propertyB
Set the same property on multiple instances at once
Inputs: paths (required), propertyName (required), propertyValue (required).
raycastC
Cast a ray in workspace and return hit information
Inputs: origin (required), direction (required), filterType, filterPaths.
redoA
Redo the last undone action in Roblox Studio (ChangeHistoryService:Redo)
Inputs: no named parameters.
remove_tagA
Remove a CollectionService tag from a Roblox instance
Inputs: tagName (required), instancePath (required).
reparent_objectB
Move a Roblox instance to a new parent
Inputs: newParent (required), instancePath (required).
search_by_propertyC
Find objects with specific property values
Inputs: propertyName (required), propertyValue (required).
search_filesA
Search for Roblox instances by name, class type, or script content. NOTE: This searches Roblox Studio instances, NOT local filesystem files.
Inputs: query (required), searchType.
search_objectsB
Find instances by name, class, or properties
Inputs: query (required), searchType, propertyName.
set_attributeA
Set an attribute value on a Roblox instance. Supports string, number, boolean, Vector3, Color3, UDim2, and BrickColor.
Inputs: instancePath (required), attributeName (required), attributeValue (required), valueType.
set_calculated_propertyC
Set properties using mathematical formulas and variables
Inputs: paths (required), formula (required), propertyName (required), variables.
set_propertyC
Set a property on any Roblox instance
Inputs: instancePath (required), propertyName (required), propertyValue (required).
set_relative_propertyB
Modify properties relative to their current values
Inputs: paths (required), value (required), operation (required), propertyName (required), +1 more.
set_script_sourceA
Replace the entire source code of a Roblox script. Uses ScriptEditorService:UpdateSourceAsync (works with open editors). For partial edits, prefer edit_script_lines, insert_script_lines, or delete_script_lines.
Inputs: source (required), instancePath (required).
set_selectionB
Set the current selection in Roblox Studio to specific instances
Inputs: paths (required).
smart_duplicateC
Smart duplication with automatic naming, positioning, and property variations
Inputs: count (required), instancePath (required), options.
undoA
Undo the last action in Roblox Studio (ChangeHistoryService:Undo)
Inputs: no named parameters.
ungroup_objectsA
Dissolve a group (Model/Folder), moving all children to its parent
Inputs: instancePath (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 52 tools
Many tools have overlapping purposes: get_file_tree, get_project_structure, get_instance_children, and get_descendants all return hierarchy information; search_files, search_objects, and search_by_property all find instances. get_attributes/get_attribute and get_file_tree/get_project_structure are easy to confuse, making selection error-prone.
Naming is mostly consistent with snaking_case verb-noun pairs like get_instance_properties, set_property, create_object, delete_object. Minor deviations exist such as smart_duplicate, mass_get_property, and execute_lua, but the pattern is largely predictable.
52 tools is excessive for a single MCP server. While Roblox Studio has broad functionality, many tools are near-duplicates (e.g., create_object vs create_object_with_properties vs mass_create_objects vs mass_create_objects_with_properties; get_attributes vs get_attribute).
The tool set is extensive, covering object lifecycle, hierarchy exploration, scripting, attributes, tags, selection, terrain, and physics operations. Missing pieces like file management or publish workflow are minor given the Studio automation focus.
Maintenance
Related MCP Connectors
LLM chat, text tools, image generation, editing, batch image jobs, and asynchronous video generation
Carbon Voice MCP serves as a bridge that connects AI assistants like ChatGPT, Claude, and Cursor to a user's Carbon Voice account, turning voice messages and conversations into a private, on-demand knowledge base. It provides 28 specialized tools for comprehensive voice messaging management, including creating and sending messages, accessing conversation history with instant transcription, running AI actions (summarization, TLDR generation, meeting notes), and managing workspace collaboration through folders, contacts, and team communications.
AI Agent Utility Layer for agent safety, web monitoring, crypto research and tool discovery.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI coding tools to control Roblox Studio for workspace exploration, instance manipulation, and script management. It provides tools for playtesting, scene rendering, and integration with the Roblox Creator Store.69MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to explore Roblox Studio game structure, read and edit scripts, and perform bulk changes locally and safely.MIT
- AlicenseNot gradedqualityDmaintenanceBridges AI assistants to Roblox Studio with 51 tools for exploring, editing, and automating game development, all locally via HTTP polling.875 npm7MIT
- AlicenseAqualityAmaintenanceEnables AI agents to inspect, create, edit, debug, and playtest projects inside the Roblox editor via 29 lean tools, with push-based SSE transport, editor-safe script edits, and batched undoable writes.351,088 npm14MIT