About Shotcut MCP
Shotcut MCP is an MCP server for editing video through Shotcut’s MLT engine without opening a GUI. It creates editable native .mlt projects and supports timeline changes, effects, titles, transitions, and rendering.
Key features
- 01Create native .mlt projects
- 02Add, trim, split, move, and remove clips
- 03Apply filters and text titles
- 04Crossfade adjacent clips
- 05Inspect timelines and project details
- 06Render video with melt
Use cases
- 01Assemble clips into a video project
- 02Add titles and fades to a cut
- 03Review timeline structure before rendering
MCP support
Exposes video-project editing and rendering tools to MCP clients over stdio. Any MCP client that can run stdio servers can connect.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
uvx shotcut-mcpSHOTCUT_MCP_WORKDIRDirectory for .mlt projects and state files (default ~/shotcut-mcp-projects)MELT_BINPath to the MLT melt binary if it is not on PATHFFPROBE_BINPath to ffprobe if it is not on PATHLocal servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
14Saved tool list · updated 1w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| fps | number | No | |
| name | string | Yes | |
| width | integer | No | |
| height | integer | No |
Details
From the project READMEshotcut-mcp
MCP server that edits video through Shotcut's engine, MLT, with no GUI. An agent can create a project, add and trim clips, split, move and remove them, apply filters, add titles and crossfades, read the timeline back and render it with melt.
The output is a native Shotcut .mlt project, not a locked video file. Open the agent's cut in Shotcut and keep editing it by hand.
Requirements
- Python 3.11+
- MLT
meltonPATH, or setMELT_BINto its full path. Installing Shotcut includesmelt.- Linux:
sudo apt install melt - macOS: install Shotcut, then set
MELT_BIN=/Applications/Shotcut.app/Contents/MacOS/melt - Windows: install Shotcut, then set
MELT_BINtomelt.exeinside the Shotcut folder. Windows rendering is not yet covered by CI.
- Linux:
ffprobe(from FFmpeg) onPATHfor reading clip durations and checking renders. Override withFFPROBE_BIN.
Install
Run it with no install step using uv:
uvx shotcut-mcp
Or install it with pip:
pip install shotcut-mcp
shotcut-mcp
The server talks MCP over stdio.
Use it with goose
goose Desktop or CLI
- Run
goose configure, choose Add Extension, then Command-line Extension. - Name:
shotcut - Command:
uvx shotcut-mcp - Timeout:
600seconds or more. Renders take longer than goose's default. - Add the environment variables
SHOTCUT_MCP_WORKDIRand, ifmeltis not on yourPATH,MELT_BIN.
config.yaml
Add this to ~/.config/goose/config.yaml:
extensions:
shotcut:
enabled: true
type: stdio
name: shotcut
cmd: uvx
args:
- shotcut-mcp
envs:
SHOTCUT_MCP_WORKDIR: /path/to/your/projects
timeout: 600
Then ask goose something like: "Make a project called promo from clip1.mp4 and clip2.mp4, keep the first 5 seconds of each, crossfade them, add the title 'Launch day' and render it."
Use it with other MCP clients
Any MCP client that runs stdio servers works. For example, Claude Desktop's claude_desktop_config.json:
{
"mcpServers": {
"shotcut": {
"command": "uvx",
"args": ["shotcut-mcp"],
"env": { "SHOTCUT_MCP_WORKDIR": "/path/to/your/projects" }
}
}
}
Configuration
| Variable | Default | What it does |
|---|---|---|
SHOTCUT_MCP_WORKDIR | ~/shotcut-mcp-projects | Where .mlt projects and their state files are saved |
MELT_BIN | melt | Path to the melt binary used for rendering |
FFPROBE_BIN | ffprobe | Path to ffprobe, used to read source durations |
Tools
| Tool | What it does |
|---|---|
create_project | Create a new project with a frame size and frame rate |
add_clip | Append a span of a source video to the end of the timeline. Returns the clip's id |
trim_clip | Change a clip's source in and out points |
remove_clip | Ripple-delete one clip |
move_clip | Move a clip to a new position on the timeline |
split_clip | Split a clip into two at a point inside it |
remove_segment | Ripple-delete a span of the timeline |
append_text_overlay | Burn a text title onto the timeline between two times |
apply_filter | Apply brightness, volume, crop, fadeInBrightness, fadeOutBrightness, fadeInAudio or fadeOutAudio to a clip |
set_transition | Crossfade video and audio between two adjacent clips |
get_timeline | Return the whole edit: clips, source in and out, timeline positions, filters, transitions and titles |
project_info | Return summary metadata for a project |
render | Render a project to a video file with melt |
list_projects | List the projects in the work directory |
Clip ids stay stable across calls. The edit state is kept in a .state.json file next to each .mlt, and the .mlt is regenerated from it after every change.
Current limits
- One video track. Multitrack video and audio is planned.
- Edits made by hand in the Shotcut GUI are overwritten by the next tool call. Safe round trips are planned.
- The
styleoption onset_transitionis accepted but only a dissolve is rendered today.
Development
pip install -e ".[dev]"
pytest
The render tests are skipped when melt is not installed.
License
MIT
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.