servers / robloxstudio-mcp

robloxstudio-mcp

communitystdiolocaldestructive capabledegraded

Create agentic AI workflows in ROBLOX Studio


01Tools · 69

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
add_tag
Add a tag
writetrueunknown
bulk_set_attributes
Set multiple attributes on an instance in a single call. More efficient than repeated set_attribute calls.
writetrueunknown
capture_screenshot
Capture a screenshot of the Roblox Studio viewport and return it as a PNG image. Requires EditableImage API to be enabled: Game Settings > Security > "Allow Mesh / Image APIs". Only works in Edit mode with the viewport visible.
unknownunknownunknown
character_navigation
Move the player character to a target position or instance during playtest. Uses PathfindingService for automatic navigation around obstacles, falling back to direct movement. Requires an active playtest in "play" mode. Does NOT simulate player input — moves the character directly.
unknownunknownunknown
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
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
create_object
Create a new instance. Optionally set properties on creation.
writetrueunknown
create_ui_tree
Create an entire instance hierarchy from a nested JSON tree in one call.
writetrueunknown
delete_attribute
Delete an attribute
destructivetruetrue
delete_object
Delete an instance
destructivetruetrue
delete_script_lines
Delete a range of lines. 1-indexed, inclusive.
destructivetruetrue
edit_script_lines
Replace exact text in a script. old_string must match exactly once in the script (whitespace-sensitive). Use get_script_source first to see current content.
writetrueunknown
execute_luau
Execute Luau code in plugin context. Use print()/warn() for output. Return value is captured.
writetrueunknown
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
find_and_replace_in_scripts
Find and replace text across all scripts in the game. Supports literal and Lua pattern matching. Use dryRun to preview changes before applying. Pairs with grep_scripts for search-only operations.
readfalseunknown
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,0,-2,4,0,-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
get_asset_details
Get detailed marketplace metadata for a specific asset. Uses ROBLOX_OPEN_CLOUD_API_KEY or falls back to ROBLOSECURITY cookie (own assets only).
readfalseunknown
get_asset_thumbnail
Get the thumbnail image for an asset as base64 PNG, suitable for vision LLMs. Thumbnails API is public but asset validation uses ROBLOX_OPEN_CLOUD_API_KEY.
readfalseunknown
get_attribute
Get an attribute value
readfalseunknown
get_attributes
Get all attributes on an instance
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
get_class_info
Get properties/methods for a class
readfalseunknown
get_connected_instances
List all connected plugin instances with their roles. Use during multi-client playtest to discover server and client instances for targeted commands.
readfalseunknown
get_descendants
Get all descendants of an instance recursively with depth info. More efficient than repeated get_instance_children calls.
readfalseunknown
get_file_tree
Get instance hierarchy tree from Studio
readfalseunknown
get_instance_children
Get children and their class types
readfalseunknown
get_instance_properties
Get all properties of an instance
readfalseunknown
get_output_log
Get the Studio output log history. Works in both edit and play mode.
readfalseunknown
get_place_info
Get place ID, name, and game settings
readfalseunknown
get_playtest_output
Poll output buffer without stopping. Returns isRunning and captured messages.
readfalseunknown
get_project_structure
Get full game hierarchy tree. Increase maxDepth (default 3) for deeper traversal.
readfalseunknown
get_script_analysis
Run syntax analysis on Luau scripts using loadstring. Detects compile errors with line numbers. Pass a script path to analyze one script, or a container path to analyze all scripts under it.
readfalseunknown
get_script_source
Get script source. Returns "source" and "numberedSource" (line-numbered). Use startLine/endLine for large scripts.
readfalseunknown
get_selection
Get all currently selected objects
readfalseunknown
get_services
Get available services and their children
readfalseunknown
get_tagged
Get all instances with a specific tag
readfalseunknown
get_tags
Get all tags on an instance
readfalseunknown
grep_scripts
Ripgrep-inspired search across all script sources. Supports literal and Lua pattern matching, context lines, early termination, and results grouped by script with line/column numbers.
readfalseunknown
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
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
insert_asset
Insert a Roblox asset into Studio by loading it via AssetService and parenting it to a target location. Optionally set position.
writetrueunknown
insert_script_lines
Insert lines after a given line number (0 = beginning).
writetrueunknown
list_library
List available builds in the local build library. Returns build IDs, styles, bounds, and part counts. Optionally filter by style.
readfalseunknown
mass_create_objects
Create multiple instances. Each can have optional properties.
writetrueunknown
mass_duplicate
Batch smart_duplicate operations
unknownunknownunknown
mass_get_property
Get a property from multiple instances
readfalseunknown
mass_set_property
Set a property on multiple instances
writetrueunknown
move_object
Move (reparent) an instance to a new parent location. Preserves all children and properties.
writetrueunknown
preview_asset
Preview a Roblox asset without permanently inserting it. Loads the asset, builds a hierarchy tree with properties and summary stats, then destroys it. Useful for inspecting asset contents before insertion.
unknownunknownunknown
redo
Redo the last undone change in Roblox Studio. Uses ChangeHistoryService to reapply the most recently undone operation.
unknownunknownunknown
remove_tag
Remove a tag
destructivetruetrue
rename_object
Rename an instance.
writetrueunknown
search_assets
Search the Creator Store (Roblox marketplace) for assets by type and keywords. Requires ROBLOX_OPEN_CLOUD_API_KEY env var (no cookie auth for this endpoint).
readfalseunknown
search_by_property
Find objects with specific property values
readfalseunknown
search_files
Search instances by name, class, or script content
readfalseunknown
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
search_objects
Find instances by name, class, or properties
readfalseunknown
set_attribute
Set an attribute. Supports primitives, Vector3, Color3, UDim2, BrickColor.
writetrueunknown
set_properties
Set multiple properties on a single instance in one call.
writetrueunknown
set_property
Set a property on an instance
writetrueunknown
set_script_source
Replace entire script source. For partial edits use edit/insert/delete_script_lines.
writetrueunknown
simulate_keyboard_input
Simulate keyboard input via VirtualInputManager. Use during playtest for character movement (W/A/S/D), jumping (Space), interactions (E), or any key-driven action. For sustained movement, use "press" to hold and "release" to let go.
unknownunknownunknown
simulate_mouse_input
Simulate mouse input in the Roblox Studio viewport via VirtualInputManager. Use during playtest to click UI buttons, interact with objects, or navigate menus. Coordinates are viewport pixels (top-left is 0,0). Use capture_screenshot to identify UI element positions before clicking.
unknownunknownunknown
smart_duplicate
Duplicate with naming, positioning, and property variations
unknownunknownunknown
start_playtest
Start playtest. Captures print/warn/error via LogService. Poll with get_playtest_output, end with stop_playtest. Use numPlayers for multi-client testing (server + N clients).
unknownunknownunknown
stop_playtest
Stop playtest and return all captured output.
unknownunknownunknown
undo
Undo the last change in Roblox Studio. Uses ChangeHistoryService to reverse the most recent operation.
unknownunknownunknown
upload_decal
Upload an image file as a Decal asset to Roblox. Supports ROBLOSECURITY cookie auth (recommended, simpler) or ROBLOX_OPEN_CLOUD_API_KEY (needs asset:write scope + creator ID). Cookie auth is used automatically when ROBLOSECURITY is set.
writetrueunknown

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

03Access granted
Browser automation · writeMaps & location · writeMonitoring & logs · write

The access this server can exercise, inferred from its verified tools — not a declared OAuth scope.


05Provenance & freshness
sourcesGitHub repo search [p4]
last_checked2026-09-30 20:21Z
next_check2026-09-30 23:21Z
cadenceevery 3h
verifiedmetadata:passed metadata:passed metadata:passed metadata:passed metadata:passed metadata:passed metadata:passed metadata:passed metadata:passed metadata:passed
index_statusindex — 9 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.svg)](https://mcpexplorer.com/servers/robloxstudio-mcp)

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 →