servers / robloxstudio-mcp-2
robloxstudio-mcp
communitystdiolocaldestructive capablehealthy
MCP server for Roblox Studio runtime debugging, playtest control, screenshots/input, multiplayer testing, and per-peer server/client eval from AI agents.
01Tools · 81
How to read this: tool names here are observed from a live tools/list handshake. The Risk label is a heuristic inferred from the tool name (write/destructive verbs), not from executing the tool — a conservative guess, not a verified capability. We never escalate risk from a description. Found one that's wrong? Tell us — we fix on report.
| Tool | Risk | Side effects | Approval |
|---|---|---|---|
| set_script_source Use only when replacing a script's entire source. | write | true | unknown |
| get_tagged Get all instances with a specific tag | read | false | unknown |
| get_build Get a build from the library by ID. Returns metadata, palette, and generator code (if the build was created with generate_build). IMPORTANT: When the user asks to modify an existing build, ALWAYS call get_build first to retrieve the original code, then make targeted edits to only the relevant lines, and call generate_build with the modified code. Never rewrite the entire code from scratch - only change what the user asked to change. | read | false | unknown |
| undo Undo the last change in Roblox Studio. Uses ChangeHistoryService to reverse the most recent operation. | unknown | unknown | unknown |
| get_connected_instances Use to discover connected places and the roles available in each. | read | false | unknown |
| get_place_info Use when you need the current place's identity or settings. | read | false | unknown |
| get_class_info Get properties/methods for a class | read | false | unknown |
| get_project_structure Use to inspect a DataModel subtree and its hierarchy. | read | false | unknown |
| get_instance_children Get children and their class types | read | false | unknown |
| set_property Set a property on an instance | write | true | unknown |
| delete_object Delete an instance | destructive | true | true |
| insert_script_lines Use to add source after a known line in one script. | write | true | unknown |
| delete_attribute Delete an attribute | destructive | true | true |
| get_selection Use when the current Studio selection should define the objects to work on. | read | false | unknown |
| get_attributes Use to inspect every attribute on one instance. | read | false | unknown |
| add_tag Add a tag | write | true | unknown |
| remove_tag Remove a tag | destructive | true | true |
| redo Redo the last undone change in Roblox Studio. Uses ChangeHistoryService to reapply the most recently undone operation. | unknown | unknown | unknown |
| search_materials Search for MaterialVariant instances in MaterialService by name. Use this to find custom materials before using them in generate_build or create_build palettes. Returns material names and their base material types. | read | false | unknown |
| get_asset_details Use to inspect full catalog metadata for one shortlisted Creator Store asset. | read | false | unknown |
| clone_object Clone an instance to a new parent location. Creates a deep copy of the instance and all its descendants. | unknown | unknown | unknown |
| compare_instances Diff two instances by comparing their properties. Useful for debugging why a duplicate behaves differently. | unknown | unknown | unknown |
| get_script_source Use to read all or part of a script's source. | read | false | unknown |
| get_simulation_state Use to inspect network and device simulator state before or after simulation tests. | read | false | unknown |
| search_by_property Find objects with specific property values | read | false | unknown |
| get_asset_thumbnail Use when an asset thumbnail would help with visual review. | read | false | unknown |
| get_descendants Get all descendants of an instance recursively with depth info. More efficient than repeated get_instance_children calls. | read | false | unknown |
| create_object Create a new instance. Optionally set properties on creation. | write | true | unknown |
| mass_duplicate Batch smart_duplicate operations | unknown | unknown | unknown |
| mass_set_property Set a property on multiple instances | write | true | unknown |
| get_tags Get all tags on an instance | read | false | unknown |
| mass_get_property Get a property from multiple instances | read | false | unknown |
| execute_luau Use for custom edit work or plugin-context access to a live server or client. | write | true | unknown |
| eval_client_runtime Use when Luau must run in a live client LocalScript VM and share the game's require cache. | unknown | unknown | unknown |
| get_runtime_logs Use to read recent Studio output from edit, server, or client peers. | read | false | unknown |
| multiplayer_playtest Use to run or inspect a StudioTestService playtest with multiple clients. | read | false | unknown |
| grep_scripts Use to locate text or Lua pattern matches across script sources. | unknown | unknown | unknown |
| capture_device_matrix Use to compare viewport screenshots across up to six device settings. | unknown | unknown | unknown |
| breakpoints Use when Studio breakpoints or logpoints are needed to trace script execution. | unknown | unknown | unknown |
| simulate_keyboard_input Use to send key presses or text to a live playtest client. | unknown | unknown | unknown |
| import_rbxm Use to load a local, remote, or inline .rbxm under a chosen parent. | unknown | unknown | unknown |
| search_objects Use to find instances by name, class, or property value. | read | false | unknown |
| search_files Search instances by name, class, or script content | read | false | unknown |
| get_services Get available services and their children | read | false | unknown |
| get_file_tree Get instance hierarchy tree from Studio | read | false | unknown |
| mass_create_objects Create multiple instances. Each can have optional properties. | write | true | unknown |
| delete_script_lines Use to remove a known inclusive line range from one script. | destructive | true | true |
| set_attribute Set an attribute. Supports primitives, Vector3, Color3, UDim2, BrickColor. | write | true | unknown |
| list_library List available builds in the local build library. Returns build IDs, styles, bounds, and part counts. Optionally filter by style. | read | false | unknown |
| create_build Create a new build model from scratch and save it to the library. Define parts using compact arrays [posX, posY, posZ, sizeX, sizeY, sizeZ, rotX, rotY, rotZ, paletteKey, shape?, transparency?]. Palette maps short keys to [BrickColor, Material] pairs. The build is saved and can be referenced by import_build or import_scene. | write | true | unknown |
| simulate_mouse_input Use to click the live playtest viewport at known pixel coordinates. | unknown | unknown | unknown |
| get_instance_properties Use to inspect an instance's current properties. | read | false | unknown |
| reset_simulation_state Use to clear network and device simulator settings between simulation tests. | unknown | unknown | unknown |
| get_device_simulator_state Use to inspect active device simulation or list built-in device presets. | read | false | unknown |
| insert_asset Use to sanitize and insert a Creator Store asset into a Studio place. | write | true | unknown |
| set_device_simulator Use to start, change, or stop device simulation in edit mode or on playtest clients. | write | true | unknown |
| export_rbxm Use to save selected DataModel instances as a local .rbxm file. | unknown | unknown | unknown |
| smart_duplicate Duplicate with naming, positioning, and property variations | unknown | unknown | unknown |
| capture_screenshot Use when you need the current Studio viewport as an image or input coordinate map. | unknown | unknown | unknown |
| bulk_set_attributes Set multiple attributes on an instance in a single call. More efficient than repeated set_attribute calls. | write | true | unknown |
| set_properties Use to update several properties on one instance in a single call. | write | true | unknown |
| upload_asset Use to upload a local asset file to a Roblox user or group. | write | true | unknown |
| edit_script_lines Use for an exact, localized replacement in one script. | write | true | unknown |
| preview_asset Use to inspect an asset's hierarchy and media without inserting it. | read | false | unknown |
| eval_server_runtime Use when Luau must run in the live server Script VM and share the game's require cache. | unknown | unknown | unknown |
| import_build Import a build into Roblox Studio. Accepts either a full build data object OR a library ID string (e.g. "medieval/church_01") to load from the build library. When using generate_build or create_build, pass the build ID string instead of the full data. | unknown | unknown | unknown |
| solo_playtest Use to start, stop, or inspect a single-player Studio playtest. | read | false | unknown |
| export_build Export a Model/Folder into a compact, token-efficient build JSON format and auto-save it to the local build library. The output contains a palette (unique BrickColor+Material combos mapped to short keys) and compact part arrays with positions normalized relative to the bounding box center. The file is saved to build-library/{style}/{id}.json automatically. | unknown | unknown | unknown |
| generate_build Procedurally generate a build via JS code. ALWAYS generate the entire scene in ONE call - never split into multiple small builds. PREFER high-level primitives over manual loops. No comments. No unnecessary variables. Maximize build detail per line.
EDITING: When modifying an existing build, call get_build first to retrieve the original code. Then make ONLY the targeted changes the user requested - do not rewrite unchanged code. Pass the modified code to generate_build.
HIGH-LEVEL (use these first - each replaces 5-20 lines):
room(x,y,z, w,h,d, wallKey, floorKey?, ceilKey?, wallThickness?) - Complete enclosed room (floor+ceiling+4 walls)
roof(x,y,z, w,d, style, key, overhang?) - style: "flat"|"gable"|"hip"
stairs(x1,y1,z1, x2,y2,z2, width, key) - Auto-generates steps between two points
column(x,y,z, height, radius, key, capKey?) - Cylinder with base+capital
pew(x,y,z, w,d, seatKey, legKey?) - Bench with seat+backrest+legs
arch(x,y,z, w,h, thickness, key, segments?) - Curved archway
fence(x1,z1, x2,z2, y, key, postSpacing?) - Fence with posts+rails
BASIC:
part(x,y,z, sx,sy,sz, key, shape?, transparency?)
rpart(x,y,z, sx,sy,sz, rx,ry,rz, key, shape?, transparency?)
wall(x1,z1, x2,z2, height, thickness, key) - vertical plane from (x1,z1) to (x2,z2)
floor(x1,z1, x2,z2, y, thickness, key) - horizontal plane at height y, corners (x1,z1)-(x2,z2). NOT fill - only takes 2D corners+y, not 3D points
fill(x1,y1,z1, x2,y2,z2, key, [ux,uy,uz]?) - 3D volume between two 3D points
beam(x1,y1,z1, x2,y2,z2, thickness, key)
IMPORTANT: Palette keys must match exactly. Use only keys defined in your palette object, not color names.
CUSTOM MATERIALS: Use search_materials to find MaterialVariant names, then reference them as the 3rd palette element: {"a": ["Color", "BaseMaterial", "VariantName"]}.
REPETITION:
row(x,y,z, count, spacingX, spacingZ, fn(i,cx,cy,cz))
grid(x,y,z, countX, countZ, spacingX, spacingZ, fn(ix,iz,cx,cy,cz))
Shapes: Block(default), Wedge, Cylinder, Ball, CornerWedge. Max 10000 parts. Math and rng() available.
CYLINDER AXIS: Roblox cylinders extend along the X axis. For upright cylinders, use size (height, diameter, diameter) with rz=90. The column() primitive handles this automatically.
EXAMPLE - compact cabin (17 lines):
room(0,0,0,8,4,6,"a","b","a")
roof(0,4,0,8,6,"gable","c")
wall(-4,-2,4,-2,4,1,"a")
part(0,2,3,3,3,0.3,"a","Block",0.4)
row(-2,0,-1,3,0,2,(i,cx,cy,cz)=>{pew(cx,0,cz,3,2,"d")})
column(-3,0,-2,4,0.5,"a","b")
column(3,0,-2,4,0.5,"a","b")
part(0,2,0,2,1,1,"b") | read | false | unknown |
| import_scene Import a full scene layout. Provide a scene with model references (resolved from library) and placement data. Each model is placed at the specified position/rotation. Can also include inline custom builds. | unknown | unknown | unknown |
| search_assets Use to find public Creator Store assets by type or keyword. | read | false | unknown |
| get_memory_breakdown Use to compare Roblox memory categories across edit, server, or client peers. | read | false | unknown |
| find_and_replace_in_scripts Use to preview or apply the same text replacement across multiple scripts. | read | false | unknown |
| get_roblox_docs Use to look up official Roblox engine or Luau reference documentation. | read | false | unknown |
| get_scene_analysis Use to attribute scene cost to instances, scripts, triangles, animation, or audio. | read | false | unknown |
| manage_instance Use to launch, inspect, authorize, or close Studio processes and list place revisions. | read | false | unknown |
| get_roblox_skills Use to list or read Roblox-authored Studio Assistant skills on demand. | read | false | unknown |
| capture_micro_profiler Use to attribute frame time across engine and game work on a running server or client. | unknown | unknown | unknown |
| generate_model Use to generate and stage a Roblox model from text or an image reference. | unknown | unknown | unknown |
| set_network_profile Use to apply simulated latency, jitter, or packet loss to playtest clients. | write | true | unknown |
| capture_script_profiler Use to find Luau CPU hotspots on a running server or client. | read | false | unknown |
02Install & source
npx -y @chrrxs/robloxstudio-mcp@latest
npxnpx -y @chrrxs/robloxstudio-mcp-inspector@latest
npx- repohttps://github.com/Chrrxs/robloxstudio-mcp
- licenseMIT
- adoption181 stars · 28 forks
05Provenance & freshness
sourcesGitHub repo search [p4]
last_checked2026-08-24 01:22Z
next_check2026-08-24 04:20Z
cadenceevery 3h
verifiedtools_list:passed handshake:passed metadata:passed tools_list:passed handshake:passed metadata:passed tools_list:passed handshake:passed metadata:passed tools_list:passed
index_statusindex — 8 unique facts >= 5
06Badge
Add the “as seen on MCPExplorer” badge to your README.
[](https://mcpexplorer.com/servers/robloxstudio-mcp-2)
Next step
This is one server. A loadout combines the right servers, governance, and proven plays for a whole job — assembled deliberately, not tool-dumped.
Explore loadouts →