shotcut-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
Metadata
Release files for shotcut-mcp 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| shotcut_mcp-0.2.0.tar.gz | 21.8 kB | With provenance | Details for shotcut_mcp-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| shotcut_mcp-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for shotcut_mcp-0.2.0-py3-none-any.whl |
Total release size: 38.5 kB
Release files / shotcut_mcp-0.2.0.tar.gz
| Download URL | shotcut_mcp-0.2.0.tar.gz |
|---|---|
| Size | 21.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
08faa4372a7c9ba42e6f8a6e46b6f2d5b15f31c9842674bde75808fd047730c6
|
|
BLAKE2b-256 checksum How to use checksums |
0aa466baed450c4a1f182824443dfa9fd11649ce34bb8ab24d84350a981921c3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.
Transparency logRelease files / shotcut_mcp-0.2.0-py3-none-any.whl
| Download URL | shotcut_mcp-0.2.0-py3-none-any.whl |
|---|---|
| Size | 16.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
14f5fbd0e9a4b701b63c593db1b1dd171ad1aa35fb9e00425cbab73d0e741176
|
|
BLAKE2b-256 checksum How to use checksums |
f4b34219894a59bae518777c0ea2d32b25787b91541451f82fcc9ddf1a1af3ee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.
Transparency logSecurity for shotcut-mcp 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for shotcut_mcp-0.2.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 29, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.