Tufan-Blox-Bridge
Health Warn
- License — License: NOASSERTION
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 6 GitHub stars
Code Warn
- process.env — Environment variable access in server/audit.mjs
- process.env — Environment variable access in server/blender-e2e.mjs
- process.env — Environment variable access in server/e2e-import.mjs
- process.env — Environment variable access in server/finishing-e2e.mjs
- process.env — Environment variable access in server/generate-e2e.mjs
- process.env — Environment variable access in server/get-asset.mjs
- network request — Outbound network request in server/get-asset.mjs
- process.env — Environment variable access in server/meshy-e2e.mjs
- process.env — Environment variable access in server/meshy-queue.mjs
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Roblox Studio MCP server and plugin: an add-on to Roblox's built-in Studio MCP with snapshots, two-way script sync, git, backdoor scanning, Luau linting and bulk builds for Claude Code, Cursor and any MCP client.
Tufan-Blox-Bridge: Roblox Studio MCP Server and Plugin
A free Roblox Studio MCP server and plugin that works as an add-on to Roblox's built-in Studio MCP. Connect Claude Code, Cursor or any MCP client to Roblox Studio and let your AI build, audit and version your game: 85 tools for Luau scripts, instances and properties, plus two-way file sync, git history, snapshots, a backdoor scanner, Luau linting and AI 3D-asset generation.
Keep the built-in server for play tests and screenshots. Add Tufan for everything around them.
Quick install
1 — One-line installer (run from your Roblox project folder). It checks Node ≥ 18, installs the MCP server globally (npm i -g tufan-blox-bridge), drops the Studio plugin into your Plugins folder (tufan-blox-bridge install-plugin), and auto-registers with Claude Code when the claude CLI is on PATH:
# Windows (PowerShell)
iwr https://raw.githubusercontent.com/drgost1/Tufan-Blox-Bridge/main/install.ps1 | iex
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/drgost1/Tufan-Blox-Bridge/main/install.sh | bash
2 — Point your AI client at the server (skip if the installer registered it; use forward slashes in the path):
claude mcp add tufan --env TUFAN_PROJECT=C:/path/to/your/project -- tufan-blox-bridge
For Cursor / Claude Desktop / any MCP client:
{
"mcpServers": {
"tufan": {
"command": "tufan-blox-bridge",
"env": { "TUFAN_PROJECT": "C:/path/to/your/project" }
}
}
}
Optional env: TUFAN_OPENCLOUD_KEY (Open Cloud: datastore, cloud_luau, get_server_logs, get_server_history), TUFAN_MESHY_KEY (AI 3D generation).
3 — Restart Studio and your AI client. A Tufan Studio toolbar button appears — open its widget; the pill turns green when connected.
That's it. Your AI can now drive Studio, your scripts mirror to disk, and scan_backdoors is ready.
tufantimes out / won't connect? Runclaude mcp get tufanand confirm the command istufan-blox-bridge(global install) ornpx -y tufan-blox-bridge. If an argument got dropped,claude mcp remove tufan, then re-run the add. The installer auto-verifies this.
Other install methods
- No install:
npx -y tufan-blox-bridgeorbunx tufan-blox-bridge. - Global:
npm i -g tufan-blox-bridge→ commandtufan-blox-bridge. - Plugin:
tufan-blox-bridge install-plugin(downloads the latest release's.rbxminto your Plugins folder), or manually downloadTufanBloxBridge.rbxmfrom Releases (orpwsh scripts/build-plugin.ps1 -Install).
Why add Tufan when Roblox Studio already has an MCP server?
Roblox's built-in Studio MCP is excellent at running and seeing your game. Tufan is the add-on for building it safely, keeping it versioned and keeping it clean. Install both: they cover different jobs, and Tufan tells your AI which one to use.
| You want to... | Built-in Studio MCP | Tufan add-on |
|---|---|---|
| Play test with a real character, keyboard and mouse | ✅ Use this | ➖ Left to the built-in |
| Take a screenshot of the viewport | ✅ Use this | ➖ Left to the built-in |
| Debug inside a running game | ✅ Use this | ➖ Warns the AI and points it there |
| Generate meshes, materials and scenes with Roblox AI | ✅ Use this | ➖ Has its own Meshy + Blender route |
| Checkpoint a subtree and restore it after a bad AI edit | ➖ | ✅ snapshot / restore |
| Keep scripts on disk with two-way sync | ➖ | ✅ Automatic mirror |
| Commit, diff and recover deleted scripts with git | ➖ | ✅ 12 git_* tools |
| Scan free models for backdoors | ➖ | ✅ scan_backdoors |
| Lint, type-check and format Luau | ➖ | ✅ Selene, luau-lsp, StyLua |
| Scan a place for performance and responsive UI problems | MicroProfiler analysis | ✅ scan_perf, scan_responsive, project_health |
| Build many objects in one call | By writing Luau yourself | ✅ Ready-made batch, create_tree, mass_edit |
| Read and edit live DataStores | ➖ | ✅ datastore (Open Cloud) |
| Upload local files | Images | ✅ import_file: models, audio, images (Open Cloud) |
| Keep notes on your project between AI sessions | Skills | ✅ project_context, per place |
| Let an AI explore with zero risk of changes | ➖ | ✅ TUFAN_READONLY=1 |
Six reasons to install it as an add-on
- AI edits become reversible. Snapshots, git history and
git_recovergive you a way back that outlives Studio's undo stack. - It's quick on every call. In our benchmark, running the same Luau took 17 ms through Tufan and 67 ms through the built-in server (median of 25 calls, measured November 2026 on one Windows PC; your numbers will vary). Roblox allows a plugin about 500 HTTP requests a minute, roughly 240 Tufan calls, so big jobs should use
batch; past that, calls wait rather than fail. - Free models stop being a blind risk.
scan_backdoorschecks scripts, attributes and values for hiddenrequirepayloads, obfuscation and webhooks. - Your code lives where your tools do. Scripts mirror to disk, so VS Code, Selene, luau-lsp and git all work on real files.
- Big builds stay manageable. Thousands of changes go through in a single call, without your AI writing and debugging a Luau script for each job.
- The two servers cooperate. Tufan tells your AI at connect to use the built-in server for screenshots, play tests and live debugging, and it flags any result that used the edit copy while a Play session is running.
Comparison based on each server's published tool list as of November 2026. Roblox updates its server often, so check its tool list for changes.
How the Roblox Studio plugin and MCP server fit together
Two parts over a local HTTP bridge (127.0.0.1:58741):
- MCP server (
npx -y tufan-blox-bridge) — what your AI client connects to. Exposes the 85 tools. - Studio plugin (
TufanBloxBridge.rbxm) — the in-Studio agent that executes commands and mirrors your scripts.
The AI calls a tool → the server queues a command → the plugin's long-poll picks it up → executes in Studio → returns the result. The server also handles file sync and git on your machine.
Features
- 🛠 Full Studio control — 85 tools: scripts (line-level edits + atomic multi-hunk
patch_script), instances (incl. whole-tree creation in one call), properties/attributes with full round-trip serialization (particle curves, gradients, fonts, springs), tags, tree inspection (describe= an instance's entire context in one call), Luau execution, output logs + a live error feed. - 🔄 Two-way file sync — open a place and its script tree mirrors to disk; edit a file → Studio updates, edit in Studio → the file updates.
- 🌿 Opt-in per-place git — off by default (no
.git, no headache). Turn it on in the widget and each place becomes its own repo with Commit / Push / Backup / Setup-GitHub buttons + auto-commit/push toggles. Your choice persists across restarts. - 🛡 Backdoor scanner —
scan_backdoorsfinds require-of-Value, loadstring+HttpGet, exploit APIs, Discord webhooks, obfuscation, and hidden binary payloads;list_studio_pluginssurfaces the remote-code-plugin vector. - ⏪ Snapshots —
snapshotcheckpoints any subtree before risky changes;restorebrings it back exactly. A real undo that survives across the AI boundary. - ⚡ Batch ops —
batchruns dozens of mixed operations in one round-trip and one undo entry; 40 creates = 1 call, not 40. - 📱 Responsive UI engine —
make_responsiveconverts a UI subtree Offset→Scale with a validated formula (skips draggables,dryRunpreviews);scan_responsiveaudits tree and scripts for resolution breakage and sub-44px tap targets. - 🩺 One-look audits —
project_health(full place census in one traversal),scan_perf(ranked frame-killer fix list),find_duplicates(copy-pasted script clusters). - 🧹 Luau quality gate —
format_scripts(StyLua),lint_scripts(Selene: unused vars, shadowing, deprecated APIs, footguns),typecheck(luau-lsp: type errors, undefined globals, bad require paths — before the code runs), andexport_sourcemap(Rojo-style sourcemap so luau-lsp resolvesrequires + gives IntelliSense) run the standard toolchain over your synced script mirror — host-side, no Studio round-trip. - 🗄 Live save data —
datastorereads and (gated) edits your PUBLISHED game's DataStores via Open Cloud — standard + ordered: list stores/keys, get/set/delete/increment. Read-first; writes needconfirmand warn about the ProfileStore session-lock. No Studio runtime needed. - ☁️ Run code in production —
cloud_luauexecutes server-side Luau against your published game via the Open Cloud Luau Execution API (ephemeral server, real server context,requireworks) and returns the script's return values + print logs — verify behavior against prod without joining. Gated as a write tool; DataStore/HttpService side effects are real. - 📈 Production server observability —
get_server_logsreads per-server errors/warnings with full stack traces from your LIVE game (Open Cloud Server Management), andget_server_historylists 30 days of terminated/crashed/OOM servers with status, uptime and last-known memory/fps — then drill into any server's logs, even after it shut down. - 📥 Local file import —
import_fileuploads.rbxm/.fbx/.glb/audio/images from your disk to your own Roblox account (Open Cloud) and drops them straight into the place — Models insert, audio becomes aSound, images aDecal. Your own uploads always pass the LoadAsset ownership wall. - 🧊 AI 3D-asset generation —
generate_assetturns a text prompt (or image) into a game-ready prop in your open place: Meshy AI generates it, headless Blender lints + auto-fixes it against Roblox limits (≤20k tris, ≤1024px textures — Roblox silently mangles violations otherwise), Open Cloud uploads it, it inserts as a Model, and a post-insert finishing pass makes it actually game-ready: anchored, scaled to a stud height, semantic part names (no leaked "Cube"/"Cylinder"), flat material colors recovered (Roblox drops them on import), CollisionFidelity set, traceability attributes stamped, placed flush on the ground — one undo step.previewFirst: trueshows you a rendered thumbnail of the geometry preview before the texture spend. Raw stages exposed too:meshy_generate/meshy_task(generation, remesh, credit balance) andblender_run/blender_process(headless Blender: lint, decimate, split-by-material, chunk oversized meshes, Cell-Fracture destructibles, convert, texture downscale, thumbnail render — or any custom bpy script). Credit-spend confirm gate built in. - 🔐 Your keys never leave your machine —
TUFAN_MESHY_KEY/TUFAN_OPENCLOUD_KEYlive only in your local MCP server env, are scrubbed from every error message, and are never written to any file, repo, or log by the bridge. Each user brings their own keys. - 🧭 Spatial awareness — the AI relates what it sees to coordinates:
scene_stategrounds a screenshot (every visible object's world and on-screen pixel coords via projection),pickraycasts a screen point → world hit + surface normal (identify / trace),place_oncomputes and applies a flush placement (bounding-box offset, optional align-to-surface + grid snap),objects_in_regionqueries an area. - 👥 Concurrent multi-session — run several Claude/Cursor sessions on the same Studio at once; one owns the plugin, the rest proxy through it, all commands serialized → no collisions.
- 🧠 Per-project AI memory —
project_contextis a persistent markdown blob per place that the AI reads at session start (architecture, gotchas, false-bug traps) and updates as it learns — fewer tokens wasted re-discovering the project, fewer wrong conclusions. - 🔒 Read-only / safe mode —
TUFAN_READONLY=1hides the 36 write tools; mixed tools (script_source,tag,git_branch,git_remote) stay readable with writes blocked. Zero-risk AI exploration. - 🎚 Lean core toolset —
TUFAN_TOOLSET=coreexposes only the 26 everyday tools (the power suites stay one env-var away) for smaller tool menus and sharper AI focus. - 👁 Seeing the game — by design, not ours — screenshots come from the official Studio MCP's
screen_capture, a real viewport render even when Studio is behind other windows. The server tells the AI this at connect, and flags any Tufan call that misses a running Play session.get_asset_thumbnailshows any catalog asset. - ▶️ Playtest — by design, not ours — starting, driving and probing a play session belongs to Roblox's official Studio MCP (real Play Solo with a character, keyboard/mouse input, character navigation). Tufan deliberately doesn't duplicate it: run the session there, and Tufan's
get_output_log/get_recent_errors/ officialscreen_capturestill watch it live, withis_runningtelling you edit mode from a live sim. - 🗺 Multi-place —
list_places,pull_place, andcopy_script_acrossto move a module straight from one open place into another.
Roblox Studio MCP tools (85)
| Group | Tools |
|---|---|
| Scripts | script_source · grep_scripts · edit_script_lines · patch_script · find_and_replace_in_scripts · find_duplicates |
| Instances | create_instance · delete_instance · clone_instance · move_instance · rename_instance · create_tree · history |
| Properties | get_properties · set_property · mass_edit · search_by_property · get_attributes · set_attribute · mass_set_attribute |
| Inspection | get_tree · get_descendants · search_objects · get_services · describe |
| Tags | tag · get_tagged |
| Selection | get_selection · set_selection |
| Luau / Batch | run_luau · batch |
| Logs | get_output_log · get_recent_errors · get_server_logs · get_server_history |
| Snapshots | snapshot · restore · list_snapshots · delete_snapshot |
| Responsive UI | make_responsive · scan_responsive |
| Audits | project_health · scan_perf |
| Code quality | format_scripts · lint_scripts · typecheck · export_sourcemap |
| Spatial | scene_state · pick · place_on · objects_in_region |
| Git | git_status · git_log · git_diff · git_show · git_commit · git_push · git_pull · git_restore · git_revert · git_recover · git_branch · git_remote |
| Assets | search_assets · get_asset_details · get_asset_thumbnail · search_materials · insert_asset · import_file |
| Asset pipeline | generate_asset · meshy_generate · meshy_task · blender_run · blender_process |
| Open Cloud | datastore · cloud_luau |
| Security | scan_backdoors · list_studio_plugins |
| HTTP | http_get |
| Multi-place | list_places · pull_place · copy_script_across |
| Meta | ping · is_running · project_context |
In read-only mode (TUFAN_READONLY=1) the 36 write tools are hidden (including generate_asset, meshy_generate — spends money —, blender_run — native host execution — and cloud_luau — runs code in production) and the mixed read/write tools (script_source, tag, git_branch, git_remote, format_scripts) stay visible with their write paths blocked (datastore's write actions are also gated) — 50 inspection tools remain. With TUFAN_TOOLSET=core only the 27 everyday tools are exposed; both gates compose.
How it works
- Auto-mirror on connect — opening a published place pulls its script tree to
<project>/projects/<Experience>_<universeId>/<Place>_<placeId>/. - Two-way sync — file edits push to Studio; Studio edits write to disk. A loop-guard prevents echo.
- Git (opt-in) — enable it in the widget; each place folder becomes its own repo. Off by default = plain files, no
.git. A re-pull auto-snapshots first, so it never overwrites uncommitted work.git_recoverbrings back a deleted file from history. - HTTP limit — Roblox allows a plugin about 500 HTTP requests a minute, roughly 240 Tufan calls. Past that, calls wait for the budget to refill (up to about a minute) rather than fail, so use
batch,create_treeormass_editfor big jobs. - Concurrent sessions — the first server owns port 58741 + the plugin; others run as proxies that forward to it. The owner serializes every command through one plugin queue, so multiple sessions never collide. If the owner closes, a proxy promotes automatically.
- Disconnect lock — when the plugin goes offline the mirror is set read-only (copy-only) until it reconnects.
Config (env)
| Variable | Effect |
|---|---|
TUFAN_PROJECT |
Project root for sync/git (use forward slashes). Defaults to cwd. |
TUFAN_READONLY=1 |
Safe/inspector mode — write tools hidden, script_source/tag readable but write-blocked. |
TUFAN_TOOLSET=core |
Lean mode — expose only the 26 everyday core tools (default full = all 85). |
TUFAN_AUTOCOMMIT=1 |
Auto-commit each Studio→file edit (also toggle-able in the widget). |
TUFAN_AUTOPUSH=1 |
Also push after each commit. |
TUFAN_PROJECTS_DIR |
Base dir override for auto-registered projects. |
TUFAN_OPENCLOUD_KEY |
Open Cloud API key for import_file / generate_asset (assets Read+Write scopes, create one here). |
TUFAN_CREATOR_ID / TUFAN_GROUP_ID |
Upload owner override for import_file / generate_asset (defaults to the logged-in Studio user). |
TUFAN_MESHY_KEY |
Meshy AI API key for meshy_generate / meshy_task / generate_asset (create one here — needs a paid Meshy plan). |
TUFAN_MESHY_AUTOCONFIRM=1 |
Skip the per-call Meshy credit-spend confirmation gate. |
TUFAN_BLENDER_PATH |
Path to blender.exe for the Blender tools (default: auto-detect newest install, then PATH). |
TUFAN_ASSET_DIR |
Where generated assets download (default ~/.tufan-blox-bridge/assets/). |
Potential capability (roadmap)
Where this can go — honest about what's built vs. next:
- Playtest automation — intentionally out of scope. Tufan shipped plugin-side Run-mode control (
playtest,playtest_probe,playtest_input) through v0.13; removed in v0.14. A plugin can only drive Run mode (server + physics, no player character) — Roblox's official Studio MCP drives real Play Solo with a character, keyboard/mouse and navigation, so duplicating a weaker version was net-negative. Run the session there; Tufan's log feed, screenshots andis_runningstill observe it. - Non-script instance mirroring — models/parts as files on disk (geometry currently stays in Studio by reference, a plugin-API limit).
- More Power Tools —
scan_deprecated(flag deprecated API usage across all scripts). - Asset pipeline, next steps — mesh generation (v0.11) + real-world finishing/preview (v0.12) shipped. Still ahead: inventory-insert for unowned assets, Meshy auto-rigging/animation passthrough, bulk procedural kits via Blender geometry nodes, Roblox-privileged material generation (pairs with the official MCP).
- Shared off-machine backup — push every place mirror to a configured GitHub org with one click.
Issues + status tracked in ISSUES.md. Contributions welcome.
Repo
server/ TypeScript MCP server (published as npm `tufan-blox-bridge`)
plugin/ Luau Studio plugin (built to TufanBloxBridge.rbxm)
scripts/ build-plugin.ps1
docs/ launch notes, market comparison
FAQ
What is Tufan-Blox-Bridge?
A free, open-source Roblox Studio MCP server and Studio plugin. It lets AI coding tools such as Claude Code and Cursor edit scripts, build instances, audit and back up your game inside Roblox Studio.
Does it replace Roblox's built-in Studio MCP?
No. It's an add-on. Keep the built-in server for play tests, screenshots and live debugging, and use Tufan for editing, safety, versioning and audits.
Does it work without the built-in server?
Yes, for everything that happens in edit mode. You won't have screenshots or play testing, because Tufan leaves those to the built-in server.
Which AI clients does it work with?
Any MCP client over stdio, including Claude Code, Claude Desktop and Cursor.
Do I need the Studio plugin as well as the npm package?
Yes. The npm package is the MCP server your AI talks to, and the plugin carries out the commands inside Studio. The one-line installer sets up both.
Is it free?
Yes, MIT licensed. Only the optional Meshy AI features need a paid Meshy plan, and you bring your own keys.
Is it safe to use on a real game?
You choose how much it can do. Read-only mode hides every write tool, snapshots protect risky edits, and tools that touch your published game ask for a separate Open Cloud key. Your keys stay on your machine.
License
MIT © Tufan Studio.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found