Skip to main content
Glama

Roblox Studio MCP

Experimental. This is an active work-in-progress. APIs will change, features may break, and the rendered screenshots are blocky approximations — not pixel-accurate previews. Use at your own risk. Contributions and bug reports welcome.

An MCP (Model Context Protocol) server for controlling Roblox Studio from AI coding tools like OpenCode. Provides workspace exploration, instance manipulation, script management, toolbox integration, playtest controls, and viewport rendering.

Architecture

OpenCode / Claude ──stdio/MCP──> MCP Server (Node.js) ──HTTP──> Studio Plugin (Lua)
                                  :28821 bridge                  polls for commands

The MCP server runs a small HTTP server on 127.0.0.1:28821. The Roblox Studio plugin polls this server every 250ms for pending commands, executes them inside Studio, and posts results back.

Related MCP server: robloxstudio-mcp

Setup

1. Install dependencies and build

npm install
npm run build

2. Install the Studio plugin

Automatic:

npm run install-plugin

Manual:

Copy plugin/RobloxStudioMCP.server.lua to your Roblox Studio plugins folder:

Platform

Path

macOS

~/Documents/Roblox/Plugins/

Windows

%LOCALAPPDATA%\Roblox\Plugins\

3. Activate the plugin

In Studio, click the MCP Bridge button in the toolbar. A status widget will appear showing connection state.

Note: Plugin HTTP requests are not gated by the "Allow HTTP Requests" game setting. That setting only applies to game scripts — plugins can make HTTP calls freely.

4. Configure OpenCode

The included opencode.json works when you run OpenCode from the project root:

{
  "mcp": {
    "roblox-studio": {
      "type": "local",
      "command": ["node", "dist/index.js"],
      "environment": {
        "ROBLOX_MCP_PORT": "28821"
      }
    }
  },
  "default_agent": "studio"
}

If you want to use this from a different project, use the absolute path to dist/index.js in the command array.

Tools (6 consolidated)

All tools use an action parameter to select the specific operation.

roblox_get — Read-only queries

Action

Description

ping

Check plugin connection status and get place info

tree

ASCII tree view of the instance hierarchy

search

Search by name substring and/or class name

instance

Get detailed info about a specific instance

properties

Read all common properties of an instance

descendants_summary

Class breakdown with counts for descendants

selection

Get currently selected instances

output_log

Read recent Output window entries

texture_info

Get texture/decal asset IDs for an instance and descendants

roblox_manage — Instance mutations

Action

Description

create

Create Part, Model, Folder, etc. with properties

create_multiple

Batch create multiple instances at once

update

Update properties (Position, Size, Color, etc.)

reset_pivot

Reset a Model's WorldPivot to bounding box center

delete

Destroy an instance (undoable)

clone

Clone with optional rename/reparent

reparent

Move an instance to a new parent

set_selection

Select specific instances

undo

Undo last action

redo

Redo last undone action

roblox_script — Script CRUD & execution

Action

Description

create

Create Script/LocalScript/ModuleScript

read

Read script source and metadata

update

Update source code (works with open editors)

execute

Execute a Lua snippet in Studio context

roblox_scene — Camera & screenshots

Action

Description

screenshot

Render a PNG of the current viewport (geometry + color + materials, no textures)

move_camera

Position camera explicitly or auto-frame on an instance

roblox_toolbox — Creator Store

Action

Description

search

Search for free models/decals/audio

insert

Insert a toolbox asset by ID

strip_scripts

Remove all scripts from an inserted model

roblox_playtest — Test sessions

Action

Description

start

Begin a playtest session

stop

Stop the current playtest

status

Get current state (Edit/Run/Play)

move_camera

Move camera during playtest

fire_click

Fire a ClickDetector

fire_proximity

Trigger a ProximityPrompt

get_state

Read game state (players, leaderstats)

execute

Run Lua in the live game context

Instance Paths

Instances are referenced by dot-separated paths from game:

