Skip to main content
Glama

mcp-video-studio

A Model Context Protocol (MCP) server and local web studio for programmatic FFmpeg video editing and native CapCut Desktop draft generation.

I built this project because automating video edits through Claude and Cursor was frustrating. Large language models understand edit pacing, timestamps, and color grading intent, but turning those decisions into complex FFmpeg filtergraphs or manual timeline cuts in an NLE took too many repetitive steps.

This server exposes atomic, deterministic tools over stdio so AI agents can execute media transformations on disk and export ready-to-open CapCut Desktop projects without intermediate manual timeline reconstruction.


Capabilities

  • Silence Removal (remove_silence): Identifies silent intervals using silencedetect, applies boundary padding buffers to prevent clipped speech onsets/decays, and slices non-silent segments via trim/atrim + concat filters to preserve A/V sync.

  • Vertical 9:16 Reframing (smart_crop_vertical): Converts horizontal 16:9 footage into vertical Shorts/Reels/TikTok format using ambient background blur padding (blur_pad), direct center crop (center_crop), or letterboxing (fit_black_bars).

  • 3D LUT Grading (apply_lut_grade): Applies .cube and .3dl Look-Up Tables with Windows-safe path escaping and opacity blending (blend=all_opacity).

  • Media Inspection (extract_audio_and_metadata): Uses ffprobe JSON parsing to inspect codecs, resolutions, aspect ratios, framerates, and sample rates, with optional audio stream ripping.

  • CapCut Draft Synthesis (generate_capcut_draft): Generates valid draft_content.json and draft_meta_info.json project folders with microsecond precision ($1\text{s} = 1,000,000,\mu\text{s}$) that CapCut Desktop loads directly.

  • Local NLE Web Studio (mcp-video-studio-ui): A dark-themed local browser studio (DaVinci/Linear style) for manual inspection, real-time preview, and batch processing.


Related MCP server: capcut-mcp

Installation

Prerequisites

  • Python 3.10 or higher.

  • FFmpeg and ffprobe installed and accessible in your system PATH.

    • Windows: winget install Gyan.FFmpeg

    • macOS: brew install ffmpeg

    • Linux: sudo apt-get install -y ffmpeg

Install via pip or uv

# Direct install
pip install git+https://github.com/mehmeterenozturkk-max/mcp-video-studio.git

# Or with uv
uv pip install git+https://github.com/mehmeterenozturkk-max/mcp-video-studio.git

Local Development Setup

git clone https://github.com/mehmeterenozturkk-max/mcp-video-studio.git
cd mcp-video-studio
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
uv pip install -e ".[dev]"

AI Agent Integration

Claude Desktop

Add mcp-video-studio to your Claude Desktop configuration:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "video-studio": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/mehmeterenozturkk-max/mcp-video-studio.git",
        "mcp-video-studio"
      ]
    }
  }
}

If you installed the package locally in a virtualenv:

{
  "mcpServers": {
    "video-studio": {
      "command": "python",
      "args": [
        "-m",
        "mcp_video_studio.server"
      ]
    }
  }
}

Cursor & Claude Code

In .cursor/mcp.json or your MCP client configuration:

{
  "mcpServers": {
    "video-studio": {
      "command": "mcp-video-studio",
      "transport": "stdio"
    }
  }
}

Local Desktop Web Studio

For previewing edits outside of chat, run the local desktop studio:

mcp-video-studio-ui
# Or directly with Python:
python -m mcp_video_studio.studio_ui

Navigate to http://127.0.0.1:7860 to access the interface:

  • Media Pool & Inspector: Drag-and-drop or path loading with real-time stream metadata inspection.

  • Viewport: Video playback with timecode (HH:MM:SS:FF) and A/B switcher for original vs rendered video.

  • Parameters: Interactive controls for silence threshold (dB), vertical reframing, 3D LUT blending, and CapCut export.

  • FFmpeg Console: Live console displaying exact command lines and execution output.


Tool Reference

remove_silence

Cuts dead silence while maintaining audio-video synchronization.

Parameter

Type

Default

Description

input_path

str

required

Absolute or relative path to media file.

output_path

str

None

Output destination. Defaults to {stem}_no_silence.{ext}.

db_threshold

float

-30.0

Decibel threshold below which sound is silence.

min_silence_duration

float

0.5

Minimum silence length (seconds) to trigger cut.

padding

float

0.1

Voice boundary buffer (seconds) before/after speech.

smart_crop_vertical

Reframes horizontal footage into 9:16 vertical video.

Parameter

Type

Default

Description

input_path

str

required

Source video path.

