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.

ToolRiskSide effectsApproval
set_script_source
Use only when replacing a script's entire source.
writetrueunknown
get_tagged
Get all instances with a specific tag
readfalseunknown
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.
readfalseunknown
undo
Undo the last change in Roblox Studio. Uses ChangeHistoryService to reverse the most recent operation.
unknownunknownunknown
get_connected_instances
Use to discover connected places and the roles available in each.
readfalseunknown
get_place_info
Use when you need the current place's identity or settings.
readfalseunknown
get_class_info
Get properties/methods for a class
readfalseunknown
get_project_structure
Use to inspect a DataModel subtree and its hierarchy.
readfalseunknown
get_instance_children
Get children and their class types
readfalseunknown
set_property
Set a property on an instance
writetrueunknown
delete_object
Delete an instance
destructivetruetrue
insert_script_lines
Use to add source after a known line in one script.
writetrueunknown
delete_attribute
Delete an attribute
destructivetruetrue
get_selection
Use when the current Studio selection should define the objects to work on.
readfalseunknown
get_attributes
Use to inspect every attribute on one instance.
readfalseunknown
add_tag
Add a tag
writetrueunknown
remove_tag
Remove a tag
destructivetruetrue
redo
Redo the last undone change in Roblox Studio. Uses ChangeHistoryService to reapply the most recently undone operation.
unknownunknownunknown
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.
readfalseunknown
get_asset_details
Use to inspect full catalog metadata for one shortlisted Creator Store asset.
readfalseunknown
clone_object
Clone an instance to a new parent location. Creates a deep copy of the instance and all its descendants.
unknownunknownunknown
compare_instances
Diff two instances by comparing their properties. Useful for debugging why a duplicate behaves differently.
unknownunknownunknown
get_script_source
Use to read all or part of a script's source.
readfalseunknown
get_simulation_state
Use to inspect network and device simulator state before or after simulation tests.
readfalseunknown
search_by_property
Find objects with specific property values
readfalseunknown
get_asset_thumbnail
Use when an asset thumbnail would help with visual review.
readfalseunknown
get_descendants
Get all descendants of an instance recursively with depth info. More efficient than repeated get_instance_children calls.
readfalseunknown
create_object
Create a new instance. Optionally set properties on creation.
writetrueunknown
mass_duplicate
Batch smart_duplicate operations
unknownunknownunknown
mass_set_property
Set a property on multiple instances
writetrueunknown
get_tags
Get all tags on an instance
readfalseunknown
mass_get_property
Get a property from multiple instances
readfalseunknown
execute_luau
Use for custom edit work or plugin-context access to a live server or client.
writetrueunknown
eval_client_runtime
Use when Luau must run in a live client LocalScript VM and share the game's require cache.
unknownunknownunknown
get_runtime_logs
Use to read recent Studio output from edit, server, or client peers.
readfalseunknown
multiplayer_playtest
Use to run or inspect a StudioTestService playtest with multiple clients.
readfalseunknown
grep_scripts
Use to locate text or Lua pattern matches across script sources.
unknownunknownunknown
capture_device_matrix
Use to compare viewport screenshots across up to six device settings.
unknownunknownunknown
breakpoints
Use when Studio breakpoints or logpoints are needed to trace script execution.
unknownunknownunknown
simulate_keyboard_input
Use to send key presses or text to a live playtest client.
unknownunknownunknown
import_rbxm
Use to load a local, remote, or inline .rbxm under a chosen parent.
unknownunknownunknown
search_objects
Use to find instances by name, class, or property value.
readfalseunknown
search_files
Search instances by name, class, or script content
readfalseunknown
get_services
Get available services and their children
readfalseunknown
get_file_tree
Get instance hierarchy tree from Studio
readfalseunknown
mass_create_objects
Create multiple instances. Each can have optional properties.
writetrueunknown
delete_script_lines
Use to remove a known inclusive line range from one script.
destructivetruetrue
set_attribute
Set an attribute. Supports primitives, Vector3, Color3, UDim2, BrickColor.
writetrueunknown
list_library
List available builds in the local build library. Returns build IDs, styles, bounds, and part counts. Optionally filter by style.
readfalseunknown
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.
writetrueunknown
simulate_mouse_input
Use to click the live playtest viewport at known pixel coordinates.
unknownunknownunknown
get_instance_properties
Use to inspect an instance's current properties.
readfalseunknown
reset_simulation_state
Use to clear network and device simulator settings between simulation tests.
unknownunknownunknown
get_device_simulator_state
Use to inspect active device simulation or list built-in device presets.
readfalseunknown
insert_asset
Use to sanitize and insert a Creator Store asset into a Studio place.
writetrueunknown
set_device_simulator
Use to start, change, or stop device simulation in edit mode or on playtest clients.
writetrueunknown
export_rbxm
Use to save selected DataModel instances as a local .rbxm file.
unknownunknownunknown
smart_duplicate
Duplicate with naming, positioning, and property variations
unknownunknownunknown
capture_screenshot
Use when you need the current Studio viewport as an image or input coordinate map.
unknownunknownunknown
bulk_set_attributes
Set multiple attributes on an instance in a single call. More efficient than repeated set_attribute calls.
writetrueunknown
set_properties
Use to update several properties on one instance in a single call.
writetrueunknown
upload_asset
Use to upload a local asset file to a Roblox user or group.
writetrueunknown
edit_script_lines
Use for an exact, localized replacement in one script.
writetrueunknown
preview_asset
Use to inspect an asset's hierarchy and media without inserting it.
readfalseunknown
eval_server_runtime
Use when Luau must run in the live server Script VM and share the game's require cache.
unknownunknownunknown
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.
unknownunknownunknown
solo_playtest
Use to start, stop, or inspect a single-player Studio playtest.
readfalseunknown
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.
unknownunknownunknown
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")
readfalseunknown
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.
unknownunknownunknown
search_assets
Use to find public Creator Store assets by type or keyword.
readfalseunknown
get_memory_breakdown
Use to compare Roblox memory categories across edit, server, or client peers.
readfalseunknown
find_and_replace_in_scripts
Use to preview or apply the same text replacement across multiple scripts.
readfalseunknown
get_roblox_docs
Use to look up official Roblox engine or Luau reference documentation.
readfalseunknown
get_scene_analysis
Use to attribute scene cost to instances, scripts, triangles, animation, or audio.
readfalseunknown
manage_instance
Use to launch, inspect, authorize, or close Studio processes and list place revisions.
readfalseunknown
get_roblox_skills
Use to list or read Roblox-authored Studio Assistant skills on demand.
readfalseunknown
capture_micro_profiler
Use to attribute frame time across engine and game work on a running server or client.
unknownunknownunknown
generate_model
Use to generate and stage a Roblox model from text or an image reference.
unknownunknownunknown
set_network_profile
Use to apply simulated latency, jitter, or packet loss to playtest clients.
writetrueunknown
capture_script_profiler
Use to find Luau CPU hotspots on a running server or client.
readfalseunknown

02Install & source
npx -y @chrrxs/robloxstudio-mcp@latest
npx
npx -y @chrrxs/robloxstudio-mcp-inspector@latest
npx

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_statusindex8 unique facts >= 5

06Badge

Add the “as seen on MCPExplorer” badge to your README. robloxstudio-mcp MCP — as seen on mcpexplorer.com

[![robloxstudio-mcp MCP — as seen on mcpexplorer.com](https://mcpexplorer.com/badge/robloxstudio-mcp-2.svg)](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 →