Workspace                         -- game.Workspace
Workspace.SpawnLocation           -- a SpawnLocation in Workspace
ServerScriptService.GameScript    -- a script in ServerScriptService
ReplicatedStorage.Modules.Utils   -- nested path

Agent

An OpenCode agent definition is included at .opencode/agents/studio.md. It configures the AI with Roblox Studio domain knowledge and tool usage patterns. The opencode.json sets it as the default agent.

Environment Variables

Variable

Default

Description

ROBLOX_MCP_PORT

28821

HTTP bridge port

Known Limitations

  • Screenshots are software-rendered from geometry data — no textures, lighting, or post-processing. They show shapes, colors, and spatial relationships, not what Studio's viewport actually looks like.

  • Playtest control uses RunService:Run()/:Stop() which works for server-side testing but doesn't fully replicate Play Solo (no local player character).

  • Toolbox search hits the public Roblox API and may be rate-limited.

  • Script execution runs via require() on a temporary ModuleScript. Some APIs may not be available in this context.

  • Instance paths use dot-separated names, so instances with . in their name will not resolve correctly.

License

MIT

Available Tools

6 tools
roblox_getA

Read-only queries against the Roblox Studio scene. Use the "action" parameter to select what to retrieve.

Actions:

  • "ping": Check plugin connection status and get place info.

  • "tree": Get ASCII hierarchy tree. Params: root (path, default game), maxDepth (number).

  • "search": Find instances by name/class. Params: query (substring), className, root, maxResults.

  • "instance": Get detailed info about one instance. Params: path (required), depth (children levels, default 1).

  • "properties": Get all readable properties. Params: path (required), properties (array of extra names).

  • "descendants_summary": Class-count breakdown under a root. Params: root (default Workspace).

  • "selection": Get the currently selected instances. Params: depth.

  • "output_log": Read recent Output log entries. Params: maxEntries (default 50).

  • "texture_info": Get texture and decal asset IDs for an instance and its descendants. Returns MeshPart TextureIDs, Decal/Texture asset IDs, and materials. Useful for understanding visual appearance without rendering textures in screenshots. Params: path (required), maxDepth (default 2).

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesWhich query to perform
pathNoInstance path (dot-separated)
rootNoRoot path to scope the query
queryNoSearch substring (for search action)
classNameNoFilter by class name (for search)
maxDepthNoTree depth limit
maxResultsNoResult limit for search
maxEntriesNoLog entry limit for output_log
depthNoChildren depth for instance/selection
propertiesNoExtra property names to read (for properties action)

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states the read-only nature upfront, describes what each action retrieves, and provides useful context like default values and parameter purposes. However, it doesn't mention potential limitations like rate limits, authentication needs, or error conditions that would be helpful for a tool with 10 parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear opening statement followed by an organized action list. Each action is concisely described with its purpose and relevant parameters. While comprehensive, some action descriptions could be slightly more concise (e.g., 'texture_info' has a lengthy explanation). Overall, most sentences earn their place by adding necessary clarification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 10 parameters, 9 actions, and no output schema or annotations, the description does an excellent job of providing context. It explains the tool's purpose, when to use it, what each action does, and how parameters relate to actions. The main gap is the lack of output format information, which would be helpful given the complexity and absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 100% schema description coverage, the description adds significant value by explaining the semantic meaning of each action and how parameters map to specific actions. It clarifies which parameters are used by which actions, provides default values not in the schema, and explains the purpose of complex actions like 'texture_info' with specific use cases. This goes well beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states this is for 'read-only queries against the Roblox Studio scene' and specifies the verb 'retrieve' for the actions. It explicitly distinguishes this tool from its siblings by emphasizing its read-only query nature, which contrasts with management, playtesting, scene manipulation, scripting, and toolbox operations implied by the sibling names.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool: for read-only queries, with the 'action' parameter selecting specific retrieval operations. It implicitly distinguishes from siblings by focusing on querying rather than modification, though it doesn't name specific alternatives. The action list serves as a comprehensive menu of when to use each query type.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

