Skip to main content
Glama
Roblox Studio MCP Server

Roblox Studio MCP Server

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 ({"X":n,"Y":n,"Z":n} format)

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-mcp

For 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:

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 toolStyle

Key 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, folders

  • search_files - Find files by name, type, or content patterns

Studio Context Tools

  • get_place_info - Place ID, name, game settings, workspace info

  • get_services - All Roblox services and their child counts

  • search_objects - Find instances by name, class, or properties

  • get_selection - Get currently selected objects in Studio

Instance & Property Tools

  • get_instance_properties - Complete property dump for any object

  • get_instance_children - Child objects with metadata

  • search_by_property - Find objects with specific property values

  • get_class_info - Available properties/methods for Roblox classes

Property Modification Tools

  • set_property - Set a property on any Roblox instance

  • mass_set_property - Set the same property on multiple instances

  • mass_get_property - Get the same property from multiple instances

  • set_calculated_property - Set properties using mathematical formulas

  • set_relative_property - Modify properties relative to current values

Object Creation & Manipulation Tools

  • create_object - Create a new Roblox object instance

  • create_object_with_properties - Create objects with initial properties

  • mass_create_objects - Create multiple objects at once

  • mass_create_objects_with_properties - Create multiple objects with properties

  • delete_object - Delete a Roblox object instance

  • smart_duplicate - Duplicate with naming patterns, position offsets, property variations

  • mass_duplicate - Perform multiple smart duplications at once

Script Editing Tools (v1.9.0)

  • get_script_source - Read script source code with line numbers

  • set_script_source - Replace entire script source

  • edit_script_lines - Replace specific lines without rewriting entire script

  • insert_script_lines - Insert new lines at specific positions

  • delete_script_lines - Delete specific lines from scripts

Attribute Tools (v1.9.0)

  • get_attribute - Get a single attribute value

  • set_attribute - Set an attribute (supports Vector3, Color3, etc.)

  • get_attributes - Get all attributes on an instance

  • delete_attribute - Remove an attribute

Tag Tools (CollectionService) (v1.9.0)

  • get_tags - Get all tags on an instance

  • add_tag - Add a tag to an instance

  • remove_tag - Remove a tag from an instance

  • get_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 tests

Testing

  • 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..."
    end

Features:

  • 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 tools
add_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

    B3.1/5.0

    Scored across 52 tools

    Disambiguation2/5

    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 Consistency4/5

    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.

    Tool Count2/5

    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).

    Completeness4/5

    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

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      Enables 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.
      6
      9
      MIT
    • A
      license
      A
      quality
      A
      maintenance
      Enables 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.
      35
      1,088 npm
      14
      MIT