Skip to main content
Glama

🎬 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 Documents folder, and updating your CAPCUT_DRAFTS_PATH environment 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

CAPCUT_DRAFTS_PATH

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_projects

List all CapCut projects on this computer

get_project_info

Detailed project info: tracks, materials, segments

create_project

Create a new empty project (with canvas presets)

duplicate_project

Clone a project as a template

delete_project

Delete a project (requires confirmation)

list_canvas_presets

Show available canvas sizes (landscape, portrait, etc.)

🎥 Media Import

Tool

Description

add_video

Import a video file to the timeline

add_image

Add an image as a still clip

add_media_batch

Batch-import all media from a folder

list_materials

List all assets in a project

remove_material

Remove an asset and its timeline clips

📝 Text & Subtitles

Tool

Description

add_text

Add a text overlay at a specific time

add_subtitles

Bulk-add subtitles from a structured list

update_text_style

Change font, color, size, alignment

update_text_content

Change the text content

🔊 Audio

Tool

Description

add_audio

Add background music or sound effects

set_volume

Adjust volume of a specific clip

mute_track

Mute all clips on a track

unmute_track

Restore volume on a muted track

✂️ Timeline Editing

Tool

Description

trim_clip

Trim a clip's start/end point

split_clip

Split a clip into two parts at a timestamp

move_clip

Move a clip to a new timeline position

delete_clip

Remove a clip from the timeline

reorder_clips

Arrange clips sequentially with optional gaps

set_clip_speed

Change playback speed (slow-mo, fast-forward)


Safety Features

  • Automatic backups: Every edit creates a .backup of the draft before modifying

  • Non-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.server

Important 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 tools
add_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

    A3.6/5.0

    Scored across 25 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose, targeting specific media types, editing actions, or project management. No overlapping or ambiguous tools.

    Naming Consistency5/5

    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.

    Tool Count5/5

    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.

    Completeness4/5

    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

    Related MCP Servers

    • F
      license
      A
      quality
      D
      maintenance
      Enables 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.
      20
      325
      -
    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables video editing operations such as trimming, merging, adding audio/text/effects, and exporting via MCP protocol, leveraging CapCut core functionalities.
      97
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables 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.
      2
      Apache 2.0