roblox_manageA

Mutate instances in the Roblox Studio scene.

Actions:

  • "create": Create a new instance. Params: className (required), name, parent (path), properties (object).

  • "create_multiple": Batch-create instances. Params: parent (default path), instances (array of {className, name, parent?, properties?}).

  • "update": Update properties on an existing instance. Params: path (required), name, properties (object).

  • "reset_pivot": Reset a Model's WorldPivot to its bounding box center, or a BasePart's PivotOffset to zero. Params: path (required). Use this when positioning/PivotTo is behaving unexpectedly — a stale WorldPivot far from the geometry is a common cause. Automatically done on toolbox insert, but useful for debugging.

  • "delete": Destroy an instance. Params: path (required).

  • "clone": Clone an instance tree. Params: path (required), name, parent.

  • "reparent": Move an instance to a new parent. Params: path (required), newParent (required).

  • "set_selection": Set the Studio selection. Params: paths (array of paths).

  • "undo": Undo last action.

  • "redo": Redo last undone action.

Property format: vectors as {X,Y,Z}, colors as {R,G,B} (0-1 range), booleans, strings, numbers. Example: {"Position": {"X":0,"Y":5,"Z":0}, "Size": {"X":4,"Y":1,"Z":4}, "Anchored": true, "Material": "Neon", "Color": {"R":1,"G":0,"B":0}}

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesWhich mutation to perform
classNameNoClass to create (e.g. "Part", "Model", "Folder", "SpawnLocation")
pathNoTarget instance path
nameNoInstance name
parentNoParent path (default Workspace)
newParentNoNew parent path (for reparent)
propertiesNoProperties to set/update
instancesNoArray of {className, name, parent?, properties?} for create_multiple
pathsNoInstance paths (for set_selection)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: it explains what 'reset_pivot' does for debugging, mentions that it's 'automatically done on toolbox insert,' describes property formats with examples, and clarifies that actions like 'delete' destroy instances. However, it doesn't cover error handling, permissions, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded with the core purpose, followed by a structured list of actions with their parameters. Every sentence earns its place, though the property format explanation could be slightly more concise. Overall, it's well-organized and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (9 parameters, nested objects, no output schema, no annotations), the description is quite complete. It covers all actions, parameter semantics, and behavioral context. The main gap is the lack of output information, but this is mitigated by the detailed input guidance. It adequately compensates for the missing structured data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds significant value by explaining parameter usage per action (e.g., 'className (required)' for create), providing property format examples, and clarifying default values like 'parent (default path)' for create_multiple. This goes well beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a clear purpose statement: 'Mutate instances in the Roblox Studio scene.' It specifies the exact action (mutate) and resource (instances in Roblox Studio scene), and distinguishes from sibling tools like roblox_get (likely read-only) and roblox_playtest (likely testing-focused).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use specific actions (e.g., 'Use this when positioning/PivotTo is behaving unexpectedly' for reset_pivot), but doesn't explicitly state when to choose this tool over alternatives like roblox_scene or roblox_toolbox. It offers good intra-tool guidance but lacks inter-tool comparison.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

roblox_playtestA

Control Roblox Studio playtest sessions and interact with the running game.

Actions:

  • "start": Begin playtest (RunService:Run). Scripts execute, physics activate. Params: mode ("run"|"play", default "run").

  • "stop": End playtest, return to Edit mode.

  • "status": Get current mode (Edit/Running/Client/Server).

  • "move_camera": Reposition camera during playtest. Params: position {X,Y,Z}, lookAt {X,Y,Z}.

  • "fire_click": Trigger a ClickDetector. Params: path (instance path).

  • "fire_proximity": Trigger a ProximityPrompt. Params: path (instance path).

  • "get_state": Read game state (player count, leaderstats, runtime info).

  • "execute": Run Lua code in the live game context. Params: code (string).

