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 Create a 1080x1920 short draft from demo/clip.mp4 titled 'Launch' with music."
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
capcut-mcp is a zero-dependency stdio MCP server that reads and writes CapCut desktop draft folders on local disk. An agent can build a vertical short (1080×1920) as a draft; you open that draft in CapCut and export the MP4 yourself. The server does not contact CapCut, and it refuses encrypted drafts instead of decrypting them. Every write tool is a dry run until you pass dry_run: false. An overwrite keeps a one-step .bak copy.
Built by MCP Smith, a Grok Bot.
Requirements
Node.js >= 22.18 (runs
server.tswith native type stripping; no build step and nonpm install)CapCut 9.5.x desktop
macOS or Windows
Related MCP server: capcut-mcp
Install
Default drafts folder:
macOS:
~/Movies/CapCut/User Data/Projects/com.lveditor.draftWindows:
%LOCALAPPDATA%\CapCut\User Data\Projects\com.lveditor.draft
Point CAPCUT_DRAFTS_ROOT at that folder, or at the custom location from CapCut settings. CAPCUT_EXPORT_ROOT is optional; it is the only folder capcut_export_draft may copy into.
{
"mcpServers": {
"capcut": {
"command": "node",
"args": ["/Users/<user>/capcut-mcp/server.ts"],
"env": {
"CAPCUT_DRAFTS_ROOT": "/Users/<user>/Movies/CapCut/User Data/Projects/com.lveditor.draft"
}
}
}
}On Windows, use the same shape with C:\\Users\\<user>\\AppData\\Local\\CapCut\\User Data\\Projects\\com.lveditor.draft.
The repo root is also an Agent Plugin (plugin.json, mcp.json, skills/capcut/SKILL.md). mcp.json starts node server.ts in the plugin folder and sets no environment variables. Set CAPCUT_DRAFTS_ROOT in the client.
Tools
Reads: capcut_list_drafts, capcut_read_draft.
Writes (dry run by default): capcut_create_draft, capcut_add_clip, capcut_add_audio, capcut_add_text, capcut_add_subtitles, capcut_add_cuts, capcut_remove_segment, capcut_make_short, capcut_set_timeline, capcut_set_clip, capcut_style_text, capcut_add_keyframes, capcut_add_markers, capcut_add_transition, capcut_add_filter, capcut_add_animation, capcut_add_sticker, capcut_add_effect, capcut_add_adjustment_layer, capcut_set_speed_curve, capcut_duck_music, capcut_compound_clip, capcut_insert_preset, capcut_copy_text_template, capcut_reorder_track, capcut_register_draft, capcut_export_draft, capcut_export_srt, capcut_export_chapters.
capcut_make_short is the one-call short: clip, title, SRT, and music.
Quick demo
Quit CapCut before a real write. Dry-run first.
sh scripts/make-demo-assets.sh demo # needs ffmpeg; writes demo/clip.mp4 and demo/music.m4a
npm testExample call (prints a plan, writes nothing):
{"tool":"capcut_make_short","args":{"name":"Launch Short","clip_path":"/Users/<user>/capcut-mcp/demo/clip.mp4","title":"Made by an AI agent","srt_path":"/Users/<user>/capcut-mcp/demo/demo.srt","music_path":"/Users/<user>/capcut-mcp/demo/music.m4a","dry_run":true}}Read the plan, then repeat the same call with "dry_run": false. Open the project in CapCut and export there. Recording notes are in DEMO-SCRIPT.md.
Screenshot

