Roblox Studio MCP provides first-class tools for managing playtest lifecycle directly from an AI agent.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Chrrxs/robloxstudio-mcp/llms.txt
Use this file to discover all available pages before exploring further.
solo_playtest handles single-player start/stop/status with a clean action model, while multiplayer_playtest orchestrates multi-client StudioTestService sessions. Alongside lifecycle control, a suite of simulation and device tools lets you apply network condition presets, inspect the device simulator, and capture screenshots across multiple device profiles — all from a single agent loop without manually clicking the Studio toolbar.
solo_playtest
Starts, stops, or inspects a single-player Studio playtest. Returns a brief lifecycle status; use get_runtime_logs to read script output after the playtest is running.
Lifecycle action to run. One of:
"start"— starts a single-player playtest. Requiresmode."stop"— stops the playtest and waits for all runtime peers (server, client) to disconnect."status"— returns the currently active runtime roles without changing state.
Required when
action="start". One of:"play"— starts in Play mode (spawns a character, connects a local client)."run"— starts in Run mode (server-only, no local player character).
Maximum seconds to wait for start readiness or stop teardown. Defaults:
start → 60 seconds, stop → 15 seconds.Which connected Studio place to target. Required when multiple places are connected; omit when only one is open. Use
get_connected_instances to list available IDs.Ordinary start → eval → stop workflows do not need
reset_simulation_state. Reserve simulation resets for tasks that explicitly involve network condition testing or device simulator state.Typical solo workflow
Start the playtest
Call
solo_playtest with action="start" and mode="play". The tool waits until server and client peers are registered and ready.Evaluate server state
Call
eval_server_runtime to inspect live game state, or eval_client_runtime to inspect the client.multiplayer_playtest
Starts or inspects a StudioTestService multiplayer playtest with one or more client windows. Returns brief lifecycle status only; read script output with get_runtime_logs.
Lifecycle action to run. One of:
"start"— starts a multiplayer test. RequiresnumPlayersandforce=true."status"— inspects current StudioTestService state and registered peers."add_players"— adds more client players to a running test. RequiresnumPlayers."leave_client"— disconnects a specific client. Usestargetto specify which client."end"— disabled. Returns theStudioTestService:EndTestbroken-API reason. Close test windows manually.
Required for
action="start" and action="add_players". Number of client players to start or add (1–8).Required for
action="start". Pass true only after acknowledging that MCP cannot stop a multiplayer test via StudioTestService:EndTest (known Roblox regression) and that test windows must be closed manually.Client to disconnect for
action="leave_client". For example, "client-1" (default), "client-2", etc.For
action="start": a JSON-compatible table passed to StudioTestService:GetTestArgs() on the server and each client.Maximum seconds to wait for peer detection or action completion. Defaults to 30 seconds.
Which connected Studio place to target. Required when multiple places are connected; omit when only one is open.
Network Simulation
set_network_profile
Applies simulated network conditions to active playtest client peers via NetworkSettings in plugin context. Requires a running playtest.
Network condition preset:
"great"— 30 ms total latency (15 ms each direction), 0 ms jitter, 0% packet loss."good"— 100 ms total latency (50 ms each direction), 10 ms jitter, 0% packet loss."poor"— 300 ms total latency (150 ms each direction), 100 ms jitter, 0.5% packet loss."custom"— applies only the numericoverridesyou provide.
Client target:
"client-1" (default), "client-2", etc., or "all-clients" to apply to every connected playtest client.Optional exact
NetworkSettings property overrides. For preset profiles, these replace preset fields; for "custom", only these properties are applied. Fields:InboundNetworkMinDelayMs— server-to-client minimum latency in milliseconds.OutboundNetworkMinDelayMs— client-to-server minimum latency in milliseconds.InboundNetworkJitterMs— server-to-client jitter in milliseconds.OutboundNetworkJitterMs— client-to-server jitter in milliseconds.InboundNetworkLossPercent— server-to-client packet loss percentage (max 0.5%).OutboundNetworkLossPercent— client-to-server packet loss percentage (max 0.5%).
Which connected Studio place to target.
get_simulation_state
Inspects the current NetworkSettings and/or StudioDeviceSimulatorService state for the edit context and connected clients. Server peers are always skipped.
State to inspect:
"network", "deviceSimulator", or "both" (default).Scope:
"edit-and-clients" (default), "edit", "all-clients", or "client-N". Server peers are never included.Which connected Studio place to target.
reset_simulation_state
Resets NetworkSettings and/or StudioDeviceSimulatorService to a clean baseline. Network reset sets all six simulated NetworkSettings fields to 0; device reset calls StopSimulationAsync().
Scope:
"edit-and-clients" (default), "edit", "all-clients", or "client-N". Server peers are skipped.Reset simulated
NetworkSettings fields to 0 (default true).Stop device simulation via
StopSimulationAsync() (default true).Which connected Studio place to target.
Device Simulator
get_device_simulator_state
Inspects StudioDeviceSimulatorService state and the list of supported built-in device presets. Defaults to target="edit". When no simulated device is active, isSimulating=false and active-only fields are omitted.
"edit" (default) or a regular playtest client like "client-1". Server targets are rejected.Optional built-in device preset ID to inspect in detail via
GetDeviceInfoAsync.Include the full built-in device preset list from
GetDeviceListAsync (default true).Which connected Studio place to target.
set_device_simulator
Sets or stops StudioDeviceSimulatorService using built-in device presets. Applies deviceId first, then optional overrides for orientation, resolution, pixel density, and scaling mode.
"edit" (default), "client-1", "client-2", etc., or "all-clients". Server targets are rejected.Built-in device preset ID from
get_device_simulator_state.ScreenOrientation enum name, e.g. "LandscapeRight", "LandscapeLeft", "Portrait", or a full Enum.ScreenOrientation.* string.Optional resolution override:
{ width: number, height: number } in pixels.Optional positive pixel density override applied after the device preset.
DeviceSimulatorScalingMode enum name, e.g. "ScaleToPhysicalSize", or a full Enum.DeviceSimulatorScalingMode.* string.Stop device simulation. When
true, do not pass other simulator setters.Which connected Studio place to target.
capture_device_matrix
Applies up to 6 ordered device simulator settings, captures a viewport screenshot for each, then restores the previous simulator state. Useful for visual regression checks across multiple device profiles in a single agent call.
Ordered device capture entries (max 6). Each entry may include:
label— optional string label included in screenshot metadata.deviceId— built-in device preset ID.orientation—ScreenOrientationenum name or full string.resolution—{ width, height }override.pixelDensity— positive density override.scalingMode—DeviceSimulatorScalingModeenum name or full string.
"edit" (default) or a regular playtest client such as "client-1". all-clients and server targets are rejected.Screenshot format:
"jpeg" (default, compact) or "png" (lossless).JPEG quality 1–100 (default 92). Ignored for PNG.
Seconds to wait after applying each simulator entry before capturing (default 0.3).
Restore the previous simulator state after the matrix finishes (default
true). Custom active devices are not preserved.Which connected Studio place to target.