Workflow: start → interact/observe → screenshot (via roblox_scene) → evaluate → stop → fix → repeat.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesWhich playtest action
modeNoFor start: "run" (server only) or "play" (client+server)
positionNoCamera position {X,Y,Z} (for move_camera)
lookAtNoLook-at target {X,Y,Z} (for move_camera)
pathNoInstance path (for fire_click/fire_proximity)
codeNoLua code (for execute)

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does well describing what each action does (e.g., 'Scripts execute, physics activate' for start, 'return to Edit mode' for stop), but lacks information about permissions needed, rate limits, error conditions, or what happens when actions fail. The description doesn't contradict any annotations since none exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear action listings and a workflow summary. Every sentence adds value, though the workflow section could be slightly more concise. The information is front-loaded with the core purpose, followed by detailed actions, then workflow context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 8 actions, 6 parameters, nested objects, and no output schema, the description does an excellent job covering the tool's functionality. It explains what each action does, how parameters relate to actions, and provides workflow context. The main gap is lack of output information (what each action returns), which is significant given the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3. The description adds significant value by explaining parameter usage context: it clarifies which parameters belong to which actions (e.g., 'mode' for start, 'position' and 'lookAt' for move_camera), provides default values ('run' for mode), and explains enum meanings ('run' vs 'play'). This goes well beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as controlling Roblox Studio playtest sessions and interacting with the running game, with specific verbs for each action (start, stop, status, etc.). It distinguishes from siblings by focusing specifically on playtest control rather than general Roblox operations like scene management or scripting.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear workflow (start → interact/observe → screenshot → evaluate → stop → fix → repeat) that gives excellent context for when to use this tool. However, it doesn't explicitly state when NOT to use it or mention specific alternatives among the sibling tools, which prevents a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

roblox_sceneA

Control the camera and capture rendered viewport screenshots.

Actions:

  • "screenshot": Render a PNG image of what the camera currently sees. Returns an image you can analyze visually. Use it to verify placement, scale, orientation, and scene composition. No textures are rendered — use roblox_get action "texture_info" if you need texture/decal context. Params: maxParts (default 2000).

  • "move_camera": Reposition the Studio camera. Two modes: (A) Auto-frame an object: set focusInstance to an instance path (e.g. "Workspace.GasStation"). The camera automatically positions itself at a good distance and angle to see the entire object. Optional: angle (elevation in degrees, default 35), yaw (horizontal rotation in degrees, default 45). (B) Explicit placement: set position {X,Y,Z} (where the camera IS in world space) and lookAt {X,Y,Z} (the world point the camera POINTS AT). Both must be provided and must be different points. Example: position {X:50, Y:20, Z:50} lookAt {X:0, Y:0, Z:0} places camera at (50,20,50) aiming at the origin.

Typical workflow: move_camera (frame your subject) → screenshot (see the result) → evaluate → adjust.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesWhich scene operation
maxPartsNoMax parts to render (default 2000, for screenshot)
focusInstanceNoFor move_camera mode A: instance path to auto-frame, e.g. "Workspace.MyModel". Camera positions itself to see the whole object.
angleNoFor move_camera with focusInstance: camera elevation angle in degrees (default 35). 0 = eye level, 90 = top-down.
yawNoFor move_camera with focusInstance: horizontal orbit angle in degrees (default 45). 0 = front, 90 = side, 180 = back.
positionNoFor move_camera mode B: where the camera IS in world space {X,Y,Z}. Must also provide lookAt.
lookAtNoFor move_camera mode B: the world point the camera AIMS AT {X,Y,Z}. Must differ from position.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does well. It explains what screenshots return ('PNG image you can analyze visually'), clarifies limitations ('No textures are rendered'), describes camera positioning behavior for both modes, specifies defaults (maxParts=2000, angle=35, yaw=45), and notes constraints ('Both must be provided and must be different points'). It doesn't mention rate limits or authentication needs, but provides substantial behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (overview, actions with sub-modes, typical workflow). Every sentence adds value: the opening states purpose, action descriptions provide specific guidance, and the workflow shows practical application. No wasted words despite the complexity of 7 parameters and multiple operation modes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 7 parameters, no annotations, and no output schema, the description does an excellent job. It explains what the tool does, how to use it, parameter meanings, and provides a workflow. The only gap is not explicitly describing the return format for move_camera (though it's implied to be a camera position change), but given the rich parameter explanations and behavioral context, this is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds significant value by explaining parameter semantics beyond the schema: it clarifies that maxParts is for screenshot only, explains the two distinct modes for move_camera with clear examples, describes what angle and yaw actually control, and provides concrete usage examples. This goes well beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Control the camera and capture rendered viewport screenshots.' It specifies two distinct actions (screenshot and move_camera) with their specific functions, and distinguishes from sibling 'roblox_get' by noting that screenshots don't render textures. This provides specific verb+resource differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use each action: 'Use it to verify placement, scale, orientation, and scene composition' for screenshot, and describes two distinct modes for move_camera. It also provides a typical workflow sequence and explicitly mentions when to use the sibling tool 'roblox_get' for texture context instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

