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.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。