ZenMCPRoblox
A secure local AI controller for Roblox Studio that connects AI chat websites to Roblox via an authenticated bridge, enabling inspection, debugging, and modification of places through natural language.
README
<div align="center"> <img src="extension/assets/icon-256.png" width="180" alt="ZenMCPRoblox icon"> <h1>ZenMCPRoblox</h1> <p><strong>A secure local AI controller for Roblox Studio.</strong></p> <p>ChatGPT, DeepSeek, Gemini, Kimi, Z.ai/GLM, Qwen, Arena, or Meta AI → authenticated local bridge → MCP controller → Roblox Studio</p> </div>
[!IMPORTANT] ZenMCPRoblox is an independent community project. It is not affiliated with, endorsed by, or an official product of Roblox Corporation, OpenAI, Google, DeepSeek, Moonshot AI, Alibaba, Meta, LMSYS/Arena, Z.ai, Chrrxs, or ZeroScript.
What it does
ZenMCPRoblox connects supported AI chat websites to Roblox Studio without giving
web pages unrestricted access to your computer. It combines a Chromium extension,
an authenticated localhost bridge, a security-gated controller, and the current
@chrrxs/robloxstudio-mcp backend.
The controller can dynamically discover the backend's current tools, inspect and edit places, route calls to multiple Studio instances, run playtests and debugging workflows, keep change history, invoke Studio undo, and retrieve official Roblox documentation for the AI.
Two frontend modes use the same browser-independent controller:
- Browser mode: AI website → ZenMCP extension → local bridge → controller.
- Native MCP mode: compatible MCP client → ZenMCP stdio server → controller.
Highlights
- Strict structured action protocol; ordinary AI prose is never executed.
- Localhost-only WebSocket bridge with token authentication.
- Safe Mode blocks writes; Edit Mode must be enabled explicitly.
- Dynamic discovery of upstream MCP commands and schemas.
- Multi-Studio discovery and
instance_idrouting. - Change history and rollback through Roblox Studio undo.
- Debug, playtest, runtime-log, and asset-security workflows.
- Official Roblox API retrieval through upstream
get_roblox_docs. - Generated models are moved from mandatory upstream staging into
Workspace. - Automatic plugin installation/update where supported upstream.
- Reconnecting Manifest V3 extension with heartbeats and background recovery.
- Custom draggable and collapsible panel on supported AI websites.
- Native stdio MCP adapter for future browser-independent integrations.
Architecture
Browser mode
AI chat website
│ strict <zenmcp-action> JSON
▼
ZenMCPRoblox Chromium extension
│ authenticated WebSocket on localhost
▼
ZenMCP local bridge
│ validated requests, permissions, history
▼
ZenMCP controller
│ MCP over stdio
▼
@chrrxs/robloxstudio-mcp
│ upstream Studio plugin transport
▼
Roblox Studio
Native mode
MCP client ──stdio──▶ ZenMCP controller ──MCP──▶ Roblox Studio backend
Results travel back through the same stack. The controller does not depend on an AI website's DOM; provider-specific browser code is isolated in the extension.
Supported browser providers
| Provider | Website | Adapter status |
|---|---|---|
| ChatGPT | chatgpt.com |
Supported |
| DeepSeek | chat.deepseek.com |
Supported |
| Gemini | gemini.google.com |
Supported |
| Kimi | kimi.com |
Supported |
| Z.ai / GLM | chat.z.ai |
Supported |
| Qwen | chat.qwen.ai |
Supported |
| Arena | arena.ai |
Supported; use a single/direct chat mode |
| Meta AI | meta.ai |
Supported |
AI websites can change their interfaces without notice. A site update may require its selector profile to be updated even though the controller and Roblox integration remain unaffected.
Requirements
- Node.js 20 or newer.
- npm and npx.
- Roblox Studio.
- Chrome, Chromium, or a compatible Manifest V3 browser.
- A Roblox place open in Studio.
- Allow HTTP Requests enabled in Studio under Game Settings → Security.
Installation
From the directory containing this project:
cd ZenMCPRoblox
npm install
npm run setup
Setup performs the following operations:
- Checks Node.js, npm, and npx.
- Installs or updates
@chrrxs/robloxstudio-mcp@latest. - Generates
.zenmcp/config.jsonwith a random local bridge token. - Builds the TypeScript controller and browser extension.
- Installs or updates the matching upstream Roblox Studio plugin.
- Runs connection diagnostics.
Fully close and reopen Roblox Studio after the plugin is first installed or updated.
Load the browser extension
- Open
chrome://extensions. - Enable Developer mode.
- Select Load unpacked.
- Select
ZenMCPRoblox/dist/extension/. - Pin ZenMCPRoblox to the browser toolbar if desired.
The generated dist/extension/config.json contains your local bridge token. It is
ignored by Git and must not be published or shared.
Everyday use
Start everything ZenMCPRoblox controls with one command:
npm run start
Keep that terminal open. Then:
- Open a place in Roblox Studio and wait for the MCP plugin to connect.
- Open a supported AI website and refresh the tab after extension updates.
- Open the ZenMCP popup and verify the bridge, backend, and Studio statuses.
- Leave Safe Mode enabled for inspection, or enable Edit Mode for writes.
- Click Start session in the floating ZenMCP panel.
- Ask the AI to inspect, debug, test, or modify the open place.
Drag the floating panel by its header. Its position is remembered independently for each provider. Chrome's toolbar popup itself is browser-anchored and cannot be moved by an extension.
Commands
| Command | Purpose |
|---|---|
npm run setup |
Update dependencies/backend, install the plugin, build, diagnose |
npm run start |
Start the upstream backend, controller, and localhost bridge |
npm run doctor |
Check Node, configuration, build, plugin, bridge, and Studio |
npm run build |
Compile TypeScript and build dist/extension/ |
npm test |
Run unit and local integration tests |
npm run test:live |
Run the opt-in real Studio read/edit/rollback test |
npm run mcp |
Expose ZenMCP as a native stdio MCP server |
npm run safe |
Persist Safe Mode for the next process start |
npm run edit |
Persist Edit Mode for the next process start |
The same CLI is available after installation through commands such as:
npm exec zenmcp -- doctor
npm exec zenmcp -- start
npm exec zenmcp -- mcp
Safe Mode and Edit Mode
Safe Mode is the default. Known reads such as hierarchy inspection, documentation retrieval, searches, and status checks are allowed. Write, destructive, playtest, import, upload, and unfamiliar newly discovered commands are blocked.
Edit Mode allows controller-classified writes. It does not enable arbitrary OS commands or JavaScript evaluation in the browser. Unknown future upstream commands fail closed as writes until ZenMCP can classify them safely.
Browser protocol
The extension accepts only an exact block like this from the current AI session:
<zenmcp-action>
{"v":1,"id":"session-nonce:1","method":"tools/call","params":{"name":"get_place_info","arguments":{}}}
</zenmcp-action>
Security checks include:
- A random per-session action ID prefix.
- Exact protocol version and method allowlist.
- Schema validation and rejection of extra fields.
- No
eval, arbitrary JavaScript, shell, or unrestricted file command. - Authenticated local bridge requests with request IDs and timeouts.
- Rate limiting, payload limits, heartbeat checks, and structured errors.
- Asset URL/path validation.
- Controller-side Safe/Edit enforcement regardless of what the page requests.
Roblox documentation
The upstream backend exposes get_roblox_docs and get_roblox_skills tools.
ZenMCP instructs the AI to consult these before assuming uncertain Roblox classes,
members, services, or Luau behavior. The popup and floating panel also link to the
official Roblox Engine API reference.
Upstream updates
ZenMCP discovers the installed backend's tool catalogue every time it starts. The browser fetches the current catalogue each time Start session is pressed.
To install a newly published Chrrxs backend and matching plugin:
# Stop npm run start first
npm run setup
# Fully restart Roblox Studio if the plugin changed
npm run start
Ordinary added, removed, or schema-updated upstream tools require no extension change. A breaking MCP protocol change or rename of a command used by a ZenMCP composite may require a ZenMCP compatibility update.
Generated model placement
The upstream generate_model operation intentionally stages generated models
under game.ServerStorage.__MCPGeneratedModels. ZenMCP preserves that required
generation step, then reparents a successful result into game.Workspace and
returns its final Workspace path.
Multi-Studio routing
Multiple connected places are discovered through the upstream backend. When more
than one place is open, use get_connected_instances and supply the intended
instance_id. ZenMCP forwards that identifier through normal and composite tools.
History and rollback
Write attempts are recorded as JSON Lines under .agent-history/. This directory
is local and ignored by Git. zen_rollback calls the upstream undo tool, which
uses Roblox Studio's change history. Rollback means undoing the most recent Studio
change, not replaying an arbitrary historical snapshot.
Troubleshooting
ERR_CONNECTION_REFUSED on port 39393
Nothing is listening on the configured bridge port. Run and keep open:
npm run start
Then open http://127.0.0.1:39393/health. A running bridge returns JSON.
Bridge connected, Studio offline
- Open Roblox Studio and load a place.
- Enable Allow HTTP Requests.
- Confirm the installed MCP plugin reports Connected.
- Fully restart Studio after plugin updates.
- Run
npm run doctorfor an actionable diagnosis.
Extension changed but the page looks old
- Open
chrome://extensions. - Click Reload on ZenMCPRoblox.
- Refresh every supported AI tab.
Edit Mode does not enable
Edit Mode is stored in the running controller. Verify Local Bridge and Roblox MCP are connected, then try the toggle again. The popup displays the bridge's structured error if the mode request fails.
AI site cannot find its composer or Send control
Reload the extension and refresh the page first. Provider adapters rely on each
website's current interface. If a site has changed, update its selectors in
extension/src/content/provider-profiles.js and rebuild.
Testing
npm test
The default suite covers the strict extension parser, authenticated WebSocket flow, dynamic tool discovery, Safe/Edit permissions, provider configuration, service-worker recovery, Workspace model placement, native MCP exposure, edit and rollback flow, asset validation, and extension assets.
The real Studio test is opt-in because it creates a disposable object and invokes real Studio undo:
npm run test:live
It fails rather than pretending Studio is connected when the external plugin is unavailable.
Project layout
ZenMCPRoblox/
├── extension/ Chromium extension source and icon assets
├── src/
│ ├── assets/ Asset request security
│ ├── bridge/ Authenticated localhost WebSocket bridge
│ ├── cli/ setup, start, doctor, mode, and native MCP commands
│ ├── config/ Local configuration model
│ ├── context/ Result summarization
│ ├── history/ Change history
│ ├── instances/ Multi-Studio discovery/routing
│ ├── orchestration/ Composite agent tools
│ ├── permissions/ Safe/Edit risk enforcement
│ ├── server/ Controller and application composition
│ ├── tools/ Dynamic capability registry
│ ├── types/ Shared TypeScript interfaces
│ └── upstream/ Chrrxs MCP client integration
├── tests/
│ ├── integration/
│ └── unit/
├── scripts/ Build helpers
├── .env.example
├── .gitignore
├── package.json
└── tsconfig.json
Credits and acknowledgements
Chrrxs / Roblox Studio MCP
Core Roblox Studio communication is provided by
@chrrxs/robloxstudio-mcp, created
and maintained by Chrrxs (referred to as Chris in
this project's development discussions). It supplies the MCP server, Studio
plugin, edit/runtime/playtest tools, multi-instance support, official Roblox docs
retrieval, and plugin installation workflow that ZenMCPRoblox controls and
security-gates. The upstream project is MIT licensed.
ZenMCPRoblox depends on the published npm package and does not claim authorship of the Chrrxs backend or Studio plugin.
ZeroScript-Free
The concept of isolating website-specific AI adapters behind a provider-neutral
browser agent loop was inspired by
ZeroScript-Free, created and
maintained by sebattfg. ZeroScript demonstrated
practical browser support for DeepSeek, Gemini, Kimi, GLM, Qwen, Arena, and Meta
AI communicating with Roblox Studio through a local bridge.
ZeroScript-Free is GPL-3.0 licensed. ZenMCPRoblox's implementation is independent: the ZeroScript repository is used only as an excluded local reference during compatibility research, and its source is not copied or redistributed in this project.
Roblox documentation
Roblox API guidance is sourced from the Roblox Creator documentation and its Engine API reference.
Thank you to these maintainers and communities for making this project possible.
License and third-party notices
Original ZenMCPRoblox materials are distributed under the proprietary ZenMCPRoblox Reference-Only License. You may link to, cite, discuss, review, and learn from the project's ideas, but you may not copy, modify, redistribute, republish, create derivative works from, or incorporate its code, assets, documentation, or other copyrightable expression without separate prior written permission. This is not an open-source license.
Selling ZenMCPRoblox is prohibited. This includes paid downloads, subscriptions, paywalled access, marketplace listings, monetized hosting, paid bundles, rebranded copies, commercial derivatives, and donations tied to receiving or using the software. Only a separate written agreement from the copyright holder can authorize commercial use.
Copyright protects source-code expression rather than underlying ideas, methods, or systems. Clean, independently written implementations of general ideas are permitted by the license as long as they do not copy ZenMCPRoblox's protected expression.
@chrrxs/robloxstudio-mcp: MIT License; see its upstream repository/package.- ZeroScript-Free: GPL-3.0; credited as architectural inspiration only.
- Roblox and Roblox Studio are trademarks of Roblox Corporation.
- Other product and company names belong to their respective owners.
Review dependency licenses before redistributing binaries or making this repository public.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。