MCPCut
00 · MCP video editor

A real video editor, drivable by any agent.

An MCP server with an immutable timeline, a journaled edit history, and an FFmpeg/MLT render engine. One process, one port — /mcp for agents, /projects for people.

$ POST /mcp  ·  Authorization: Bearer <token>
00:00 / 00:12 ● exact MP4
A four-track editor timeline: clips, text, audio, and overlays under a moving playhead.
01 · The loop

Say it in a sentence. Get a journaled edit.

No plugin, no screen-scraping, no "describe your video and hope". The agent calls the same named operations the editor's own buttons call — and every one of them lands in a history you can read and undo.

your agent, any MCP client
you

Grab that YouTube talk at 1080p, cut the first 8 seconds of throat-clearing, and put the title over the opening.

agent

Imported talk.mp4 (12:41). Trimmed 0.0–8.0s and added a title over 0.0–3.2s. Project is at v4 — preview is ready.

you

Too long. Undo the title and make it 2s.

agent

Undone to v3, re-added over 0.0–2.0s. Now at v5.

operation journal v1v2v3v4v3v5
  1. v2editor_import_urlquality=1080p
  2. v3editor_trim_clipstart=8.0
  3. v4editor_add_text0.0 → 3.2undone
  4. v5editor_add_text0.0 → 2.0

Append-only. v4 is still on disk — undo moved the head, it did not erase the past.

The same two ops as a timeline: one video clip, trimmed by 8 seconds, with a title element over its opening.
02 · Surfaces

One logic layer, three surfaces.

/mcp

For agents. The full editing tool set over streamable-HTTP, bearer-authenticated. editor_create_project, add/trim/ reorder clips, preview, export.

/projects

For people. A CapCut-class editor — drag, trim, split, undo/redo, annotations, export — over the same ops.

/ui

For files. Exports, preview frames and keyframe strips — served only to the account that owns them. Nothing here mutates.

Same immutable model, same journaled ops — a file dragged in by a human and one registered by an agent are indistinguishable downstream.

03 · In the editor

And when you want the mouse back.

Open the project the agent just built and keep cutting by hand. Drag, trim, split, nudge, undo — direct manipulation over the very same ops, so nothing you do is invisible to the agent and nothing it did is locked away from you.

A mock of the editor, playing on a loop: a project bar with undo, validate and export; a media rail; a preview; an inspector; and a three-track timeline. The playhead sweeps the timeline, a title lands on the text track, and a clip is split under the playhead — the version counter stepping from v3 to v5 as it goes.

Drag · trim · split

Grab an edge, pull it. Scissors cut a range out and close the gap.

Undo anything

Yours and the agent's edits sit in one history. Step back through both.

Validate, then export

Structural checks run before the render — you find out now, not 4 minutes in.

Paste a URL

A link to a platform video is fetched at the quality you pick, with live progress.

Importing by URL is for content you hold the rights to use — following the source platform's own terms is on you, not the service.

04 · Capabilities

What it does.

Immutable timeline

Frozen-dataclass project; every edit returns a new version, never mutates in place.

Journaled history

Append-only op journal; every mutation kept forever, replay the full edit history.

Two render engines

One contract, two backends: FFmpeg filter_complex and an MLT/melt pipeline.

Two-tier validation

structural checks guard the render; opt-in shorts checks enforce editorial bounds.

Compare-and-swap edits

Version-checked ops; a stale write gets a 409, never a silent clobber.

Clips · Text · Audio · Overlays

Four element kinds, four colors, one timeline.

05 · Pipeline

From one call to a rendered frame.

01

Call an op

An agent or human issues one named operation.

02

Journal it

The op is appended to the immutable history; version + 1.

03

Validate

Structural (and optional shorts) checks run before any pixels.

04

Render

FFmpeg or MLT resolves the timeline to a truthful MP4/frame.

Every gesture ends in exactly one named, journaled op. The client never merges partial state — it replaces its snapshot with the server's.

06 · For agents

Point your client at one endpoint.

mcp client config
{
  "mcpServers": {
    "mcpcut": {
      "url": "https://mcpcut.com/mcp",
      "transport": "streamable-http",
      "headers": { "Authorization": "Bearer <your-token>" }
    }
  }
}

Streamable-HTTP, bearer-authenticated. Mint a token, drop the block into any MCP client — Claude, IDE agents, or your own scripts — and call editor_create_project.

Give your agent a real editor.

Open the editor →