npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

idontlikecode-roblox-mcp

v0.1.9

Published

A local-first, typed, observable bridge between MCP-compatible AI clients and Roblox Studio

Readme

iDONTLikeCODE 🎮

npm version License: MIT Node.js Version

A local-first, typed, observable Model Context Protocol (MCP) bridge for Roblox Studio.

iDONTLikeCODE connects MCP-compatible AI clients (such as Antigravity CLI, Claude Desktop, Cursor, Gemini, and Cline) directly to Roblox Studio.

It enables AI agents to inspect your DataModel hierarchy, plan structured changes, construct 3D environments, edit Luau scripts with syntax verification, frame camera angles, capture viewport screenshots for visual evaluation, and execute playtest assertions—all recorded safely in Studio’s native ChangeHistoryService undo history.


🚀 Quick Start (60 Seconds)

You don't need to clone this repository to use it! All you need is Node.js (>= 20) and Roblox Studio.

1. Install the Studio Plugin

Run this one command in your terminal to automatically install the prebuilt plugin to your local Roblox Studio plugins folder:

npx -y idontlikecode-roblox-mcp install-plugin

(Supports macOS and Windows automatically).

2. Configure Roblox Studio

  1. Open your place in Roblox Studio.
  2. Go to Home ➔ Game Settings ➔ Security:
    • Toggle Allow HTTP Requests to ON (required for the bridge connection).
    • Toggle Allow Mesh / Image APIs to ON (required for camera_screenshot).
  3. Save settings.
  4. Under the Plugins tab ribbon, click the iDONTLikeCODE button to open the widget and click Connect Bridge.

3. Add to Your AI Client

Add idontlikecode-roblox-mcp to your client configuration:

Antigravity CLI (~/.gemini/config/mcp_config.json or .agents/mcp_config.json)

{
  "mcpServers": {
    "idontlikecode": {
      "command": "npx",
      "args": ["-y", "idontlikecode-roblox-mcp@latest"],
      "env": {
        "ENABLE_LUAU_EXECUTE": "true"
      }
    }
  }
}

Claude Desktop (claude_desktop_config.json)

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "idontlikecode": {
      "command": "npx",
      "args": ["-y", "idontlikecode-roblox-mcp@latest"]
    }
  }
}

Cursor (mcp.json)

{
  "mcpServers": {
    "idontlikecode": {
      "command": "npx",
      "args": ["-y", "idontlikecode-roblox-mcp@latest"]
    }
  }
}

🌟 Core Features

  • Inspect-Before-Write: Stable ancestry fingerprints (dataModelFingerprint and instance fingerprints). Writes against deleted or moved instances fail safely with STALE_FINGERPRINT.
  • ChangeHistoryService Native: Every mutation wraps inside ChangeHistoryService:TryBeginRecording() and commits via FinishRecording(). Full Ctrl+Z / Cmd+Z support in Studio.
  • Vision-Driven Loop: The AI can frame targets (camera_focus) and capture high-resolution Edit-mode screenshots (camera_screenshot) to evaluate 3D aesthetics and adjust misalignments.
  • Diff-First Plans: Preview, validate, and approve changes before mutating your game (change_plan, change_validate, change_diff).
  • Multi-Session Safety: Automatically protects against accidental cross-place changes when multiple Studio windows are open (AMBIGUOUS_TARGET gate).
  • Self-Healing Bridge: Automatic port conflict resolution (EADDRINUSE) and graceful fallback between WebSocket and HTTP long-polling.

🛠️ Canonical Tools Reference

