Skip to main content
Glama
okenjioxx

Roblox Executor MCP Server

by okenjioxx

Execute Code in the Roblox Game Client

execute
Destructive

Runs Luau code in the active Roblox client as a fire-and-forget task, returning { scheduled: true } after scheduling without waiting for output or runtime errors.

Instructions

Execute Luau in the active Roblox client WITHOUT waiting for it to finish. The code is COMPILED FIRST via loadstring (a syntax error is returned cleanly as { error } and nothing runs), then handed to task.spawn so it runs on its own thread; this tool returns { scheduled = true } the moment the thread is started — it does NOT wait for completion and does NOT return the code's output, return value, or runtime errors. Use this for fire-and-forget side effects. When you need the value(s) your code produces, use run-luau or execute-and-wait instead. Requires loadstring and the task library (both guarded). Returns { scheduled = true } or { error }. Signature: { code: string, client: string?, agent: string?, threadContext: number?, timeoutMs: number? }. Phase: act; cost=medium; idempotency=contextual-write. Requires: active-client, explicit-mutation-approval, validated-source. Produces: operation-receipt. Verify with: assert-state. Safety: MUTATING; executes caller-selected behavior in the live client. On failure: inspect tool-schema for exact fields, defaults, constraints, and an invocation example.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
codeYesThe Luau code to execute in the Roblox client. Compiled with loadstring, then spawned on its own thread. This tool does NOT return output — use run-luau or execute-and-wait if you need data back.
agentNoOptional. A stable label for WHICH agent is calling when several share this MCP session (e.g. 'researcher'). Gives that agent its own fair scheduling lane, its own persistent VM on each game, and its own queue budget, so co-tenant agents don't starve or clobber each other.
clientNoOptional. Run on a specific connected client — its clientId OR username — for THIS call only, overriding your session's select-client binding without changing it. Lets multiple agents drive different games at the same time; omit to use your session's selected client.
timeoutMsNoOptional per-call deadline in milliseconds; omit it to use the tool or server default.
threadContextNoOptional Roblox thread identity for this call; omit it to use the server default.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.0.0-spies.2

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a mutating, non-idempotent, destructive write, and the description still adds real context beyond them: compilation via loadstring before any run, syntax errors returned as { error } with nothing executed, execution on a task.spawn thread, the exact return shape { scheduled = true }, and the loadstring/task library requirement. It also flags the mutating nature and required approvals.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core behavior distinction and every sentence carries information, but the trailing metadata block (Phase/cost/idempotency/Requires/Produces/Verify/Safety) is dense boilerplate that partly duplicates the annotations and LOADSTRING info already stated earlier.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description fully specifies the return contract ({ scheduled = true } or { error }), the failure path, and where to look for exact fields. For a single-required-param mutating tool, nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already carries parameter meaning (agent/client/timeoutMs/threadContext are all documented in-schema). The description's inline signature restates the field names but adds no semantics beyond what the schema provides, so the baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource+scope ('Execute Luau in the active Roblox client WITHOUT waiting') and explicitly differentiates itself from siblings run-luau and execute-and-wait by the fire-and-forget behavior. An agent can pick it apart from the alternatives without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('Use this for fire-and-forget side effects') and when-not ('When you need the value(s) your code produces, use run-luau or execute-and-wait instead'), naming both alternatives and the selecting condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools