capcut-mcp
An MCP server that assembles CapCut International projects by reading and writing local project files, adding captions, subtitles, overlays, and more so editors start with a mostly-done timeline. It includes tools for inspecting projects, restyling captions, importing subtitles, and rendering alpha-channel overlays via Remotion.
README
capcut-mcp
An MCP server that assembles CapCut International projects and generates the assets CapCut cannot make itself, so an editor opens a timeline that is mostly done instead of an empty one.
Independent and unofficial. Not affiliated with ByteDance or CapCut. It works by reading and writing CapCut's local project files, a private and undocumented format. Use on projects you can afford to have backed up.
Status: early. Verified by hand on CapCut 9.1.0 (Windows). Every write tool is
gated behind check_compatibility, and restyle_captions has a dryRun mode.
What it is, and what it is not
Is: a draft compiler. Cuts, captions, music, titles and code-driven overlays assembled into a real CapCut project.
Is not: a renderer, and not a replacement for the editor. CapCut's AI features — auto-captions, auto-reframe, cloud effects — run on ByteDance servers. A project file can only reference resources that already exist in their catalogue. This tool cannot invoke them, and will not pretend otherwise.
The split it is built around: the machine does assembly, the human does taste. Uniform caption styling across a whole video is assembly. Masking, keyframe easing and colour grading are taste.
Requirements
- Node.js ≥ 20
- CapCut International (
app_source: "cc"). JianYing is not supported — from 6.0 it encrypts the project on every save, which makes round-trip editing impossible. ffmpeg/ffprobe— optional for reading, required for overlay rendering- CapCut must be closed when writing. The editor holds the project in memory and overwrites the file on close.
Setup
1. Install and build
git clone https://github.com/yabdulaziz2009-dev/capcut-mcp.git
cd capcut-mcp
npm install
npm run build # compiles src/ -> dist/
Optional, and only if you want render_overlay / compose_overlay — it pulls a
headless browser (~hundreds of MB):
npm install --prefix remotion
2. Register the server with your MCP client
The server speaks stdio and takes no arguments beyond its own path. Use the absolute
path to dist/index.js.
Claude Code — one command:
claude mcp add capcut -- node /absolute/path/to/capcut-mcp/dist/index.js
Claude Desktop — claude_desktop_config.json
(%APPDATA%\Claude\ on Windows, ~/Library/Application Support/Claude/ on macOS):
{
"mcpServers": {
"capcut": {
"type": "stdio",
"command": "node",
"args": ["C:/absolute/path/to/capcut-mcp/dist/index.js"]
}
}
}
On Windows use forward slashes in the JSON, or escape the backslashes (
C:\\Users\\…).
Restart the client, then ask it to list your CapCut projects. If list_projects returns
your drafts, the server is wired up.
3. Where projects are read from
The local draft store is found automatically:
| OS | Path |
|---|---|
| Windows | %LOCALAPPDATA%\CapCut\User Data\Projects\com.lveditor.draft |
| macOS | ~/Movies/CapCut/User Data/Projects/com.lveditor.draft |
Every tool also accepts an explicit project path — either the project folder or its
draft_content.json.
Verify
npm test # 32 unit tests, no CapCut install needed
npm run typecheck
Troubleshooting
| Symptom | Cause |
|---|---|
| Tools missing after restart | Path in the config is relative, or npm run build was never run |
refuse: editor is running |
CapCut is open — close it, it rewrites the draft on exit |
refuse: JianYing draft |
Encrypted format, not supported (see above) |
render_overlay fails |
ffmpeg not on PATH, or npm install --prefix remotion was skipped |
| Changes vanish | The project was open in CapCut during the write |
Tools
| Tool | What it does | Writes? |
|---|---|---|
list_projects |
CapCut projects in the local draft store | no |
inspect_project |
Duration, tracks, subtitles as readable text, populated material buckets | no |
check_compatibility |
ok / warn / refuse verdict before any write |
no |
restyle_captions |
One style across every caption at once, plus an entrance animation | yes |
import_subtitles |
An SRT file (or raw SRT text) as a styled caption track, with keyword highlighting | yes |
render_overlay |
Animated motion graphics with a real alpha channel (ProRes 4444) | no |
add_overlay |
Place a rendered clip on its own track | yes |
compose_overlay |
Render and place in one call | yes |
restyle_captions
The most repetitive job in short-form editing: the same outline, shadow and plate on every caption, set by hand one segment at a time.
Presets: bold-outline (white on heavy black stroke — the shorts default), boxed
(rounded dark plate), accent (brand colour with dark outline). A preset can be nudged
field by field rather than replaced.
Supported: size, colour, weight, opacity, outline, shadow (colour, angle, distance, blur), background plate, entrance/exit animation from 76 upstream slugs.
Not supported — and it says so instead of pretending: font family and on-screen
position. Neither is reachable through capcut-cli; see GATE0-FINDINGS.md §6.
Re-running is safe: captions that already carry an animation keep it and are reported, because upstream can add an animation but not replace one.
render_overlay — the differentiator
CapCut cannot author code-driven motion graphics; editors leave for Remotion and come back with a transparent clip. This closes that loop.
Kinds: lower-third (name bar), title-card (centred statement), callout (pill
badge). Text, colours, size, duration and exit timing are parameters — no code is
generated per overlay.
Output is ProRes 4444, yuva444p10le — verified to carry a genuine alpha channel
(93–96% of pixels fully transparent on the shipped kinds), not a black background.
Confirmed end-to-end on CapCut 9.1 / Windows: the rendered overlay was placed on its own track and the footage showed through its transparent areas in the editor.
npm install --prefix remotion # one-time, pulls a browser (~hundreds of MB)
Requires ffmpeg. A 2.5-second 1080×1920 overlay renders in ~17 s.
The Remotion project lives in
remotion/as a sibling package, not a dependency of the server, so installingcapcut-mcpdoes not drag a browser along for the tools that never need one.
Always run check_compatibility first. It refuses on JianYing drafts, a running editor,
an upstream write-guard block, or pre-existing integrity errors — and warns about
untested CapCut versions, diverged storage mirrors and missing binaries.
Version support
Verified by hand on CapCut 9.1.0 (Windows): an externally written text segment
survived being opened in the editor. Details and the defects found along the way are in
GATE0-FINDINGS.md.
CapCut 9.x has no upstream test fixture, so check_compatibility reports it as
untested even though it works here. That is deliberate: the format is private and can
change without warning, and an honest warning beats a silent corruption.
Credit
Draft reading and writing is done by capcut-cli
(MIT), which handles the transactional multi-file write CapCut 9.x needs — the modern
layout keeps a template-2.tmp mirror beside draft_content.json, and both must stay
in sync. This project adds the MCP layer, workflow-level composites, and the Remotion
overlay bridge.
Licence
MIT.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.