Disclaimer
Unofficial. Not affiliated with, endorsed by, or sponsored by CapCut or ByteDance.
License
MIT. See LICENSE.
Draft field notes follow community documentation from capcut-cli (MIT). See NOTICE.
Available Tools
31 toolscapcut_add_adjustment_layerA
Add an adjustment layer (CapCut 'Ajustar') over a time range, with optional basic adjust (same keys and UI values as capcut_set_clip adjust) and LUT. It affects every track below it. Dry-run by default.
Inputs: draft (required), start_s (required), lut, track, +3 more.
capcut_add_animationA
Add an in / out / loop (text, sticker) / group (combo) animation to the segment at start_s by resource_id (e.g. video in 6740868384637850120 = Zoom 1, text in 7210980292243231233 = Maquina de escribir). Dry-run by default.
Inputs: kind (required), draft (required), track (required), start_s (required), +4 more.
capcut_add_audioB
Add music or a voice-over (audio file) on an audio track, with volume and optional fade in/out. Default track "music". Dry-run by default.
Inputs: path (required), draft (required), in_s, track, +7 more.
capcut_add_clipA
Add a video, image or audio file to a draft timeline. The file is copied into /assets/. Length and size are read from MP4/MOV/M4A/WAV files. Optional fade_in_s / fade_out_s use the same audio-fade writer as capcut_set_clip (video clips also copy audio_fade onto the video material). Times are seconds. Dry-run by default.
Inputs: path (required), draft (required), in_s, track, +9 more.
capcut_add_cutsA
Batch cut list: place the keep ranges of one video/audio file (or everything except the cut ranges) back to back on a track from start_s, snapped to the draft's frame grid, and return the time map. A keep entry may be {in_s, out_s, x?, y?, scale?} so each speaker turn gets the same transform as capcut_set_clip. Optional source SRT is remapped through the cuts (cues in cuts dropped). srt_out writes that remapped SRT (frame-snapped, full cues, not the short cards) and never overwrites; dry-run by default. place_subtitles false skips burned-in captions. Re-chunking matches capcut_add_subtitles. Dry-run by default.
Inputs: path (required), draft (required), cut, keep, +19 more.
capcut_add_effectA
Add a CapCut video effect on an effect track over a time range: kind scene (video_effect) or body (face_effect, follows people), by resource_id (e.g. scene 7434872753355756048 = Grafiti de tiza, body 7688574067632377106 = Figura neon; both free). Dry-run by default.
Inputs: draft (required), start_s (required), resource_id (required), kind, +5 more.
capcut_add_filterA
Put a CapCut filter on one video clip (the segment at start_s) by resource_id, intensity 0-100 (e.g. 7668224318974823701 = Rollo vintage, free). Replaces the clip's filter. Dry-run by default.
Inputs: draft (required), start_s (required), resource_id (required), name, +3 more.
capcut_add_keyframesA
Animate one property of the segment at start_s: position_x/position_y (1 = half the canvas), scale (1 = 100%), rotation (degrees), alpha (0-1), volume (1 = original), brightness/contrast/saturation (-1..1). Easing linear (default), in, out or in_out (CapCut's Aceleracion / Desaceleracion / both). Replaces that property's keyframes. Dry-run by default.
Inputs: draft (required), track (required), points (required), start_s (required), +3 more.
capcut_add_markersA
Add timeline markers (CapCut time marks), e.g. chapter points for a YouTube description: [{t_s, title, color}]. Dry-run by default.
Inputs: draft (required), markers (required), dry_run.
capcut_add_stickerA
Add a CapCut sticker on a sticker track by resource_id (sticker_id), with position/scale/rotation. The sticker must have been added once in CapCut so it is in Cache/artistEffect. Animate it with capcut_add_animation. Dry-run by default.
Inputs: draft (required), start_s (required), resource_id (required), x, +7 more.
capcut_add_subtitlesA
Import an SRT file (or SRT text) as caption text segments on one track. Optional re-chunking into short cards (max_words / max_chars, time shared by letters or words on the frame grid), ALL CAPS and punch words on their own card. x is -1..1 from the canvas centre (default 0, centred), same as capcut_add_text. Dry-run by default.
Inputs: draft (required), x, y, color, +12 more.
capcut_add_textB
Add a text overlay (title, hook, CTA) to a draft. Position x/y is -1..1 from the canvas centre. Dry-run by default.
Inputs: text (required), draft (required), start_s (required), duration_s (required), +6 more.
capcut_add_transitionA
Add (or replace) a transition on the cut after the video segment at start_s, by CapCut resource_id (e.g. 6724845717472416269 = Combinar, free). Duration up to half the shorter clip. Dry-run by default.
Inputs: draft (required), start_s (required), resource_id (required), name, +3 more.
capcut_compound_clipA
Group the segments that lie fully inside start_s..end_s on one video track into a compound clip (Crear clip combinado), like Option+G in CapCut. Dry-run by default.
Inputs: draft (required), end_s (required), start_s (required), track, +1 more.
capcut_copy_text_templateA
Copy a text template (Texto > Plantilla de texto) that CapCut already placed in a draft to a new time, in the same or another draft, with fresh ids and optionally new text. Dry-run by default.
Inputs: draft (required), start_s (required), from_start_s (required), text, +3 more.
capcut_create_draftA
Create a new empty draft folder. Default canvas 1080x1920 (vertical short), 30 fps. Copies version markers from an empty CapCut-made project (template_draft, default auto) so CapCut 9.x accepts it. Dry-run by default.
Inputs: name (required), fps, width, height, +3 more.
capcut_duck_musicA
Lower the music under speech: reads SRT cues and writes volume keyframes on every segment of the music track (under = level during speech, free = level between lines, default the segment volume). Dry-run by default.
Inputs: draft (required), free, track, under, +6 more.
capcut_export_chaptersA
Read timeline markers (time_marks from capcut_add_markers) and return a YouTube chapter list: HH:MM:SS Title. Times snap to the draft fps; the stamp is the second that contains that frame. Inserts 00:00:00 when no marker falls in the first second. Refuses a list YouTube will not use: fewer than 3 chapters, displayed times under 10 seconds apart (two markers in the same second count), or a last chapter shorter than 10 seconds against the draft duration. Optional out_path writes a .txt file and never overwrites. Dry-run by default when out_path is set.
Inputs: draft (required), dry_run, out_path, zero_title.
capcut_export_draftA
Validate a draft and copy its folder into CAPCUT_EXPORT_ROOT (the CapCut drafts folder) so you can open it in CapCut. Never overwrites. Not needed when CAPCUT_DRAFTS_ROOT already is the CapCut folder. Dry-run by default.
Inputs: draft (required), dry_run, new_name, register_in_index.
capcut_export_srtA
Write the cues of one text track (default subtitles) as an .srt file, e.g. for YouTube closed captions. Never overwrites. Dry-run by default.
Inputs: draft (required), out_path (required), track, dry_run.
capcut_insert_presetB
Insert one of CapCut's saved elements (right-click > Guardar elemento predefinido; Tuyos > Mis elementos predefinidos) as a compound clip at start_s. Reads the local preset store (CAPCUT_PRESETS_ROOT, default the CapCut Mac container). Dry-run by default.
Inputs: draft (required), preset (required), start_s (required), track, +1 more.
capcut_list_draftsA
List CapCut draft folders in the drafts root (read only).
Inputs: no named parameters.
capcut_make_shortB
One call for a vertical short: clip + optional title (title_y, title_color, title_style) + optional SRT subtitles (sub_font_size, sub_color, sub_y, re-chunking, sub_style) + optional background music (with fades). sub_style and title_style use the same fields and writer as capcut_style_text. Give draft (an EMPTY project you made in CapCut: it is filled in place, best for CapCut 9.x) or name (a new draft that copies a CapCut-made project's markers). Dry-run by default.
Inputs: clip_path (required), fps, name, draft, +34 more.
capcut_read_draftA
Read one draft and return canvas, fps, duration, which file holds the timeline, and every track/segment in seconds (read only).
Inputs: draft (required).
capcut_register_draftA
Add or refresh this draft in CapCut's project list (root_meta_info.json, backed up first) with its current duration. Run after the last edit. CapCut must be closed. Dry-run by default.
Inputs: draft (required), dry_run.
capcut_remove_segmentA
Delete the segment that starts at start_s on a track (any type) and the materials only it used. ripple: true pulls the later segments of that track left to close the gap (other tracks do not move). Dry-run by default.
Inputs: draft (required), track (required), start_s (required), type, +2 more.
capcut_reorder_trackB
Move a track up or down among the tracks of its type (layer order: position 0 = bottom). The main video track stays at 0. Dry-run by default.
Inputs: name (required), type (required), draft (required), position (required), +1 more.
capcut_set_clipA
Change one clip (the segment at start_s on a track): video scale/position/rotation/opacity, canvas background (color or blur), blend mode, basic adjust, speed (constant), audio volume, fades and noise reduction, stabilization level, audio channel copy, shape mask, flip, crop, curves, color wheels (Pro), HSL (8 colours), voice filter (Pro). Dry-run by default.
Inputs: draft (required), track (required), start_s (required), x, +25 more.
capcut_set_speed_curveA
Speed curve on one video clip (the segment at start_s): a CapCut preset (montage, hero, bullet, jump_cut, flash_in, flash_out) or custom points [[x 0..1, speed 0.1..10], ...]; null goes back to 1x. Clip length = source / CapCut's average speed, snapped to frames. The Curva tab is marked Pro in CapCut 9.5 (cache ids are free); exporting may need Pro. Dry-run by default.
Inputs: draft (required), start_s (required), curve, track, +2 more.
capcut_set_timelineB
Change canvas size, fps, total duration or colour space (SDR/HDR) of a draft. Duration cannot cut existing segments. Dry-run by default.
Inputs: draft (required), fps, width, height, +3 more.
capcut_style_textB
Style text already on a track (captions, titles): WordArt preset, stroke, shadow, background box, per-word highlight color, font file, bold/italic, size, color, wrap width, alignment. All segments on the track, or only the one at start_s. Dry-run by default.
Inputs: draft (required), track (required), bold, glow, +25 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 31 tools
Most tools target a distinct resource+action (clip, audio, text, subtitles, filter, effect, transition, markers). However there is real overlap: capcut_make_short bundles add_clip/add_text/add_subtitles/add_audio, capcut_set_clip includes constant speed while capcut_set_speed_curve handles curves, and capcut_add_clip accepts audio though capcut_add_audio exists for music/VO. These boundaries are navigable but could cause misselection.
Every tool uses the capcut_ prefix plus a clean verb_noun pattern (add_text, set_clip, list_drafts, read_draft, create_draft, export_draft, add_keyframes, remove_segment). Conventions are fully consistent with no camelCase or style mixing.
31 tools is on the heavy side and borders on over-exposed for a single MCP surface. The domain is genuinely complex (draft lifecycle, timeline, styling, effects, export), and most tools earn their place, but the count is high enough that some priming/consolidation would reduce surface area.
Coverage is impressively broad: draft create/read/list/register/export, clip/audio/subtitle/text insertion, transitions, filters, effects, adjustment layers, animations, keyframes, speed curves, ducking, markers, and SRT/chapter export. Minor gaps remain (draft deletion/duplication, moving segments between tracks/drafts, trimming), but core editing workflows are fully supported.
Maintenance
Related MCP Connectors
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
AI video editor your agent can drive: plan scenes, edit a multi-track timeline, and render MP4s.
AI editor to build, animate & export layered short-form video projects via one tool catalog.
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.
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
- FlicenseAqualityDmaintenanceCreates and edits CapCut desktop drafts locally by writing project files, enabling timeline manipulation through MCP tools.7-
- 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
- AlicenseBqualityCmaintenanceEnables reading and editing CapCut desktop draft projects, including adding/moving/trimming/splitting clips, text, audio, images, filters, transitions, masks, keyframe animation, audio fades, stickers, setting transforms, validation, and saving with backups.28MIT