capcut-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@capcut-mcp make a 16 second vertical edit of that music video, cut on the beat"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
capcut-mcp
An MCP server that reads — and builds — CapCut projects on your own machine.
Point Claude at it and ask in plain language: what's in my CapCut projects, is any media missing, make me a 15 second vertical edit of this video cut on the beat. It works on the local draft library CapCut already keeps on disk.
This is extremely experimental and is not guaranteed to work.
CapCut's draft format is undocumented, changes with the app, and differs between platforms and versions. Everything here was worked out by reading drafts CapCut wrote on one Windows install. A project this generates may fail to open, may open with pieces missing, or may look fine and behave oddly.
Open anything it creates in CapCut and check it before you build on it. Nothing here has been tested against CapCut itself — only against the file format. Treat generated projects as drafts to inspect, not as finished work.
It will not touch projects you already have (see Safety), so the realistic worst case is a project that does not open. But back up work you care about anyway.
What it does
Tool | Purpose |
| Every project, newest first — duration, resolution, fps, track count |
| One timeline: each track, each segment, its start, length, speed and material |
| Source files a project needs, their size, and whether they still exist |
| Build a new project from clips laid end to end, each optionally trimmed |
| Tempo and beat times of any file with audio |
| Build a new project whose cuts land on the beat |
Times are in seconds throughout. CapCut stores microseconds internally; the conversion happens in one place so nothing downstream has to think about it.
Related MCP server: capcut-mcp
Install
Requires Node 18+, CapCut installed, and ffmpeg/ffprobe on PATH
(used to measure media and to decode audio for beat detection).
git clone https://github.com/<you>/capcut-mcp
cd capcut-mcp
npm installRegister it with Claude Code:
claude mcp add capcut --scope user -- node /absolute/path/to/capcut-mcp/src/index.js--scope user makes it available in every session. Check it came up:
claude mcp list # capcut: ... - ✔ ConnectedAny MCP client works; the server speaks stdio and nothing else.
Examples
what CapCut projects do I have?
0625 158.8s 1920x1080 2 tracks
0624 (1) 115.3s 1920x1372 1 track
0720 3.4s 1920x1098 1 trackis any of my footage missing?
0720 -> imsobored.mp4 MISSINGA draft stores absolute paths, so moving or deleting a source leaves the edit pointing at nothing and CapCut says so only when you open the project.
make a 16 second vertical edit of that music video, cut on the beat
project lil-tecca-beat
duration 15.836s across 11 cuts
bpm 166.7 (cut every 4 beats = 1.44s)
canvas 1080x1920How beat matching works
Decode to mono PCM with ffmpeg, measure how much energy rises between short windows, and treat peaks in that rise as onsets. Then find the tempo by autocorrelation — which beat spacing do the onsets agree with most — and lay a regular grid at that spacing, slid to whichever phase collects the most onset energy.
The grid matters more than the raw onsets. Onsets are uneven: they fire on a vocal, miss a soft kick, double up on a fill. Cutting straight to them looks jittery. A grid locked to the tempo lands musically.
Cut lengths come from the grid; cut contents are sampled evenly across the source, so a short edit surveys the whole video instead of its opening.
Tempo estimation is octave-ambiguous — a 83 BPM track often reads as 166 BPM.
It rarely matters for editing, since both give cuts on real beats, but it is why
everyNthBeat is the dial to reach for if cuts feel twice as fast as expected.
How creating works
A segment does not merely point at its clip. It also carries
extra_material_refs — seven linked materials (speed, canvas, sound channel
mapping, vocal separation, animation, placeholder, colour) that must each exist
in the pool with matching ids. Synthesising all of that from nothing is how you
get a draft that opens to an error instead of a timeline.
So the server clones one of your existing projects as a structural template and rewrites only what describes the media and the timing. Every undocumented field is carried across verbatim from a draft CapCut itself wrote. Each segment gets its own copies of the seven linked materials, so two clips never share a speed object and move together when one is changed.
This is also why you need at least one real project before creating anything — there has to be something to copy the shape from.
Vertical crops
canvas takes a preset (tiktok, reels, shorts, square, youtube) or
{width, height}. Clips are scaled to cover the frame rather than fit inside
it — left alone, 16:9 footage in a 9:16 canvas sits as a small strip between
black bars. 1920x1080 into 1080x1920 lands at scale ≈3.16, keeping the middle
third of the width.
The crop is centre-locked. If your subject sits off to one side, that shot loses
them; clip.transform in the draft is the lever, and it is not exposed yet.
Safety
Only ever creates new project folders. Nothing modifies an existing project. Tests assert the template project is byte-identical afterwards.
Refuses to overwrite. A name that already exists is an error, not a merge.
Refuses while CapCut is running, because the app holds its open draft in memory and writes it back on exit, which would silently discard new work.
Project names are validated before touching disk — anything containing
/,\or..is rejected, so a bad argument cannot read outside the draft root.Trims that would leave nothing are rejected with the clip's real length.
Where the drafts live
%LOCALAPPDATA%\CapCut\User Data\Projects\com.lveditor.draft\<project>\
draft_content.json the timeline: tracks -> segments -> material ids
draft_meta_info.json display name and imported media paths
draft_cover.jpg thumbnailOverride with CAPCUT_DRAFT_ROOT if CapCut lives somewhere else. Only Windows
paths are wired up by default; macOS keeps drafts under
~/Movies/CapCut/User Data/Projects/com.lveditor.draft, which should work by
setting that variable, though it is untested.
Known limits
Never verified against CapCut itself. The structure is checked thoroughly — every material reference resolves, ids are unique across segments, timings are contiguous, the timeline duration equals the sum of its segments — but "well-formed" and "the app accepts it" are different claims and only the first is tested.
One video track. No audio tracks, text, transitions, effects or keyframes.
No transitions between cuts, so a beat edit is hard cuts only.
Centre crop only.
Reads and writes video materials; other material types are passed through from the template untouched.
Licence
MIT.
Available Tools
6 toolscapcut_create_beat_editA
Build a new project whose cuts land on the beat. Cut lengths come from the detected tempo; the footage for each cut is sampled evenly across the source, so a short edit surveys the whole video rather than its opening. Same safety rules as capcut_create_project.
Inputs: name (required), source (required), fps, clips, +4 more.
capcut_create_projectA
Build a new CapCut project from video files, laid end to end on one track, each optionally trimmed. Creates a new project only — it never modifies an existing one, and refuses if a project of that name is already there. CapCut must be closed. Open the result in CapCut to confirm it loads.
Inputs: name (required), clips (required), fps, canvas.
capcut_detect_beatsA
Find the tempo and beat times of any file with audio. Returns BPM, the spacing between beats, and every beat in seconds. Useful on its own for deciding how long cuts should be.
Inputs: path (required), skipSeconds.
capcut_list_projectsA
List the CapCut projects in the local draft library, newest first, with duration, resolution and track count. Start here — every other tool takes a project name from this list.
Inputs: no named parameters.
capcut_project_mediaA
List the source files a project references, with size, and whether each still exists on disk. Use this to find edits broken by moved or deleted media.
Inputs: project (required).
capcut_read_projectA
Read one project's timeline: every track, and every segment on it with its start time, duration, speed and the material it plays. Times are in seconds.
Inputs: project (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose: listing projects, reading a timeline, listing referenced media, creating a basic project, detecting beats, and creating a beat-synced project. The two create tools are differentiated by their specific behaviors and the beat edit tool explicitly builds on beat detection. No two tools could be reasonably confused for the same operation.
All tools use a consistent capcut_ prefix and snake_case, and five of six follow a verb_noun pattern (list_projects, read_project, create_project, detect_beats, create_beat_edit). The outlier is capcut_project_media, which is noun-first rather than verb-first, a minor deviation that doesn't harm readability.
Six tools is well-scoped for a local CapCut project manipulation server, covering inspection, media validation, creation, and beat-based creation without redundancy. Each tool earns its place and there are no unnecessary additions.
The surface covers listing, reading, media checking, and creating new projects, but lacks update, delete, rename, or any modification of existing projects. This is a notable gap for a project management domain, though the creation tools explicitly avoid modifying existing projects by design.
Maintenance
Related MCP Connectors
The agentic video editor for ChatGPT and Claude. Ask in your chat and it cuts, captions, adds music, titles and motion graphics on a real timeline you can open and adjust.
CapCut MCP server for ChatGPT, Claude and any AI agent: list drafts, export draft, add auto captions, share draft for review, invite members to a space, set member role, transfer editing permission and search templates in your own CapCut account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to CapCut yourself; Cotlet does not store your password and you need no CapCut API key. About the official CapCut API: Partly. CapCut has an official plugin for the ChatGPT desktop app that builds drafts and adds captions, effects and templates (capcut.com, checked 6 Nov 2026). Setup and FAQ: https://cotlet.dev/integrations/capcut-api-mcp-server
Open-source AI video editor: cut, caption, clip and animate real Revline projects from your agent.
Edit video by talking to your AI — search footage, cut timelines, apply effects, add captions.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants like Claude Code to build and edit CapCut video projects locally by creating drafts, adding media and effects, and saving projects that open in CapCut desktop.2Apache 2.0
- AlicenseAqualityCmaintenanceAn MCP server that reads and builds CapCut projects locally, enabling natural language queries about project contents, missing media, and creation of new edits including beat-synced cuts.6MIT
- AlicenseNot gradedqualityCmaintenanceEnables LLM agents to read and edit local CapCut desktop projects directly, with an ffmpeg-based preview loop to verify edits before committing.1MIT
- AlicenseBqualityCmaintenanceEnables AI coding agents to programmatically assemble vertical videos and manage local CapCut Desktop drafts, including AI background removal, audio mastering to -14 LUFS or Demucs vocal isolation, music auto-ducking, punch zooms, karaoke captions, PiP proof overlays, hook badges, safe-zone linting, proxy previews, and EN→ES cloning/dubbing. It outputs real CapCut draft JSON ready for review and export.172MIT