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

creavit-studio-mcp

v1.2.1

Published

MCP server that lets AI coding agents (Claude Code, Codex, Cursor) drive the Creavit Studio screen recording app

Readme

Creavit Studio MCP Server

Lets AI coding agents — Claude Code, Codex, Cursor, or anything else that speaks MCP — drive the Creavit Studio desktop app: open projects, change settings, add zoom ranges, start recordings, export video, and see the canvas to verify the result.

macOS only (Creavit Studio is a macOS app). Requires Node 18+.

Install

Claude Code

claude mcp add creavit-studio -- npx -y creavit-studio-mcp

Or, if you have the app repo checked out, .mcp.json in desktop/ already configures it — just open Claude Code there.

Cursor

~/.cursor/mcp.json (global) or .cursor/mcp.json (per project):

{
  "mcpServers": {
    "creavit-studio": {
      "command": "npx",
      "args": ["-y", "creavit-studio-mcp"]
    }
  }
}

Codex CLI

~/.codex/config.toml:

[mcp_servers.creavit-studio]
command = "npx"
args = ["-y", "creavit-studio-mcp"]

Verify

npx creavit-studio-mcp --doctor
creavit-studio v1.2.0

✓ 50 MCP tools defined
✓ Offline project reading available (.crvt files readable without the app)
✓ Connected to the app (v3.0.5, pid 61068)
  Open windows: 2
  Agent-connected renderers: main, editor
✓ 56 bridge commands available

Everything looks good.

How it works

Agent (Claude Code / Codex / Cursor)
  │  MCP over stdio (JSON-RPC)
  ▼
creavit-studio-mcp
  │  HTTP + bearer token, bound to 127.0.0.1 only
  ▼
Creavit Studio main process   (agent bridge)
  │  IPC
  ▼
Renderer windows (editor / recorder) → the real app state

On startup the app picks a random port, generates a fresh token, and writes an endpoint descriptor:

~/Library/Application Support/creavit-studio/agent-bridge.json   (mode 0600)

The MCP server discovers the app through that file. Restarting the app does not require restarting the MCP server — the endpoint is re-read on every request.

The app must be running for most tools. Project inspection tools read .crvt files directly and work with the app closed.

Tools

Appcreavit_app_info, creavit_app_window, creavit_app_mode, creavit_permissions, creavit_events

Projectscreavit_project_list, creavit_project_summary, creavit_project_manifest, creavit_project_open, creavit_project_save, creavit_project_reveal

The first three work with the app closed.

Editorcreavit_editor_state, creavit_editor_get_settings, creavit_editor_set_settings, creavit_editor_list_zooms, creavit_editor_add_zoom, creavit_editor_update_zoom, creavit_editor_remove_zoom, creavit_editor_segments, creavit_editor_set_segments, creavit_editor_seek, creavit_editor_playback, creavit_editor_screenshot, creavit_editor_export, creavit_editor_history

Appearancecreavit_editor_background_get, creavit_editor_background_set, creavit_editor_camera_get, creavit_editor_camera_set, creavit_editor_audio

Perspectivecreavit_editor_perspectives, creavit_editor_add_perspective, creavit_editor_update_perspective, creavit_editor_remove_perspective

Recordingcreavit_devices_list, creavit_recording_status, creavit_recording_start, creavit_recording_stop

Browser walkthroughcreavit_browser_open, creavit_browser_inspect, creavit_browser_focus, creavit_browser_interact, creavit_browser_scroll, creavit_browser_close, creavit_record_url_walkthrough

Escape hatchescreavit_capabilities, creavit_call, creavit_ipc, creavit_eval, creavit_logs

The typed tools cannot cover the whole app. creavit_capabilities lists every command and editor action the app exposes; creavit_call invokes any of them; creavit_ipc reaches all ~110 raw IPC channels. New app features become reachable through these without changing the MCP server.

Typical flow

creavit_app_info              is the app running, which windows are open
creavit_project_list          see available projects
creavit_project_summary       understand the target project
creavit_project_open          open it in the editor
creavit_editor_state          poll until duration > 0 (loading takes seconds)
creavit_editor_screenshot     see the current look
creavit_editor_set_settings   change something
creavit_editor_screenshot     VERIFY the result
creavit_project_save          persist

Background, camera, and mute

