Skip to main content
Glama
roblox-studio-bridge MCP
by swlittles

roblox-studio-bridge MCP

An MCP server that lets an agent drive Roblox Studio: run Luau in any DataModel, sync a Rojo project into the open place, start solo or multiplayer play tests, read Output, inspect GUIs and see the game.

How it works

agent ──MCP stdio──▶ server.mjs ──▶ bridge.mjs (HTTP 127.0.0.1:44777) ◀──long-poll── StudioBridge plugin
                                                                          ├─ edit DataModel
                                                                          ├─ play-test server
                                                                          └─ play-test clients (relayed via the server)
  • Plugin (plugin/StudioBridge.server.luau): a small bootstrap. In edit mode it downloads plugin/Core.luau from the bridge, so reload_plugin applies core changes without restarting Studio. Play-test DataModels use the copy bundled into the plugin.

  • Play-test clients cannot use HttpService, so the server session relays their traffic through a RemoteEvent, with large results sent in chunks.

  • Code execution: loadstring in edit mode. Play-test server and clients have no loadstring, so the bridge compiles the code with a pinned Luau 0.700 compiler (bin/luau-compile-bc6) and the bundled Fiu VM runs the bytecode.

  • Screenshots: by default screenshot captures the real Studio window with bin/studio-snap (macOS, needs Screen Recording permission for the app hosting the agent). If Studio is on another Space behind a full-screen app, it is brought forward for about a second and the previous app is restored.

  • Software render fallback (mode: "render"): Studio's StudioCaptureService is feature-flagged off in current builds, and CaptureService captures can't be read back. The plugin falls back to a software raycast renderer (sun/moon plus point and spot lights with shadows, fog and sky), then overlays the visible GUI with the same z-order and clipping rules Roblox uses. It also renders ViewportFrame contents and returns every visible text string with its position. It works in edit mode, on the server and on each client, with no screen access.

Related MCP server: Roblox Studio MCP Server

Tools

Tool

Purpose

studio_status

Connected sessions (edit, server, client:<Player>)

run_luau

Run Luau (may yield) in edit/server/client[:name|n]; returns prints + return values

get_logs

Output from all sessions, filter by target/level/text, page with since

screenshot

Real Studio window capture (default), or mode:"render" software render of a session; optional camera {position, lookAt, fov, release}, title, width

list_gui

A client's PlayerGui tree with positions, visibility and text

sync_project

Push a Rojo project's scripts into the open place (edit mode)

start_test / stop_test

play, run, or multiplayer with 1–8 simulated clients

add_players

Add clients to a running multiplayer test

get_tree

Instance hierarchy under a path

reload_plugin

Hot-reload plugin/Core.luau in edit sessions

cli.mjs exposes the same tools from a shell (node cli.mjs status, node cli.mjs run server < file.luau, node cli.mjs shot client out.png '{"width":800}'). If no bridge is running, it starts one in the background.

Install

scripts/setup.sh installs dependencies, the pinned compiler, the capture helper and the plugin. Register the server in any MCP client:

{ "mcpServers": { "roblox-studio": { "command": "node", "args": ["/abs/path/studio-mcp/server.mjs"] } } }

License

MIT, see LICENSE. Third-party code: see THIRD_PARTY_NOTICES.md (Fiu, MIT).

Available Tools

11 tools
add_playersB

Add simulated clients to a running multiplayer test.

Inputs: players (required).

get_logsB

Read Studio Output (LogService) captured from connected sessions. Use since with the last seq to page.

Inputs: level, limit, since, target, +1 more.

get_treeC

Describe the instance hierarchy under a path such as 'Workspace.Camp' (dot separated from game).

Inputs: path, depth, target.

list_guiA

List the PlayerGui hierarchy of a play-test client with positions, visibility and text.

Inputs: target.

reload_pluginA

Hot-reload the StudioBridge core (plugin/Core.luau) in every connected session.

Inputs: no named parameters.

run_luauA

Execute Luau in a Studio DataModel and return print/warn output plus returned values. Code may yield (task.wait). plugin is available in scope. Target: edit (default), server, client, client:<PlayerName|n>, or a session id.

Inputs: code (required), target, timeoutSec.

screenshotA

See what Studio shows. Default mode 'window' captures the real Studio window (macOS; briefly brings Studio forward if it is on another Space). Use title to pick a window (e.g. a multiplayer client's player name). mode 'render' asks a session (target: edit|server|client[:name]) for a software raycast render with GUI overlay and a GUI text listing; it works without screen access and can move the camera first: camera={position:[x,y,z], lookAt:[x,y,z], fov?, release?}. In window mode camera is applied to the target session before capturing.

Inputs: mode, title, width, camera, +4 more.

start_testA

Start a Studio test from the edit DataModel. mode: play (solo, default), run (server only), multiplayer (players 1-8 simulated clients). Waits until the server and client sessions connect.

Inputs: mode, players, waitSec.

stop_testA

End the running Studio test session.

Inputs: no named parameters.

studio_statusA

List connected Roblox Studio sessions (edit DataModel, play-test server and each play-test client).

Inputs: no named parameters.

sync_projectA

Push scripts from a Rojo project file into the open place (edit mode only). Creates/updates scripts and folders, removes previously synced instances that no longer exist on disk.

Inputs: project (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 11 tools

    Disambiguation5/5

    Each tool targets a distinct capability: session listing, code execution, logs, screenshots, project sync, test lifecycle, GUI inspection, plugin reload, and tree traversal. Even where run_luau returns print output, get_logs is clearly the historical log reader, so no two tools are easily confused.

    Naming Consistency4/5

    Most tools follow a clear verb_noun snake_case pattern such as run_luau, start_test, stop_test, add_players, and get_tree. Minor deviations like studio_status (noun phrase) and screenshot (single word without object) keep it from being perfectly consistent.

    Tool Count5/5

    Eleven tools is well within the ideal range for a domain-specific server, and each tool covers a meaningful part of the Roblox Studio workflow without redundancy or bloat.

    Completeness5/5

    The surface covers session discovery, arbitrary Luau execution, log access, visual inspection, project syncing, test lifecycle management, simulated players, GUI hierarchy listing, and instance tree traversal. run_luau also provides a powerful escape hatch for any specialized operation not explicitly exposed.

    Maintenance

    ActivitySlowing
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      Enables AI coding tools to control Roblox Studio for workspace exploration, instance manipulation, and script management. It provides tools for playtesting, scene rendering, and integration with the Roblox Creator Store.
      6
      9
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI assistants to explore, edit, and automate Roblox Studio sessions locally, including browsing instance hierarchies, reading and modifying scripts, manipulating properties, creating instances, building terrain, and running playtests.
      1,020 npm
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Enables AI agents to drive a running Roblox Studio in real time over a single WebSocket, executing whole Luau programs, installing in-engine controllers, hot-patching scripts during live playtests, and receiving errors, assertions and other events as pushes. It also reaches Roblox Open Cloud for the open place and answers visual questions via a vision sidecar, exposing all of this through nine MCP tools.
      9
      1
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      Enables a bot to inspect, query, create, edit, and script Roblox Studio instances in token-cheap batches, plus run Luau, playtests, screenshots, and inputs through Roblox's official Studio MCP connection. It runs locally over stdio or an authenticated local HTTP endpoint, returning small structured answers instead of dumping whole games into context.
      8
      MIT