capcut-mcp

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.

Category
Visit Server

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 installing capcut-mcp does 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

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

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.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured