Roblox Studio MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_SERVER_PORT | No | MCP server port (default: stdio) | stdio |
| REQUEST_TIMEOUT | No | Request timeout (default: 30000ms) | 30000ms |
| HTTP_SERVER_PORT | No | HTTP bridge port (default: 3002) | 3002 |
| PLUGIN_POLL_INTERVAL | No | Plugin poll frequency (default: 500ms) | 500ms |
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 | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_file_treeA | Get the Roblox instance hierarchy tree from Roblox Studio. Returns game instances (Parts, Scripts, Models, Folders, etc.) as a tree structure. NOTE: This operates on Roblox Studio instances, NOT local filesystem files. |
| search_filesA | Search for Roblox instances by name, class type, or script content. NOTE: This searches Roblox Studio instances, NOT local filesystem files. |
| get_place_infoA | Get place ID, name, and game settings |
| get_servicesC | Get available Roblox services and their children |
| search_objectsB | Find instances by name, class, or properties |
| get_instance_propertiesA | Get all properties of a specific Roblox instance in Studio |
| get_instance_childrenB | Get child instances and their class types from a Roblox parent instance |
| search_by_propertyC | Find objects with specific property values |
| get_class_infoB | Get available properties/methods for Roblox classes |
| get_project_structureB | Get complete game hierarchy. IMPORTANT: Use maxDepth parameter (default: 3) to explore deeper levels of the hierarchy. Set higher values like 5-10 for comprehensive exploration |
| set_propertyC | Set a property on any Roblox instance |
| mass_set_propertyB | Set the same property on multiple instances at once |
| mass_get_propertyA | Get the same property from multiple instances at once |
| create_objectA | Create a new Roblox object instance (basic, without properties) |
| create_object_with_propertiesB | Create a new Roblox object instance with initial properties |
| mass_create_objectsA | Create multiple objects at once (basic, without properties) |
| mass_create_objects_with_propertiesB | Create multiple objects at once with initial properties |
| delete_objectB | Delete a Roblox object instance |
| smart_duplicateC | Smart duplication with automatic naming, positioning, and property variations |
| mass_duplicateC | Perform multiple smart duplications at once |
| set_calculated_propertyC | Set properties using mathematical formulas and variables |
| set_relative_propertyB | Modify properties relative to their current values |
| get_script_sourceA | Get the source code of a Roblox script (LocalScript, Script, or ModuleScript). Returns both "source" (raw code) and "numberedSource" (with line numbers prefixed like "1: code"). Use numberedSource to accurately identify line numbers for editing. For large scripts (>1500 lines), use startLine/endLine to read specific sections. |
| set_script_sourceA | Replace the entire source code of a Roblox script. Uses ScriptEditorService:UpdateSourceAsync (works with open editors). For partial edits, prefer edit_script_lines, insert_script_lines, or delete_script_lines. |
| edit_script_linesA | Replace specific lines in a Roblox script without rewriting the entire source. IMPORTANT: Use the "numberedSource" field from get_script_source to identify the correct line numbers. Lines are 1-indexed and ranges are inclusive. |
| insert_script_linesA | Insert new lines into a Roblox script at a specific position. IMPORTANT: Use the "numberedSource" field from get_script_source to identify the correct line numbers. |
| delete_script_linesA | Delete specific lines from a Roblox script. IMPORTANT: Use the "numberedSource" field from get_script_source to identify the correct line numbers. |
| get_attributeA | Get a single attribute value from a Roblox instance |
| set_attributeA | Set an attribute value on a Roblox instance. Supports string, number, boolean, Vector3, Color3, UDim2, and BrickColor. |
| get_attributesB | Get all attributes on a Roblox instance |
| delete_attributeA | Delete an attribute from a Roblox instance |
| get_tagsA | Get all CollectionService tags on a Roblox instance |
| add_tagB | Add a CollectionService tag to a Roblox instance |
| remove_tagA | Remove a CollectionService tag from a Roblox instance |
| get_taggedB | Get all instances with a specific tag |
| get_selectionB | Get all currently selected objects |
| reparent_objectB | Move a Roblox instance to a new parent |
| clone_objectB | Clone a Roblox instance (with all children) to a parent |
| get_descendantsA | Get all descendants of an instance with optional class/name filters and depth limit |
| batch_operationsB | Execute multiple operations in a single round-trip. Each operation has a type (setProperty, createObject, deleteObject, reparent, clone) and corresponding data. |
| undoA | Undo the last action in Roblox Studio (ChangeHistoryService:Undo) |
| redoA | Redo the last undone action in Roblox Studio (ChangeHistoryService:Redo) |
| group_objectsB | Group multiple instances into a Model or Folder |
| ungroup_objectsA | Dissolve a group (Model/Folder), moving all children to its parent |
| get_bounding_boxA | Get the axis-aligned bounding box of a Model or BasePart |
| create_weldB | Create a WeldConstraint between two BaseParts |
| raycastC | Cast a ray in workspace and return hit information |
| fill_terrainA | Fill a region of terrain with a material using a shape (Block, Ball, or Cylinder) |
| clear_terrainA | Clear (remove) terrain in a region |
| execute_luaA | Execute arbitrary Luau code in Roblox Studio and return the result. The code runs in the plugin context with full API access. Use "return " to get results back. |
| set_selectionB | Set the current selection in Roblox Studio to specific instances |
| mass_reparentA | Move multiple instances to a new parent at once |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/code-and-relax/robloxstudio-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server