Roblox-MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ROBLOX_TIMEOUT_MS | No | Plugin wait timeout | 30000 |
| ROBLOX_BRIDGE_PORT | No | Bridge start port (probes +0…+9 on conflict) | 8090 |
| ROBLOX_MCP_API_KEY | No | Key for x-api-key (plugin: _G.MCP_SetApiKey) | |
| ROBLOX_STUDIO_PATH | No | Path to RobloxStudioBeta.exe if auto-detect fails |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| studio_statusA | Check if Roblox Studio is running, its PIDs, exe path and version. |
| studio_launchB | Launch Roblox Studio (optionally opening a local .rbxl/.rbxlx file or a published place). No plugin required. |
| studio_open_placeB | Open a place in Roblox Studio: either a local .rbxl/.rbxlx file or a published placeId+universeId. |
| studio_closeA | Close all running Roblox Studio instances (taskkill). |
| studio_list_placesB | List local .rbxl/.rbxlx place files in common folders (or given dirs). |
| bridge_statusB | Check HTTP bridge status and whether the Studio plugin is connected. |
| execute_luauA | Execute arbitrary Luau code inside Roblox Studio (Command-Bar equivalent, with undo support). Return value / prints are captured. This unlocks EVERYTHING: Toolbox, tools, services, physics, etc. Multi-line allowed. |
| get_sceneA | List scene tree (descendants) from a root with ClassName/Name/Path. Use for viewing the scene, finding GUI, checking builds. |
| get_instanceB | Get properties of one instance by dotted path (e.g. 'Workspace.SpawnLocation'). |
| create_instanceB | Create any Instance (Part, Model, Folder, PointLight, SelectionBox, etc.) with optional parent, name and properties. Values support Roblox types via {__type:'Vector3'|'Color3'|'UDim2'|'CFrame'|'BrickColor', value:...} or plain JSON. |
| set_propertyC | Set a single property on an instance (e.g. Workspace.Part Anchored=true, Color, Position). |
| set_propertiesC | Set multiple properties on an instance at once. |
| delete_instanceC | Delete an instance by path. |
| rename_instanceC | Rename an instance. |
| reparent_instanceC | Move an instance to a new parent. |
| duplicate_instanceC | Duplicate (clone) an instance, optionally with a new name. |
| get_selectionB | Get current Studio selection (paths). |
| set_selectionC | Set Studio selection to given instance paths. |
| list_scriptsB | List all Script/LocalScript/ModuleScript under a root (default game). |
| read_scriptB | Read Source of a script by path (e.g. 'ServerScriptService.MyScript', 'Workspace.Part.Script'). |
| write_scriptC | Overwrite Source of an existing script. |
| create_scriptC | Create a new Script/LocalScript/ModuleScript with source code. |
| delete_scriptC | Delete a script by path. |
| grep_scriptsC | Search script sources for a Lua pattern / substring. |
| get_outputC | Get recent Studio Output log lines captured by the plugin. |
| clear_outputB | Clear the plugin-captured output buffer. |
| play_soloA | Start Play Solo playtest (F5). Agent can then check behavior via get_output / get_play_state / execute_luau. |
| run_gameA | Start Run mode (F8, server-only simulation without player). |
| stop_playtestB | Stop any running playtest / Run mode. |
| get_play_stateA | Get current playtest state (isPlaying, isRunning, mode). |
| create_guiB | Build GUI quickly: creates ScreenGui (in StarterGui) with nested elements (Frame/TextButton/TextLabel/ImageLabel...). Each child: {className, name, properties, children}. |
| insert_assetC | Insert a Toolbox/model asset by numeric asset ID into the game (InsertService:LoadAsset). E.g. free models, meshes. |
| save_placeC | Save the current place (to its file). Optionally pass filePath hint for logging. |
| get_cameraA | Get current Studio camera (CFrame components, Focus, FieldOfView). |
| set_cameraB | Move Studio camera (position+focus as {x,y,z} or CFrame table, fov number). |
| get_lightingA | Get key Lighting properties (ClockTime, Brightness, Ambient, etc.). |
| set_lightingC | Set Lighting properties (ClockTime, Brightness, Ambient, OutdoorAmbient, FogEnd, ...). |
| get_workspace_infoA | Get Workspace stats: child count, part count, gravity, streaming, place name. |
| undoB | Undo last Studio change (ChangeHistoryService). |
| redoB | Redo last undone Studio change. |
| toolbox_searchA | Search the Roblox Toolbox/catalog for models, meshes, images, etc. Returns asset IDs you can pass to insert_asset. No plugin required. |
| toolbox_infoB | Get details for catalog asset IDs (name, type, creator, description). No plugin required. |
| bulk_createA | Create MANY instances in ONE call (one undo step, one roundtrip). Each item: {className, name?, parent?, properties?}. Building a whole room in a single call. |
| find_instancesA | Search the whole game by name and/or class: 'all Scripts with Boss in the name'. Faster than dumping the full scene. |
| get_childrenB | List direct children of one instance (shallow: Name/ClassName/Path). |
| playtestA | FULL playtest in ONE call: starts Play Solo (or Run), waits N seconds, captures Output + play state, stops, returns the report. The core of the agent debug loop. |
| get_performanceA | Read live Studio performance stats (FPS, frame time, physics, contacts, memory). Diagnose 'weak laptop' vs real bugs. |
| teleport_playerA | Teleport a playtest character to a position (testing checkpoints, boss rooms, mazes without walking). |
| respawn_playerB | Force-respawn a playtest character (tests spawn logic, retry buttons). |
| kill_playerA | Kill a playtest character (tests death screens, respawn, Entity kills). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 50 tools
Many tools target distinct operations, but overlaps exist: execute_luau can replicate nearly all mutation tools; playtest overlaps with play_solo/run_game/stop_playtest/get_play_state; create_instance vs bulk_create vs create_gui blur creation boundaries. Descriptions help, but an agent could easily misselect.
Nearly all tools use snake_case and follow a verb_noun pattern (create_instance, set_property, get_play_state). Minor deviations exist: noun-first names (bridge_status, toolbox_search), bare verbs (undo, redo, playtest), and mixed prefixes (studio_, toolbox_).
50 tools is excessive for the domain; many granular tools could be consolidated (e.g., create_instance/bulk_create/create_gui, multiple playtest controls). While the domain is broad, this count burdens selection and suggests over-provisioning.
Covers the major lifecycle: Studio launch/open/close, scene CRUD, scripting, GUI, asset insertion, lighting, camera, playtest, performance, player control, and undo/redo. Minor gaps like direct input simulation or place publishing exist, but execute_luau provides an escape hatch for most missing operations.