output_path

str

None

Output destination.

mode

str

"blur_pad"

"blur_pad", "center_crop", or "fit_black_bars".

target_width

int

1080

Canvas width.

target_height

int

1920

Canvas height.

apply_lut_grade

Applies a 3D LUT (.cube or .3dl) with opacity blending.

Parameter

Type

Default

Description

input_path

str

required

Source video path.

lut_path

str

required

Path to .cube or .3dl file.

output_path

str

None

Output destination.

intensity

float

1.0

Blend opacity (0.0 to 1.0).

extract_audio_and_metadata

Inspects stream properties and optionally extracts audio.

Parameter

Type

Default

Description

input_path

str

required

Source media file.

extract_audio

bool

True

Extract audio stream.

audio_format

str

"wav"

Audio format (wav, mp3, aac, flac).

output_audio_path

str

None

Destination audio path.

generate_capcut_draft

Generates an openable CapCut Desktop draft folder.

Parameter

Type

Default

Description

project_name

str

required

Folder and project title.

clips

list[dict]

required

List of clips (path, start_sec, end_sec, speed, volume).

audio_tracks

list[dict]

None

Secondary audio tracks (path, timeline_start_sec, volume).

output_dir

str

None

Defaults to system CapCut drafts folder.

width

int

1080

Project canvas width.

height

int

1920

Project canvas height.

fps

float

30.0

Project framerate.


Technical Notes

Filtergraph Synchronization

Standard silenceremove filters in FFmpeg only strip audio samples, leading to severe A/V desynchronization when applied to video containers. mcp-video-studio uses silencedetect in a discovery pass to compute valid speech intervals, adds safety padding, and constructs a synchronized trim/atrim + concat filtergraph:

[0:v]trim=start=S0:end=E0,setpts=PTS-STARTPTS[v0];
[0:a]atrim=start=S0:end=E0,asetpts=PTS-STARTPTS[a0];
...
[v0][a0][v1][a1]concat=n=N:v=1:a=1[outv][outa]

CapCut Draft Schemas

CapCut Desktop uses microsecond timestamps ($1\text{s} = 1,000,000,\mu\text{s}$) across its track segments, speeds, and material dictionaries. The draft generator calculates cross-referenced UUID keys for video assets, speeds, and canvas configs so projects appear immediately in the editor's home screen under "Recent Drafts".


Testing

Run tests with pytest:

pytest -v

All video transformations are validated against dynamic synthetic test streams generated via FFmpeg lavfi inputs.


License

MIT License. See LICENSE for details.

Available Tools

5 tools
apply_lut_gradeA

Apply professional 3D Look-Up Table (.cube or .3dl) color grading to a video.

Args: input_path: Full file path to the input video. lut_path: Path to the .cube or .3dl LUT file. output_path: Optional output path. Defaults to '{name}_graded.{ext}'. intensity: Grading strength multiplier from 0.0 (original) to 1.0 (100% LUT grade).

Returns: JSON string with LUT details, intensity applied, and output file path.

NameRequiredDescriptionDefault
lut_pathYes
intensityNo
input_pathYes
output_pathNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose useful behavior: the default output filename pattern '{name}_graded.{ext}', the intensity semantics with endpoints spelled out, and the shape of the return value. However, for a file-writing operation it never says whether an existing output file is overwritten, whether the original input is left untouched, or what happens on invalid LUT data — meaningful gaps for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The lead sentence is front-loaded and the Args/Returns structure is scannable with zero filler. The Returns section partially duplicates the output schema, but it is short enough not to be a burden.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter file-processing tool with an output schema present, the description covers all parameters and the return shape adequately. The remaining omissions — overwrite policy, error conditions, supported input codecs — are the only things standing between it and full completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: it explains input_path ('full file path'), lut_path's accepted extensions, output_path's default naming pattern, and defines intensity's 0.0–1.0 range with concrete endpoint meanings ('original' vs '100% LUT grade'). Only minor gaps remain, such as validation behavior for out-of-range intensity values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names a specific verb and resource ('Apply professional 3D Look-Up Table (.cube or .3dl) color grading to a video') and even states the supported file formats. The tool's function is unmistakable and cannot be confused with the sibling tools (remove_silence, smart_crop_vertical, extract_audio_and_metadata, generate_capcut_draft).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the tool's nature — an agent needing to apply a LUT grade would pick it — but the description never states when to use it, when not to, or what alternatives exist for color grading (e.g., other LUT-related tools). It also omits prerequisites such as the required video formats or whether ffmpeg-like dependencies must be present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

extract_audio_and_metadataA