roblox_scriptA

Create, read, update, and execute Lua scripts in Roblox Studio.

Actions:

  • "create": Create a new script. Params: source (required), scriptType ("Script"|"LocalScript"|"ModuleScript"), name, parent, disabled.

  • "read": Read a script's source. Params: path (required).

  • "update": Update a script's source code. Params: path (required), source (required).

  • "execute": Run a Lua snippet in Studio (server context). Returns the result or error. Params: source (required). Code runs in a function body — use 'return' to get values back.

Common parent locations: "ServerScriptService" (server scripts), "StarterPlayerScripts" (local scripts), "ReplicatedStorage" (modules).

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesWhich script operation to perform
pathNoPath to existing script
sourceNoLua source code
scriptTypeNoType of script to create (default Script)
nameNoScript name
parentNoParent path
disabledNoCreate in disabled state

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: it explains that 'execute' runs code in server context, returns results or errors, and requires 'return' statements to get values back. It also mentions script types and parent locations, though it could add more about permissions or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with bullet points for actions and clear parameter lists, making it easy to scan. It's appropriately sized with no wasted sentences, though the 'Common parent locations' section could be integrated more tightly with the 'create' action for better flow.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 parameters, no annotations, and no output schema, the description does a solid job covering key aspects: it explains actions, parameters, and behavioral context like execution environment. However, it lacks details on error handling, response formats, or limitations, leaving some gaps in completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds some value by clarifying parameter usage per action (e.g., 'source' is required for 'create', 'update', and 'execute') and providing examples like common parent paths, but it doesn't significantly enhance meaning beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs CRUD operations on Lua scripts in Roblox Studio, specifying 'create, read, update, and execute' with explicit resource targeting. It distinguishes from siblings like 'roblox_get' or 'roblox_scene' by focusing specifically on script manipulation rather than general object retrieval or scene management.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use each action (e.g., 'create' for new scripts, 'read' to view source) and includes practical guidance like common parent locations for script placement. However, it doesn't explicitly state when NOT to use this tool versus alternatives like 'roblox_manage' or 'roblox_toolbox', missing explicit sibling differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

roblox_toolboxA

Search the Roblox Creator Store, insert models, and sanitize them.

Actions:

  • "search": Search for free models/decals/audio. Returns AssetId, Name, Creator, HasScripts, IsEndorsed. Params: query (required), category ("FreeModels"|"FreeDecals"|"FreeAudio"), maxResults (default 20). Prefer assets where HasScripts=false or IsEndorsed=true.

  • "insert": Insert an asset by ID. Params: assetId (required), parent (path), position {X,Y,Z}. CRITICAL: Toolbox models often contain far more than their name implies — a "gas station" may bundle pumps, signs, shelving, vehicles, lighting as descendants. Always inspect the returned hierarchy before building additional objects. Check orientation (model axes may not match your scene) and scale (toolbox models vary wildly in size, Roblox studs ≈ 0.28m).

  • "strip_scripts": Remove all scripts from an instance tree. Params: path (required), scriptTypes (array, default all). Always do this after inserting models with HasScripts=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesWhich toolbox operation