Use the typed tools instead of guessing generic setting keys:

creavit_editor_background_set  type=solid color=#10131a
creavit_editor_background_set  type=gradient gradient={type, direction, colors}
creavit_editor_camera_set      settings={visible,size,radius,shadow,mirror,...}
creavit_editor_audio           action=mute
creavit_project_save

creavit_editor_audio action=mute changes both preview audio and every clip's timeline volume, so the saved project also exports without source audio.

Record a URL walkthrough

creavit_record_url_walkthrough is the high-level workflow. By default it opens the URL in a frameless site-only capture window (16:9, 4:3, 1:1, 9:16, or another requested ratio) and waits for the DOM, fonts, and images before recording. It then executes ordered semantic actions with the real macOS mouse, so the normal Creavit custom-cursor track receives authentic move/click events. It trims the timeline to durationMs, adds scroll-highlight zooms, optionally covers the whole video with a perspective preset, mutes it, and saves it.

When the calling agent has inspected the page, it can pass ordered steps (scrollPages, dwellMs, zoom, scale, x, y, and optionally selector/text plus action) to dwell on, hover, click, type, and frame the important parts instead of using the generic evenly spaced scroll plan.

Example input:

{
  "url": "https://example.com",
  "cleanWindow": true,
  "aspectRatio": "4:3",
  "durationMs": 10000,
  "steps": [
    { "action": "click", "text": "Features", "dwellMs": 1000 },
    { "action": "scrollTo", "text": "Get Started", "dwellMs": 700 },
    { "action": "click", "text": "Get Started", "dwellMs": 3000 }
  ],
  "controlSystemMouse": true,
  "autoZoom": true,
  "zoomScale": 1.8,
  "perspective": true,
  "perspectiveTemplate": "minimal-tilt",
  "mute": true
}

For hand-directed recordings, use creavit_browser_open, creavit_recording_start, and creavit_browser_scroll separately, then add zooms/perspective with the editor tools.

Two things worth knowing:

  • Wait for the load. After creavit_project_open, poll creavit_editor_state until duration > 0. Settings written before loading finishes get overwritten.
  • padding, radius, shadowSize are derived values. Reads and writes are transparently redirected to basePadding / baseRadius / baseShadowSize, and creavit_editor_set_settings returns a verified block showing what was actually stored. Check it rather than assuming a write landed.

Security

  • Binds to 127.0.0.1 only; requests carrying an Origin header are rejected, so no web page can reach it.
  • Every request requires a bearer token, regenerated on each app launch.
  • The endpoint file is written with 0600 permissions.
  • Arbitrary code execution (creavit_eval) is off by default.
  • Page loading and scrolling inside a clean capture window do not require Accessibility permission. Real system mouse move/click automation and external-browser scrolling do require macOS Accessibility permission.

Environment variables

Set on the app, not the MCP server:

| Variable | Effect | |---|---| | CREAVIT_AGENT_BRIDGE=0 | Disable the bridge entirely | | CREAVIT_AGENT_BRIDGE_PORT | Pin a fixed port (default: pick a free one) | | CREAVIT_AGENT_BRIDGE_EVAL=1 | Enable the creavit_eval tool |

Set on the MCP server:

| Variable | Effect | |---|---| | CREAVIT_AGENT_BRIDGE_ENDPOINT | Explicit path to the endpoint descriptor |

Troubleshooting

"Creavit Studio is not running" — start the app. If it is running, check that the bridge came up: its log line is [AgentBridge] Ready → http://127.0.0.1:<port>.

"The 'editor' window is not open" — editor tools need a project open. Call creavit_project_open first.

Agent says a tool does not exist — MCP clients cache the tool list at connect time. Restart the agent session after upgrading the server.

Settings do not seem to apply — check the verified field in the creavit_editor_set_settings response, and make sure the project finished loading (creavit_editor_stateduration > 0).

Extending

The MCP server is a thin, typed façade. To add a capability:

  1. Main-process work → add a command in electron/agentBridge/commands/*.cjs.
  2. Needs renderer state → add an action to the relevant host composable in composables/agent/, then publish it via proxy("<action>") in electron/agentBridge/commands/editorCommands.cjs.
  3. Want a typed MCP tool → add it in mcp/src/tools/*.mjs. Optional — anything registered on the bridge is already reachable via creavit_call.