Extract complete media metadata (FPS, resolution, bitrate, codecs) and optionally extract audio.

Args: input_path: Path to the media file. extract_audio: Whether to rip the audio track to a standalone file (default: True). audio_format: Format for extracted audio ('wav', 'mp3', 'aac', 'flac'). output_audio_path: Optional destination path for extracted audio.

Returns: JSON string containing comprehensive audio/video stream parameters and audio file path.

NameRequiredDescriptionDefault
input_pathYes
audio_formatNowav
extract_audioNo
output_audio_pathNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description usefully discloses that audio extraction is enabled by default, creates a standalone file, and returns a JSON string. It does not clarify default output naming or location, overwrite behavior, or whether the source media is left unchanged.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, followed by compact Args and Returns sections that are easy to scan. There is no unnecessary wording, and the parameter detail is valuable given the undocumented schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description supplies enough operational and parameter information for correct invocation of this relatively simple tool, while the output schema reduces the need for further return-value documentation. Default destination and file-handling behavior remain minor but useful omissions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema description coverage, the Args section documents all four parameters, including the extraction default and supported audio formats. The main remaining ambiguity is what destination is used when output_audio_path is omitted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence clearly states both operations: retrieving media metadata such as FPS, resolution, bitrate, and codecs, and optionally extracting audio. This scope is readily distinguishable from the editing-oriented sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description establishes a clear use case for media inspection and optional audio ripping, and explains that extract_audio controls whether a standalone audio file is produced. It does not provide explicit exclusions or alternatives, but none are essential among the listed siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_capcut_draftA

Generate native CapCut Desktop draft_content.json and draft_meta_info.json project files.

Directly importable into CapCut Desktop / Jianying Pro without manual timeline setup.

Args: project_name: Name of the project (e.g. 'TikTok_Highlights_01'). clips: List of video clip definitions with 'path', optional 'start_sec', 'end_sec', 'speed', 'volume'. audio_tracks: Optional list of background music or sound effects with 'path', 'timeline_start_sec', 'volume'. output_dir: Base directory where project will be saved. Defaults to CapCut's native drafts directory. width: Canvas width (default: 1080). height: Canvas height (default: 1920). fps: Timeline frame rate (default: 30.0). ratio: Aspect ratio ('9:16', '16:9', '1:1', 'original').

Returns: JSON string with project directory, JSON file paths, timeline duration, and opening instructions.

NameRequiredDescriptionDefault
fpsNo
clipsYes
ratioNo9:16
widthNo
heightNo
output_dirNo
audio_tracksNo
project_nameYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations at all, the description carries the full burden. It does disclose useful behavior: real JSON files are written to disk, output_dir defaults to CapCut's native drafts directory, and defaults for width/height/fps/ratio are given. It omits what most matters for a filesystem-writing tool — whether an existing project of the same name is overwritten, whether the directory is created, and how missing or invalid clip paths are handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb and output artifacts, then structured as a conventional Args block that maps one-to-one onto the schema parameters. The Returns section partly duplicates the output schema, but overall there is little wasted prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Eight parameters, no annotations, and a nested untyped clips array make this a moderately complex tool, and the description covers the parameter shapes well. It falls short on operational behavior — overwrite semantics, failure modes for bad paths, and disk-location constraints — which an agent needs before generating files into a user's CapCut drafts folder. The existence of an output schema means the return description needn't be exhaustive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the clips/audio_tracks items are bare objects with additionalProperties, so the description is doing real work by naming the expected keys ('path', 'start_sec', 'end_sec', 'speed', 'volume'; 'path', 'timeline_start_sec', 'volume') and the accepted ratio values. Remaining gaps are minor: no units or accepted ranges for start_sec/end_sec, volume, or speed, and no constraint linking width/height to ratio.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a concrete verb (Generate) and concrete artifacts (draft_content.json and draft_meta_info.json project files) plus the target applications. The sibling tools (remove_silence, smart_crop_vertical, apply_lut_grade, extract_audio_and_metadata) are all single-purpose media operations, so the distinction is obvious without needing an explicit negative statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The line about being 'directly importable into CapCut Desktop / Jianying Pro without manual timeline setup' implies the context of assembling finished clips into a project, but there is no explicit when-to-use instruction, no mention that it should be run after the sibling processing tools, and no stated preconditions such as clips already existing on disk.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_silenceA

Cut silent gaps from a video or audio file while keeping video and audio perfectly in sync.

