Skip to content
Back to skills

Roblox Studio Mcp

ASecurity

Drive Roblox Studio from an AI agent via the built-in Studio MCP server - connecting Claude Code, Codex, Cursor, OpenCode, Gemini CLI; tools to explore the DataModel, read/edit scripts, run Luau in edit/server/client, playtest, read output, capture screenshots, simulate input, insert assets. Use when an agent should inspect, modify, or playtest an open Studio place, or to set up the connection.

  • 5 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 29, 2026
ai-agentsrustbashtestingdebuggingcode-reviewapiperformance

Works with

  • claude code
  • claude desktop
  • cursor
  • cli
  • api
  • mcp

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 29, 2026

npx -y skills add EL4CTEO/roblox-skills --skill roblox-studio-mcp --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Roblox Studio Mcp?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Roblox Studio Mcp
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/el4cteo-roblox-studio-mcp/badge)](https://www.skillsdirectory.com/skills/el4cteo-roblox-studio-mcp)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: roblox-studio-mcp
description: Drive Roblox Studio from an AI agent via the built-in Studio MCP server - connecting Claude Code, Codex, Cursor, OpenCode, Gemini CLI; tools to explore the DataModel, read/edit scripts, run Luau in edit/server/client, playtest, read output, capture screenshots, simulate input, insert assets. Use when an agent should inspect, modify, or playtest an open Studio place, or to set up the connection.
---

# Working in Roblox Studio through MCP

Roblox Studio ships a **built-in MCP server** (stdio). With it, an agent can explore the open place,
edit scripts, run Luau in edit/server/client contexts, playtest, read the Output, capture the viewport,
and simulate player input. It is the fastest way to **verify** Roblox changes instead of guessing.

## Setup

1. Latest Studio → open **Assistant** → **…** → **Manage MCP Servers** → enable **Enable Studio as MCP server**.
2. Use **Quick connect** (Claude Code, Claude Desktop, Codex CLI, Cursor, Gemini CLI, VS Code, Antigravity)
   or configure the client manually:

| OS | Command |
| --- | --- |
| macOS | `/Applications/RobloxStudio.app/Contents/MacOS/StudioMCP` |
| Windows | `cmd.exe /c %LOCALAPPDATA%\Roblox\mcp.bat` |

```bash
# Claude Code
claude mcp add Roblox_Studio -- /Applications/RobloxStudio.app/Contents/MacOS/StudioMCP
claude mcp add Roblox_Studio -- cmd.exe /c "%LOCALAPPDATA%\Roblox\mcp.bat"   # Windows
```

```json
{ "mcpServers": { "Roblox_Studio": { "command": "/Applications/RobloxStudio.app/Contents/MacOS/StudioMCP" } } }
```

Client-specific config (Codex `config.toml`, OpenCode `opencode.json`, Cursor/VS Code `mcp.json`):
[references/client-setup.md](references/client-setup.md). A green indicator in **Manage MCP Servers**
confirms the connection. Only connect clients you trust: they can read and modify your places.

## Tools

| Group | Tools |
| --- | --- |
| Session | `list_roblox_studios` (every call takes a `studio_id`), `get_studio_state` (play state, available DataModels) |
| Explore | `search_game_tree` (filter by path/class/keyword, depth), `inspect_instance` (properties, attributes, children), `script_search` (fuzzy by name), `script_grep` (text across scripts, ≤ 50 hits), `script_read` (dot path like `game.ServerScriptService.Main`, line ranges) |
| Edit | `multi_edit` (several edits to one script, creates it if missing; `datamodel_type = Edit`) |
| Run | `execute_luau` (`datamodel_type` = `Edit`, `Server`, or `Client`; returns the result or error) |
| Playtest | `start_stop_play`, `get_console_output`, `screen_capture` (optional camera position/look-at), `character_navigation`, `user_keyboard_input`, `user_mouse_input` |
| Assets | `search_asset` (Creator Store / inventory), `insert_asset`, `upload_image`, `store_image`, `generate_mesh`, `generate_material`, `generate_procedural_model` + `wait_job_finished` |
| Delegation | `subagent` (`explore` or `playtest` types for multi-step investigations) |
| Knowledge | `http_get` (Roblox docs, API reference, Cloud docs), `skill` (Roblox-authored skills: debugging, device simulation, docs search, profiling, scene analysis, unit tests) |

## The working loop

1. **Orient**: `list_roblox_studios` → pick `studio_id`; `get_studio_state`. Map the project with
   `search_game_tree` (depth-limited: services first), then `script_grep`/`script_search` for the feature.
2. **Read before writing**: `script_read` every script you'll touch and its requirers. Check for a
   Rojo/Script Sync setup (see below) before editing in Studio.
3. **Edit** with `multi_edit` (exact, minimal edits; keep existing style). Create instances/attributes/
   tags with `execute_luau` in `Edit` context — changes made this way are **real edits to the place**.
4. **Verify statically**: re-read the script; for pure modules, `execute_luau` a quick check
   (`require` the module in `Edit` and call functions).
5. **Playtest**: `start_stop_play` (start) → wait → `get_console_output` for errors → drive the scenario
   with `character_navigation` / input tools → `execute_luau` in `Server`/`Client` to assert state →
   `screen_capture` for visual checks → `start_stop_play` (stop). Always stop play when done.
6. **Report** what changed and what was verified (and what wasn't).

```luau
-- Example execute_luau (Server context during play): assert game state instead of eyeballing.
local Players = game:GetService("Players")
local results = {}
for _, player in Players:GetPlayers() do
	local leaderstats = player:FindFirstChild("leaderstats")
	local coins = leaderstats and leaderstats:FindFirstChild("Coins")
	table.insert(results, `{player.Name}: {if coins and coins:IsA("IntValue") then coins.Value else "missing"}`)
end
return table.concat(results, "\n")
```

## Rules of thumb

- `execute_luau` in `Edit` mutates the place: prefer read-only queries while exploring, and batch
  intentional changes into one clear script. Use `ChangeHistoryService` recording (`TryBeginRecording`/
  `FinishRecording`) so the user can undo your edit as one step.
- Changes made during play (Server/Client contexts) are discarded when play stops — edit in `Edit`.
- **Rojo projects**: the file system is the source of truth — edit files on disk, let Rojo sync, and use
  MCP to playtest/inspect. Editing synced scripts via `multi_edit` gets overwritten. **Script Sync**
  projects sync both ways, so either side works, but don't edit the same script in both at once.
- Keep `search_game_tree` queries narrow (path + depth); large places produce huge outputs.
- Multiple Studio windows: always pass the right `studio_id`; tell the user which place you touched.
- Inserted assets from the Creator Store can contain scripts: inspect them (`search_game_tree` +
  `script_read`) before keeping them; remove unexpected scripts (backdoors are common in free models).
- Don't claim success without evidence: cite console output, assertion results, or screenshots.

## Roblox-authored skills and conversions

Studio exposes Roblox-authored skills through the `skill` tool (e.g. `rbx-debug`, `rbx-perf-profiling`,
`rbx-scene-analysis`, `rbx-unit-test`, `rbx-docs-search`, `rbx-device-simulator-lua`). Roblox also
publishes an official **streaming conversion** skill (`/rbx-convert-to-streaming`, downloadable from the
"Techniques and conversion" streaming docs) that runs through this MCP server; back up the place first.

## Related skills

`roblox-testing` (test runners), `roblox-performance` (profiling), `roblox-tooling` (Rojo/Script Sync),
`roblox-architecture` (where things belong), `roblox-code-review`.

Files in this skill

  • SKILL.md6.4 KB
  • references/client-setup.md2.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.