roblox-studio
Provides tools for interacting with a Roblox Studio place, allowing agents to inspect the hierarchy, generate terrain and geometry, write and patch Luau scripts, apply SceneSpec map builds, validate geometry, and orchestrate playtests through the Roblox Studio bridge.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@roblox-studio inspect the Workspace hierarchy"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Skills
roblox-studio connects Claude Code, Codex, Cursor, Gemini CLI, and other coding agents to the place open in Roblox Studio.
The agent can inspect the hierarchy, draft a SceneSpec, create terrain and geometry, write scoped Luau, patch generated instances, mirror code to Rojo, validate the map, and coordinate playtests. Studio changes use Undo recording and new builds stay under Workspace/MapDrafts.
Prompt -> inspect -> SceneSpec -> dry run -> apply -> validate -> playtest
Install
Claude Code
The marketplace plugin includes the skill and starts the local MCP server:
/plugin marketplace add ShiroKSH/skills
/plugin install roblox-studio@skillsCodex
npx skills add ShiroKSH/skills -g
codex mcp add roblox-studio -- npx -y github:ShiroKSH/skillsRestart Codex after adding the MCP server.
Cursor, Copilot, Gemini CLI, and other hosts
Install the skill:
npx skills add ShiroKSH/skills -gAdd the bridge as a stdio MCP server:
{
"mcpServers": {
"roblox-studio": {
"command": "npx",
"args": ["-y", "github:ShiroKSH/skills"]
}
}
}Requirements: Node.js 20 or newer and Roblox Studio.
Related MCP server: Roblox AI Skills
Install the Studio plugin
Download RobloxStudioBridge.rbxm from the latest release and put it in %LOCALAPPDATA%\Roblox\Plugins on Windows or ~/Documents/Roblox/Plugins on macOS. Restart Studio after installing or updating it.
To build from source, install Rokit, then run:
git clone https://github.com/ShiroKSH/skills.git
cd skills
rokit install
npm install
npm run install:pluginThe command builds dist/RobloxStudioBridge.rbxm with Rojo and copies it into the local Roblox plugins directory on Windows or macOS. The project pins Rojo and Lune in rokit.toml.
Manual fallback: run npm run build:plugin, then copy the .rbxm file into %LOCALAPPDATA%\Roblox\Plugins on Windows or ~/Documents/Roblox/Plugins on macOS.
Connect Studio
Enable HTTP requests for the place.
Open the
Roblox Studio Bridgeplugin panel.Keep host
127.0.0.1and port3765.Paste the token printed by the MCP server and select
Connect.Run
studio_pingfrom the agent.
The token is generated locally, is never a Roblox credential, is not persisted by the plugin, and is cleared from the panel after connection. Set ROBLOX_STUDIO_BRIDGE_TOKEN only when a stable local token is needed.
The panel reconnects after a server restart while the token stays the same. If the server generates a new token, select Connect with that token. Only one Studio session can own a bridge connection. Update the server and the plugin together.
What the bridge exposes
Bounded hierarchy and property inspection.
SceneSpec map builds and graybox passes.
Terrain generation through Studio APIs.
Batched create, set, ensure, and delete operations inside managed roots.
Camera control and viewport raycast probes for visual checks.
Doors, buttons, elevators, teleporters, checkpoints, and scoped runtime scripts.
Geometry validation, map-readiness contracts, trusted ModuleScript tests in actual Run or Play mode, and Studio output.
Private binary model backups and native viewport-only PNG captures.
Rojo projects under
generated/rojo/<mapName>whencodegen.targetisrojoorboth.
The full MCP tool list and protocol are documented in docs/protocol.md. SceneSpec fields are defined in docs/scene-spec.schema.json.
Map workflow
Run
studio_pingand inspect the relevant place hierarchy.Build a SceneSpec rooted at
Workspace/MapDrafts.Run
map_apply_scene_specwithdryRun=true.Review the target root, object count, touched services, scripts, filesystem writes, terrain, and risks.
Apply with
dryRun=false.Run
map_validateon the returned map root with strict geometry enabled.Run
map_readiness_checkfor playable builds.Inspect several camera angles, playtest interactions, read Studio output, and patch concrete failures.
Start with examples/simple-obby.scene.json for a minimal spec or examples/vertical-bazaar.scene.json for a layered map. Every apply writes a filesystem manifest under logs/manifests/ and a SceneManifest value under the generated map root.
Gameplay Example
Cash Cleaner contains the server runtime, production-state logic, and executable tests from a real tycoon map. The example fixes abandoned ownership, lost in-process inventory, and duplicate completion payouts, then adds live station countdowns and next-step feedback. Eight gameplay checks passed in Studio through MCP with 13 active prompts and four station displays.
Use studio_export_model to save a managed build root under generated/exports before a repair. Use studio_run_test with a reviewed test ModuleScript and confirmToken="RUN_STUDIO_TEST" to exercise behavior. Tests execute project code, not sandboxed code.
For images, select Allow viewport capture in the plugin panel once, then call studio_capture_viewport. Images stay under generated/captures. The tool never opens permission dialogs or captures desktop panels. Check in-world text before publishing a frame.
Build evolution
These are cropped Roblox viewport frames from real iterations. Desktop chrome, chats, usernames, paths, tokens, and unrelated files are excluded.
V1 first pass | V4 exterior pass |
|
|
V4 balcony | V4 window and chimney |
|
|
Safety
The HTTP bridge binds to loopback only; the Studio plugin rejects non-loopback hosts.
Every plugin endpoint except minimal health status requires the shared token.
Poll credentials are sent in a POST body, not a URL.
Dangerous Luau execution is disabled by default and filtered again in Studio.
Deletes require
DELETE_MAP_DRAFTSand remain limited to managed build roots.External asset IDs require an explicit allowlist.
Command logs redact tokens, source, code, cookies, passwords, and confirmation values.
Studio changes use
ChangeHistoryServicerecording with a waypoint fallback.
See docs/safety.md for the full boundary.
Final result
The same workflow can move from an early blockout to a connected, interactive Roblox place, then keep repairing it from validation and playtest feedback:
Latest playtest | Latest station detail |
|
|
Development
npm install
rokit install
npm run check
npm run validate:skill
npm run test:plugin
npm run test:examplecheck runs the TypeScript build and HTTP/tool tests. test:plugin builds the .rbxm, compiles its Luau modules, and runs scene and transport regressions in Lune. It does not replace an in-Studio visual or playtest check.
Pull requests receive automatic reviews from CodeRabbit and Sourcery. GitHub CodeQL scans JavaScript and TypeScript changes, while Dependabot opens grouped weekly dependency updates and immediate security-fix PRs. Automated suggestions still need to be verified against the tests and the Roblox Studio safety boundaries.
More detail: Contributing, Protocol, Safety, Troubleshooting, and Changelog.
Available Tools
25 toolsmap_apply_scene_specC
Dry-run or apply a SceneSpec map into Workspace/MapDrafts.
Inputs: sceneSpec (required), dryRun.
map_create_blockoutC
Create or dry-run a greybox blockout from a SceneSpec.
Inputs: sceneSpec (required), dryRun.
map_readiness_checkB
Run final visual-readiness contract checks for generated maps after map_validate.
Inputs: rootPath (required), profile, expectedMapVersion, requireVisibleVersion.
map_refine_visualsA
Refine generated map visuals without changing gameplay layout.
Inputs: style (required), mapRootPath (required), notes, dryRun.
map_validateC
Validate generated map safety and geometry. This is not a final visual readiness check.
Inputs: rootPath, maxObjects, strictGeometry, terrainClearance, +1 more.
studio_capture_viewportB
Capture only the Roblox 3D viewport as a private local PNG without desktop or Studio panels. Never opens a permission prompt.
Inputs: width, height.
studio_create_instanceC
Create an allowed Instance class under a requested parent path.
Inputs: name (required), className (required), parentPath (required), properties.
studio_delete_instancesC
Delete Instances. Requires confirmToken; intended for generated content.
Inputs: paths (required), confirmToken, requireConfirmToken.
studio_execute_luauC
Execute Luau in Studio only when explicitly enabled by config.
Inputs: code (required), reason (required), timeoutMs.
studio_export_modelB
Save a managed build root as a private local binary Roblox model under generated/exports.
Inputs: rootPath (required).
studio_find_instancesB
Find Instances by name, className, tag, or path prefix.
Inputs: name, tags, limit, className, +2 more.
studio_focus_instanceC
Focus the Studio viewport camera on an Instance from a named direction.
Inputs: instancePath (required), view, distance, fieldOfView.
studio_get_cameraA
Read the current Roblox Studio viewport camera state.
Inputs: no named parameters.
studio_get_propertiesC
Read serialized properties for a single Instance.
Inputs: instancePath (required), propertyNames (required).
studio_get_treeC
Read a bounded Instance tree from Roblox Studio.
Inputs: depth, rootPath, includeProperties.
studio_patch_instancesC
Apply a batch of create, set, ensure, and delete operations inside managed generated roots.
Inputs: operations (required), confirmToken, requireConfirmToken.
studio_pingA
Check local Roblox Studio plugin status and return version, place, and connection state.
Inputs: no named parameters.
studio_read_outputC
Return recent output lines mirrored by the Studio plugin.
Inputs: lines.
studio_run_testB
Execute trusted project test code in Studio Run or Play mode with timeout cleanup. Requires RUN_STUDIO_TEST confirmation. Not a sandbox. The managed ModuleScript must return a function.
Inputs: modulePath (required), confirmToken (required), args, mode, +1 more.
studio_set_cameraC
Move the Roblox Studio viewport camera to inspect generated content.
Inputs: focus, cframe, lookAt, position, +1 more.
studio_set_propertiesC
Set validated serialized properties on one Instance.
Inputs: properties (required), instancePath (required).
studio_start_playtestB
Ask Studio plugin to start playtest, or return a manual fallback.
Inputs: no named parameters.
studio_stop_playtestB
Ask Studio plugin to stop playtest, or return a manual fallback.
Inputs: no named parameters.
studio_visual_probeC
Set the Studio camera and raycast a viewport grid to report visible hit parts.
Inputs: rows, aspect, cframe, lookAt, +4 more.
terrain_generateC
Generate terrain through Roblox Terrain API via the Studio plugin.
Inputs: size (required), seed, biome, caves, +4 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 25 tools
Most tools target distinct resources or actions, but several map-lifecycle tools overlap (apply_scene_spec vs create_blockout, validate vs readiness_check) and batch instance operations partially duplicate single-instance create/set/delete. Descriptions mostly clarify the boundaries, so misselection risk is moderate rather than severe.
All tool names use snake_case with consistent studio_/map_/terrain_ prefixes, making the convention easy to follow. Minor deviations exist: map_readiness_check is a noun phrase while neighboring map tools use verb_noun, and studio_ping/visual_probe are less action-specific.
25 tools is at the heavy end of the acceptable range, spanning instance CRUD, camera control, map lifecycle, testing, terrain, export, and diagnostics. Each maps to a plausible operation, but the breadth makes the surface feel borderline rather than tightly scoped.
The set covers full instance CRUD plus batch patching, camera/viewport inspection, playtest/test execution, map generation/validation, export, terrain, and diagnostics. Gaps are minor—no obvious place save/publish or instance duplication workflow—but agents could work around via execute_luau.
Maintenance
Related MCP Connectors
Make games with AI: one MCP server that connects your agent to Unity, Unreal and Godot editors.
Connect AI agents to Flato's editable canvas runtime through a hosted MCP server.
One connector for 15,000+ MCP servers plus your team's private MCPs, from any AI client.
Create guides as MCP servers to instruct coding agents to use your software (library, API, etc).
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI agents to execute Lua code, inspect scripts, spy on remotes, and interact with a running Roblox game client through an MCP interface.1822129 npm1MIT
- AlicenseNot gradedqualityCmaintenanceBridges coding agents with Roblox Studio, enabling inspection, generation, editing, and validation of Roblox places through natural language.MIT
- AlicenseNot gradedqualityDmaintenanceA production MCP integration that lets AI agents control Roblox Studio to autonomously build, test, and debug Roblox games. Provides 39 tools for explorer control, script management, terrain generation, and autonomous testing.3MIT
- AlicenseNot gradedqualityAmaintenanceMCP server that enables AI agents to interact with a running Roblox game client, including code execution, script inspection, remote spying, and GUI automation.129 npm7MIT