queryNoSearch query (for search)
categoryNoAsset category (for search, default FreeModels)
maxResultsNoMax results (for search, default 20)
assetIdNoAsset ID to insert (for insert)
parentNoParent path (for insert, default Workspace)
positionNoPosition {X,Y,Z} (for insert)
pathNoInstance path (for strip_scripts)
scriptTypesNoScript types to remove (for strip_scripts, default all)

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and excels at disclosing behavioral traits. It warns about toolbox models containing 'far more than their name implies' with specific examples, mentions orientation and scale mismatches, provides preference guidance for search results ('Prefer assets where HasScripts=false or IsEndorsed=true'), and explains critical post-insertion steps. This goes well beyond basic parameter documentation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear action sections and front-loaded critical information. Every sentence earns its place by providing essential guidance, warnings, or clarification. It could be slightly more concise in the 'insert' section where some details are repeated, but overall it's efficiently organized for a multi-action tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 9 parameters, no annotations, and no output schema, the description provides excellent completeness. It covers all three actions thoroughly, includes critical behavioral warnings, explains parameter usage in context, and provides practical workflow guidance. The only minor gap is lack of explicit return value documentation, but this is reasonable given the tool's scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3, but the description adds significant value beyond the schema. It explains the practical meaning of search parameters (e.g., 'Prefer assets where HasScripts=false or IsEndorsed=true'), clarifies that 'parent' defaults to 'Workspace', and provides context about what 'strip_scripts' actually does ('Remove all scripts from an instance tree'). However, it doesn't fully explain all parameter interactions or edge cases.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Search', 'insert', 'sanitize') and resources ('Roblox Creator Store', 'models'). It distinguishes from siblings by focusing on the toolbox/store functionality rather than general Roblox operations like get, manage, playtest, scene, or script tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use each action: 'search' for finding assets, 'insert' for placing them, and 'strip_scripts' for cleaning inserted models. It includes critical warnings about toolbox models containing unexpected content and orientation/scale issues, plus specific advice to 'Always inspect the returned hierarchy before building additional objects' and 'Always do this after inserting models with HasScripts=true.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 6 tool updatesv1.0.0
    • First observedroblox_get
    • First observedroblox_manage
    • First observedroblox_playtest
    • First observedroblox_scene
    • First observedroblox_script
    • First observedroblox_toolbox

TDQS

A4.5/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: roblox_get for read-only queries, roblox_manage for mutations, roblox_playtest for session control, roblox_scene for camera/screenshot, roblox_script for script handling, and roblox_toolbox for asset management. The actions within each tool are well-defined and non-overlapping, making tool selection straightforward for an agent.

Naming Consistency5/5

All tool names follow a consistent 'roblox_' prefix with a descriptive suffix (e.g., get, manage, playtest, scene, script, toolbox). This pattern is uniform across all six tools, making them easily identifiable and predictable within the server's domain.

Tool Count5/5

With 6 tools, the server is well-scoped for Roblox Studio automation, covering scene inspection, manipulation, playtesting, visualization, scripting, and asset management. Each tool serves a distinct and necessary function, with no redundancy or missing core areas, making the count ideal for the domain.

Completeness5/5

The tool set provides comprehensive coverage for Roblox Studio workflows, including CRUD operations (e.g., create, update, delete), scene analysis, playtesting, camera control, script management, and asset handling. There are no obvious gaps; agents can perform end-to-end tasks from asset insertion to scene evaluation and debugging.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI agents to interact with and control Roblox Studio instances in real-time through the Model Context Protocol. It provides a unified tool for building, scripting, and manipulating 3D worlds with over 90 operations including instance management and Luau scripting.
    14
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to control Roblox Studio by running Luau code, creating and editing instances, reading the scene tree, and managing scripts via an MCP server with a long-polling plugin bridge.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/paralov/roblox-studio-opencode-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server