Enables AI assistants to inspect the Roblox game hierarchy, read client-side script source code, retrieve instance properties, and execute Lua code directly within a running Roblox client through a WebSocket bridge.
Roblox MCP Server
A Model Context Protocol (MCP) server that acts as a bridge between AI assistants (like Claude/Gemini in IDEs) and a running Roblox instance. This allows the AI to inspect the game hierarchy, read scripts, and execute code directly within the Roblox client.
Architecture
The system consists of two parts:
MCP Server (: A Node.js application that implements the MCP specification. It hosts a WebSocket server to communicate with Roblox.
Roblox Bridge (: A Lua script that runs inside a Roblox executor. It connects to the MCP server via WebSocket and executes commands.
Prerequisites
Node.js: v18 or higher.
Roblox Executor: A Roblox script executor that supports:
WebSocket.connect(or compatibleWebSocketlibrary).getgenv()(optional, for safe environment access).decompile(optional, for reading local scripts).
npm or yarn.
Installation
Clone the repository.
Install dependencies:
npm install
Usage
1. Start the MCP Server
You can run the server in development mode or build it for production.
Development:
The server will start listening on stdio for MCP connections and ws://localhost:3000 for the Roblox bridge.
2. Inject the Roblox Bridge
Open your Roblox Executor.
Open
roblox/Bridge.lua.Execute the script in the desired Roblox game instance.
Check the executor console (F9) for a connection message:
[MCP-Bridge] Connected!.
Available Tools
The MCP server exposes the following tools to the AI:
list_children
Lists the children of a specific instance.
Arguments:
path(string, e.g., "game.Workspace")Returns: list of
{ name, className, path }
get_properties
Retrieves the properties of a specific instance.
Arguments:
path(string),properties(array of strings, optional)Returns: Map of property names to values.
read_script
Reads the source code of a script.
Arguments:
path(string)Returns: Source code string.
Notes:
Works for
LocalScriptandModuleScript(client-side).Cannot read server-side
Scriptsource due to Roblox replication security (returns empty/error).
run_script
Executes arbitrary Lua code in the context of the bridge script.
Arguments:
code(string)Returns: Array of return values converted to strings.
Troubleshooting
Server Code Access: You cannot read server scripts from the client. This is a Roblox engine limitation, not a bug.
Connection Failed: Ensure port
3000is free and the executor supports WebSockets (most modern ones do).Executor Compatibility: If
WebSocketis not defined, check your executor's documentation. You may need a polyfill.