Args: input_path: Full file path to the source video or audio. output_path: Optional explicit output path. Defaults to '{name}_no_silence.{ext}'. db_threshold: Volume threshold in dB below which sound is considered silence (e.g. -30.0). min_silence_duration: Minimum silence length in seconds to trigger a cut (default: 0.5). padding: Seconds of voice buffer retained before and after speech to avoid clipping (default: 0.1).

Returns: JSON string containing cut statistics, durations, reduction percentage, and output path.

NameRequiredDescriptionDefault
paddingNo
input_pathYes
output_pathNo
db_thresholdNo
min_silence_durationNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses that silence is destructively removed from the output, that sync is preserved, and that output defaults to '{name}_no_silence.{ext}' (implying a new file rather than in-place edit). It omits overwrite behavior when output_path already exists and any failure/error characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded and the Args block is well organized and easy to scan; there is minor waste in restating defaults already present in the schema and in a Returns section that partly duplicates the output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a five-parameter media tool with one required input and an output schema already documenting return values, the description supplies nearly everything needed - parameter meaning, output naming, sync guarantee. It falls short only on overwrite/error behavior and environment prerequisites.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: every one of the five parameters is explained with meaning plus a concrete example or default (dB example -30.0, 0.5s minimum silence, 0.1s padding rationale of avoiding clipped speech).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('Cut silent gaps from a video or audio file') plus the key quality guarantee ('keeping video and audio perfectly in sync'), which immediately separates it from siblings like smart_crop_vertical and apply_lut_grade.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the purpose - an agent knows to call this when removing dead air - but there is no explicit guidance on when not to use it, no prerequisites (e.g. ffmpeg availability), and no comparison to the other media-processing siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

smart_crop_verticalA

Transform horizontal 16:9 video into 9:16 vertical Shorts, Reels, or TikTok format.

Args: input_path: Full file path to the source video. output_path: Optional output path. Defaults to '{name}vertical{mode}.{ext}'. mode: Framing method: - 'blur_pad': (Default) Blurred video background with centered sharp original. - 'center_crop': Direct 9:16 crop from the center. - 'fit_black_bars': Scale to fit with black letterbox padding. target_width: Canvas width (default: 1080). target_height: Canvas height (default: 1920).

Returns: JSON string with framing details, target resolution, and output file path.

NameRequiredDescriptionDefault
modeNoblur_pad
input_pathYes
output_pathNo
target_widthNo
target_heightNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description usefully explains the three framing behaviors, default output naming, default 1080x1920 canvas, and JSON result. It leaves operational details such as overwriting an existing output, preserving the source file, and failure handling unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, and the Args section is compact, scannable, and substantive. The Returns line is brief, with no filler or unnecessary repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides nearly everything needed to invoke this five-parameter conversion tool, compensating well for the bare schema and missing annotations. Minor gaps around overwrite behavior and supported inputs prevent it from being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema description coverage, every parameter is documented: path meaning, optional output naming, three valid mode strings with their visual effects, and canvas-dimension defaults. This supplies essential information missing from the schema, especially because mode has no enum.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence specifies the operation, input, and output: transforming horizontal 16:9 video into 9:16 video for Shorts, Reels, or TikTok. This clearly distinguishes it from the silence-removal, grading, audio-extraction, and draft-generation siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 16:9-to-9:16 social-video context makes the intended use clear, while the mode explanations help agents choose among blur padding, center cropping, and black bars. It does not explicitly state when not to use the tool or identify an alternative for other reframing needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv1.0.0
    • First observedapply_lut_grade
    • First observedextract_audio_and_metadata
    • First observedgenerate_capcut_draft
    • First observedremove_silence
    • First observedsmart_crop_vertical

TDQS

A4.1/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a clearly distinct operation: silence removal, vertical reframing, LUT color grading, metadata/audio extraction, and CapCut draft generation. There is essentially no overlap in purpose or input semantics, so an agent can select the right tool unambiguously.

Naming Consistency5/5

All names use consistent snake_case with verb-led phrasing (remove_silence, apply_lut_grade, extract_audio_and_metadata, generate_capcut_draft), with smart_crop_vertical being the only minor adjective-led variant. The convention is predictable and readable throughout.

Tool Count4/5

Five tools is a reasonable, well-scoped set where each earns its place in a short-form video pipeline. It leans slightly thin for a 'video studio' that could plausibly offer basic trim/concat, but nothing is bloated or redundant.

Completeness4/5

The tools cover a coherent shorts-production workflow (inspect → silence-cut → vertical crop → grade → assemble CapCut project). Minor gaps exist around primitive editing operations like trimming, concatenation, or subtitle generation, but these can be worked around via the CapCut draft output.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers