CapCut MCP Server
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 Server Create a new project called 'My Video' and add subtitles at the beginning."
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 Server
An MCP (Model Context Protocol) server that gives AI assistants full control over CapCut video editing projects. Create projects, import media, add text/subtitles, manage audio, and edit timelines — all through AI-powered tools.
How It Works
AI Assistant ──MCP Protocol──▶ CapCut MCP Server ──Read/Write JSON──▶ CapCut Draft Files
(Python/FastMCP) (draft_content.json)CapCut stores every project as a folder with a draft_content.json file. This MCP server reads and writes those files directly. You edit via the AI, then open the project in CapCut to preview and export.
Related MCP server: CapCutAPI-Complete MCP Server
Quick Start
1. Install
# Clone your repository
git clone https://github.com/baizo7/capcut_MCP_server-.git
cd capcut_MCP_server-
# Using pip
pip install -e ".[cli]"
# Or using uv (recommended)
uv pip install -e .2. Configure your MCP client
Gemini IDE / Antigravity
On Windows, open your Gemini MCP configuration file located at:
%USERPROFILE%\.gemini\config\mcp_config.json
Add this to your mcpServers object:
{
"mcpServers": {
"capcut": {
"command": "python",
"args": ["-m", "capcut_mcp.server"],
"env": {
"CAPCUT_DRAFTS_PATH": "C:\\Users\\LENOVO\\AppData\\Local\\CapCut\\User Data\\Projects\\com.lveditor.draft"
}
}
}
}Note: After saving, restart the IDE for the new server to boot up.
Claude Desktop
Add this to your claude_desktop_config.json:
{
"mcpServers": {
"capcut": {
"command": "python",
"args": ["-m", "capcut_mcp.server"]
}
}
}Cursor IDE
Add to .cursor/mcp.json in your project:
{
"mcpServers": {
"capcut": {
"command": "python",
"args": ["-m", "capcut_mcp.server"]
}
}
}3. Start editing!
Once configured, your AI assistant can use commands like:
"Create a new TikTok project called 'Summer Vibes'"
"Import all videos from D:\footage\vacation and add them to the timeline"
"Add subtitles: 'Hello!' at 0-2s and 'Welcome!' at 2-5s"
"Trim the first clip to start at 3 seconds"
🛑 Important Limitations & Workarounds
1. Windows Store Python Sandbox
If you are running the MCP server using Python installed from the Microsoft Store (which is common in Gemini IDE and Cursor), Windows automatically sandboxes writes to AppData\Local.
The Issue: The AI will create projects perfectly, but Windows hides them from CapCut.
The Fix: We built an automatic "Sandbox Escape" into the server using PowerShell! However, for best results, we highly recommend changing CapCut's default save location (Settings -> Project -> Save to) to your
Documentsfolder, and updating yourCAPCUT_DRAFTS_PATHenvironment variable to match it.
2. CapCut Does Not "Hot-Reload"
Because we are editing the raw JSON save files on your hard drive behind CapCut's back, CapCut does not instantly update its screen while you are actively editing a timeline.
To see changes: You must click the "X" in CapCut to return to the Home screen, then click the project again to force CapCut to reload the timeline from the hard drive.
For new projects: Simply switch tabs (e.g., from "Space" to "Home") to refresh the project list.
Configuration
Environment Variable | Description | Default |
| Path to your CapCut drafts folder | Auto-discovered |
Auto-discovery
The server automatically checks these locations for CapCut projects:
%LOCALAPPDATA%\CapCut\User Data\Projects\com.lveditor.draft%LOCALAPPDATA%\CapCut\User Data\Drafts
Available Tools (25+)
📁 Project Management
Tool | Description |
| List all CapCut projects on this computer |
| Detailed project info: tracks, materials, segments |
| Create a new empty project (with canvas presets) |
| Clone a project as a template |
| Delete a project (requires confirmation) |
| Show available canvas sizes (landscape, portrait, etc.) |
🎥 Media Import
Tool | Description |
| Import a video file to the timeline |
| Add an image as a still clip |
| Batch-import all media from a folder |
| List all assets in a project |
| Remove an asset and its timeline clips |
📝 Text & Subtitles
Tool | Description |
| Add a text overlay at a specific time |
| Bulk-add subtitles from a structured list |
| Change font, color, size, alignment |
| Change the text content |
🔊 Audio
Tool | Description |
| Add background music or sound effects |
| Adjust volume of a specific clip |
| Mute all clips on a track |
| Restore volume on a muted track |
✂️ Timeline Editing
Tool | Description |
| Trim a clip's start/end point |
| Split a clip into two parts at a timestamp |
| Move a clip to a new timeline position |
| Remove a clip from the timeline |
| Arrange clips sequentially with optional gaps |
| Change playback speed (slow-mo, fast-forward) |
Safety Features
Automatic backups: Every edit creates a
.backupof the draft before modifyingNon-destructive: Delete operations require explicit confirmation
Validation: All file paths are verified before import
Development
# Install in development mode
pip install -e ".[dev]"
# Run tests
python -m pytest tests/ -v
# Test with MCP Inspector (browser-based)
npx -y @modelcontextprotocol/inspector python -m capcut_mcp.serverImportant Notes
⚠️ Unofficial: This server reverse-engineers CapCut's project format. It is not affiliated with ByteDance.
⚠️ Backups: The server automatically backs up projects before modification, but always keep your own backups of important projects.
⚠️ ffprobe: For accurate video/audio duration detection, install FFmpeg and ensure ffprobe is on your PATH. Without it, the server uses default duration estimates.
Available Tools
25 toolsadd_audioB
Add an audio file (music, sound effect, voiceover) to the project.
Inputs: file_path (required), project_name (required), volume, start_ms, +2 more. Returns: result
add_imageB
Add an image to the project's video track as a still clip.
Inputs: file_path (required), project_name (required), duration_ms, position_ms. Returns: result
add_media_batchB
Import all media files from a folder into the project sequentially.
Inputs: folder_path (required), project_name (required), pattern, image_duration_ms. Returns: result
add_subtitlesB
Add multiple subtitle entries to the project in bulk.
Inputs: subtitles (required), project_name (required), color, font_size. Returns: result
add_textC
Add a text overlay to the project at a specific time.
Inputs: content (required), project_name (required), color, start_ms, +3 more. Returns: result
add_videoB
Add a video file to the project's main video track.
Inputs: file_path (required), project_name (required), position_ms, trim_end_ms, +1 more. Returns: result
create_projectB
Create a new empty CapCut project.
Inputs: name (required), fps, width, height, +1 more. Returns: result
delete_clipB
Delete a clip from the timeline.
Inputs: segment_id (required), project_name (required). Returns: result
delete_projectB
Delete a CapCut project.
Inputs: project_name (required), confirm. Returns: result
duplicate_projectB
Duplicate an existing CapCut project.
Inputs: new_name (required), source_name (required). Returns: result
get_project_infoB
Get detailed information about a CapCut project.
Inputs: project_name (required). Returns: result
list_canvas_presetsA
List available canvas size presets for creating new projects.
Shows all preset names and their resolutions.
Inputs: no named parameters. Returns: result
list_materialsB
List all materials (assets) registered in a project.
Inputs: project_name (required). Returns: result
list_projectsA
List all CapCut projects found on this computer.
Returns a summary of each project including name, duration, resolution, FPS, and number of tracks.
Inputs: no named parameters. Returns: result
move_clipC
Move a clip to a different position on the timeline.
Inputs: segment_id (required), project_name (required), new_position_ms (required). Returns: result
mute_trackA
Mute all clips on a specific track.
Inputs: track_index (required), project_name (required). Returns: result
remove_materialA
Remove a material and all its segments from the project.
Inputs: material_id (required), project_name (required). Returns: result
reorder_clipsB
Reorder clips on a track so they play sequentially without gaps.
Inputs: track_index (required), project_name (required), gap_ms. Returns: result
set_clip_speedC
Change the playback speed of a clip.
Inputs: speed (required), segment_id (required), project_name (required). Returns: result
set_volumeB
Adjust the volume of a specific clip (video or audio).
Inputs: volume (required), segment_id (required), project_name (required). Returns: result
split_clipB
Split a clip into two parts at a specific timestamp.
Inputs: at_ms (required), segment_id (required), project_name (required). Returns: result
trim_clipB
Trim a clip by adjusting its start and/or end point.
Inputs: segment_id (required), project_name (required), new_end_ms, new_start_ms. Returns: result
unmute_trackA
Unmute (restore volume on) all clips on a specific track.
Inputs: track_index (required), project_name (required), volume. Returns: result
update_text_contentA
Update the text content of an existing text overlay.
Inputs: new_text (required), segment_id (required), project_name (required). Returns: result
update_text_styleB
Update the styling of an existing text overlay.
Inputs: segment_id (required), project_name (required), bold, color, +3 more. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 25 tools
Each tool has a clearly distinct purpose, targeting specific media types, editing actions, or project management. No overlapping or ambiguous tools.
All tool names follow a consistent verb_noun snake_case pattern, such as add_video, delete_clip, list_projects. The pattern is uniformly applied across all tools.
With 25 tools, the server covers a broad range of video editing operations (project management, media import, editing, text, audio) without being overwhelming. This is well-scoped for a CapCut MCP.
The tool set covers core workflows: project lifecycle, media addition, basic editing (trim, split, speed, volume), and text manipulation. Missing advanced features like effects, transitions, or export, but the core surface is mostly complete.
Related MCP Connectors
AI video editor: create projects, edit timelines, add captions and effects, and render videos.
Edit video by talking to your AI — search footage, cut timelines, apply effects, add captions.
AI video editor for agents and humans: timeline, captions, color, audio and generation as MCP tools.
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
- FlicenseAqualityDmaintenanceEnables AI assistants to create and edit professional videos through natural language by automating JianYing (CapCut) video production workflows. Supports adding media segments, effects, transitions, animations, and exporting editable project files.20325-
- FlicenseNot gradedqualityDmaintenanceEnables video editing operations such as trimming, merging, adding audio/text/effects, and exporting via MCP protocol, leveraging CapCut core functionalities.97-
- FlicenseNot gradedqualityFmaintenanceAutomates CapCut video editing through an HTTP/MCP API, enabling draft creation, material addition (video, audio, text, images), effects, and AI-powered enhancements via natural language.96-
- 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