Roblox Studio MCP exposes three tools that bridge visual and interactive testing inside a live playtest: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.
capture_screenshot captures the Studio viewport at native resolution and returns it as an image; simulate_mouse_input fires real UserInputService mouse events at viewport coordinates; and simulate_keyboard_input drives the game’s input pipeline with keystrokes, held keys, or typed text. The screenshot and the input coordinate space are intentionally aligned — read click positions directly off the captured image and pass them straight to simulate_mouse_input without any coordinate translation.
capture_screenshot
Captures the Roblox Studio viewport at native resolution and returns it as an image along with the exact pixel dimensions. In Edit mode the viewport is captured as-is. During a regular playtest the tool auto-detects the running client and captures the live play viewport.
Image format:
"jpeg"(default) — compact and sharp at high quality. Good for most UI and 3D scene captures."png"— lossless. Best for reading dense text or fine UI elements; may be significantly larger for complex 3D scenes.
JPEG quality 1–100 (default
92). Higher values produce sharper text and larger files. Ignored when format="png".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.Requirements:
- The
EditableImageAPI must be enabled: Game Settings → Security → Allow Mesh / Image APIs. - The Studio window must be visible (not minimized).
- StudioTestService multiplayer client screenshots are currently blocked by Roblox temporary-texture process scoping. The tool returns a clear error in that case.
simulate_mouse_input
Simulates a mouse event in the running game via UserInputService:CreateVirtualInput. Fires real UserInputService input, activates GUI buttons, and interacts with 3D objects. Only works during a playtest.
Mouse action:
"click"— executesmouseDown+ a short delay +mouseUp."mouseDown"— mouse button down only."mouseUp"— mouse button up only.
Viewport pixel X coordinate, as seen in
capture_screenshot. Top-left of the viewport is (0, 0).Viewport pixel Y coordinate, as seen in
capture_screenshot.Mouse button to use:
"Left" (default), "Right", or "Middle".Instance target. Defaults to the running playtest client (
"client-1") when present, otherwise "edit". Override with "client-2", etc. for multiplayer tests.Which connected Studio place to target.
simulate_keyboard_input
Simulates keyboard input in the running game via UserInputService:CreateVirtualInput. Drives the real input pipeline so game scripts, character control modules, and ContextActionService bindings all respond. Only works during a playtest.
Enum.KeyCode name to press. Examples: "W", "A", "S", "D" (movement), "Space" (jump), "E" (interact), "F", "LeftShift", "LeftControl", "Return", "Tab", "Escape", "One", "Two", etc. Omit if using text instead.Key action:
"tap"(default) — press + brief wait + release. Usedurationto control how long the key is held."press"— key down only. Pair with"release"for sustained input like walking."release"— key up only.
Hold duration in seconds for the
"tap" action (default 0.1). Use longer values for sustained input — for example, duration=2 to walk forward for 2 seconds.Type this string into the currently focused
TextBox via SendTextInput. When provided, keyCode and action are ignored. Use this to fill in search boxes, chat inputs, or other text fields without pressing individual keys.Instance target. Defaults to the running playtest client (
"client-1") when present, otherwise "edit". Override with "client-2", etc.Which connected Studio place to target.
Use cases
Capturing a before/after visual comparison
Take a screenshot before and after a visual change to confirm it rendered correctly:Clicking a UI button during a playtest
Read the button position from a screenshot and click it:Take a screenshot
Call
capture_screenshot to get the current viewport. Inspect the returned image for the pixel coordinates of the button.Click the button
Call
simulate_mouse_input with action="click" and the x/y pixel coordinates from the screenshot. The click fires real UserInputService events and activates GuiButton instances.Reproducing a movement scenario during debugging
Walk the character forward for 2 seconds, then jump:press and release calls to hold multiple keys simultaneously:
Typing into a TextBox
Focus the TextBox first (click it withsimulate_mouse_input), then type:
All three input tools auto-target the running playtest client (
"client-1") when a playtest is active. If you are running a multiplayer test with multiple clients, pass target="client-2" (or the appropriate peer) to direct input at a specific client window.