| Tool | Category | Risk / Approval | Description | | :--- | :--- | :---: | :--- | | session_list | Session | Read (Safe) | List connected Studio places, fingerprints, and capabilities | | session_select | Session | Read (Safe) | Select target Studio place when multiple places are open | | tree_query | Inspection | Read (Safe) | Query DataModel hierarchy with depth, count, and property filters | | instance_get | Inspection | Read (Safe) | Retrieve instance properties, attributes, tags, and fingerprint | | selection_read | Inspection | Read (Safe) | Read developer's current Selection in Studio (with spatial coordinates and bounding boxes) | | selection_set | Inspection | Write (Safe) | Select instances in Roblox Studio Explorer and 3D Viewport by their paths | | diagnostics_read | Inspection | Read (Safe) | Read recent Studio output messages and error logs | | camera_focus | Camera / Vision | Write (Safe) | Frame Studio camera at any instance, 3D coordinate, or active Studio selection | | camera_screenshot| Camera / Vision | Read (Safe) | Capture Edit-mode viewport as a PNG image block for AI evaluation | | change_plan | Mutation | Read (Safe) | Prepare a structured plan with diff preview before mutating | | change_validate | Mutation | Read (Safe) | Validate plan syntax, fingerprints, and policy | | change_diff | Mutation | Read (Safe) | Review computed diff of a planned change | | instance_create | Mutation | Write (Safe) | Create new instances with ChangeHistoryService recording | | instance_patch | Mutation | Write (Safe) | Patch properties, attributes, and tags with fingerprint validation | | instance_delete | Mutation | Destructive (Approval Req) | Delete an instance safely (requires approvalToken: "user_approved") | | instance_reparent| Mutation | Write (Safe) | Move an instance to a new parent container | | instance_clone | Mutation | Write (Safe) | Clone an instance to a destination container | | script_get_source| Scripts | Read (Safe) | Read script source code, line count, and SHA-256 hash | | script_patch_source| Scripts | Write (Safe) | Patch full script source with Luau syntax verification | | script_replace_range| Scripts | Write (Safe) | Replace specific line ranges with fingerprint validation | | script_dependency_graph| Scripts | Read (Safe) | Analyze require() module dependencies across ReplicatedStorage | | terrain_patch | World | Write (Safe) | Procedural voxel terrain filling with cooperative yielding | | terrain_clear_region| World | Destructive (Approval Req) | Clear voxel terrain in a bounding box | | terrain_sculpt_natural| World / 3D | Write (Safe) | Procedural smooth voxel terrain generator (mountains, hills, craters, lakes) with elevation biome strata | | pbr_material_apply | 3D / Materials | Write (Safe) | Apply high-quality PBR material maps (SurfaceAppearance) or curated presets (scifi, marble, rust, gold) | | asset_search_marketplace| 3D / Assets | Read (Safe) | Search Roblox Creator Store marketplace and verified 3D assets catalog by keyword | | asset_insert | 3D / Assets | Write (Safe) | Insert Creator Store 3D models and meshes into Workspace using InsertService:LoadAsset | | environment_patch| World | Write (Safe) | Adjust Lighting (ClockTime, Ambient, Brightness) and Atmosphere | | spatial_query | World | Read (Safe) | Perform box, sphere, or raycast spatial overlap queries | | spatial_surface_snap| World | Write (Safe) | Snap a Part or Model cleanly onto the nearest ground/surface using raycasting | | mechanic_scaffold | Gameplay / World| Write (Safe) | Scaffold interactive 3D props (doors, spinning coins, bounce pads, hazards, teleporters) | | gui_scaffold | GUI / Interface | Write (Safe) | Scaffold responsive, modern Roblox UI hierarchies (Modals, HUDs, Grids) in StarterGui | | playtest_start | Testing | Write (Safe) | Start a bounded Studio playtest session (Play, Run, PlayHere) | | playtest_stop | Testing | Write (Safe) | Stop active playtest session | | playtest_assert | Testing | Read (Safe) | Assert runtime conditions (instance existence, property values, no errors) | | playtest_diagnose| Testing | Read (Safe) | Autonomous self-healing test run capturing runtime errors and offending script snippets | | diagnostics_read | Inspection / Test| Read (Safe) | Read recent Studio output and diagnostics messages from ring buffer | | history_status | History | Read (Safe) | Inspect ChangeHistoryService recording status and waypoints | | history_checkpoint| History | Write (Safe) | Set named history waypoint | | history_rollback_operation| History | Destructive (Approval Req) | Rollback changes made by a specific operation ID | | luau_execute_sandboxed| Advanced | Execute (Approval Req) | Bounded Luau execution (requires ENABLE_LUAU_EXECUTE=true) |


🔒 Security & Safety Controls

| Threat | Mitigation | | :--- | :--- | | Accidental cross-place mutation | Each Studio window receives a unique session key. Multi-session requires explicit targetSessionId. | | Mutating moved or stale instances | Target fingerprint validation. Changes fail with STALE_FINGERPRINT if modified externally. | | Secret leaks via tool responses | Recursive pattern redaction masks API keys, bearer tokens, passwords, and .ROBLOSECURITY cookies. | | Destructive actions | Deletions and rollbacks require an explicit approvalToken: "user_approved". | | Stdio corruption | All diagnostics and bridge logs strictly stream to process.stderr (never stdout). |


💻 Local Development & Contributing

If you want to contribute to iDONTLikeCODE:

Prerequisites

  • Node.js: >= 20.0.0
  • pnpm: >= 10.0.0
  • Rojo: >= 7.4.0 (brew install rojo or via Aftman)
  • Luau CLI: luau / luau-compile (brew install luau)

Build & Test Commands

# 1. Install dependencies
pnpm install --frozen-lockfile

# 2. Typecheck & Lint
pnpm typecheck
pnpm lint

# 3. Run full Vitest test suite (51 tests)
pnpm test

# 4. Check Luau plugin files & compile with Rojo
pnpm plugin:check
pnpm plugin:build

# 5. Build TypeScript server
pnpm build

📄 License

MIT © Fikri Firman & Contributors.