
FableCut — browser video editor as an MCP server (now on the official registry)
Sharing this here because I think this crowd will find the implementation more interesting than the video-editing part.
FableCut is a zero-dependency, browser-based NLE (Premiere-style: tracks, keyframes, transitions, kinetic captions, chroma key, the works). The whole project state lives in one JSON document. The MCP server (`mcp-server.js`) is a thin, dependency-free stdio JSON-RPC implementation — no MCP SDK, hand-rolled — that sits in front of it.
Seven tools:
* `fablecut_status` — auto-starts the editor if it's not running
* `fablecut_docs` — serves sections of the agent manual (CLAUDE.md) on demand
* `fablecut_get_project` — read the timeline, with a `{compact:true}` mode that returns a one-line-per-clip summary instead of the full doc
* `fablecut_set_project` — full document write
* `fablecut_patch_project` — **op-based patching**, so an agent nudging one clip's start time doesn't have to round-trip the entire timeline
* `fablecut_import_media`
* `fablecut_analyze_reference` — feed it a reference video, get back shot boundaries, beat markers, BPM, a loudness curve, per-shot energy, the drop, plus the extracted music track — a blueprint the agent then rebuilds with your footage
A few design choices I'd love feedback on:
* **Conflict-safe concurrent editing.** UI, MCP tools, and direct file writes all agree on a `revision` counter. If you hand-edit a clip in the browser while the agent is mid-task, its next write gets rejected with a conflict error instead of silently overwriting you.
* **Token efficiency was the actual design constraint**, not an afterthought — `patch_project`'s ops model and the compact read mode exist specifically because round-tripping a full timeline JSON on every tool call gets expensive fast once a project has more than a few clips.
* Install is `claude mcp add -s user fablecut -- node mcp-server.js` — it's now listed on the official MCP registry too.
It's also model-agnostic in the sense that MCP isn't the only surface — REST and direct file writes work identically, so anything speaking MCP (or nothing at all, just writing JSON) can drive it.
Repo + full tool docs: [https://github.com/ronak-create/FableCut\](https://github.com/ronak-create/FableCut) (see [CLAUDE.md](http://CLAUDE.md) for the schema agents actually read)

Genuinely curious if anyone's hit patterns for op-based patching on nested/array-heavy state that I should steal.