Build and revise
- Build tracks with clips, gaps, titles, markers, and subtitles
- Refine timing with trim, split, move, roll, slip, slide, and speed
- Apply transitions, ordered filters, and native MLT keyframes
Local-first editing Open source
Ask your MCP client to trim clips, add titles, relink media, or render a delivery.
Shotcut MCP applies structured edits to the saved .mlt file, validates them locally,
and keeps the result editable in Shotcut.
.mlt operationsEditing workflow
Shotcut MCP operates on the project format itself. It does not imitate mouse clicks or hide the changes behind a hosted service.
Discover source media or inspect the saved project, using focused pages for large timelines.
inspect_project → revision
Dry-run the operations, review the XML diff and Melt validation result, then submit up to 500 related operations as one atomic edit.
plan → edit × 1…500
Validate the temporary project with Melt, recheck the on-disk revision, create an isolated backup, then atomically replace the original.
validate → recheck → save
Review the result visually, start a durable export, or open the native project for hands-on adjustments. Reinspect after saving in Shotcut.
preview | render | open
Project safety
Revision checks reject stale candidates. A per-project lock serializes MCP commits. Melt validation, isolated backups, and atomic replacement keep the last valid project on disk until the new one is ready.
Read the safety modelTool coverage
Use focused MCP tools for discovery, editing, review, rendering, and recovery. Inspect locally installed MLT services when a filter or transition needs lower-level control.
Installation
Choose your MCP client, then copy the shortest supported setup. Every option runs the same dependency-free Python server locally over stdio.
Default stack: Shotcut 26.8.1 · MLT 7.41.0 (7.41.x family) · Python 3.10+
Windows integration also covers Shotcut 26.6.25 / MLT 7.40.0. Other version pairs receive an untested-version warning.
Project boundary: Saved .mlt files; unsaved GUI state stays in Shotcut.
Before registration, run the entry point with --check. See the installation guide if Windows opens the Microsoft Store instead of Python.
Claude Code · Plugin marketplace
Add the marketplace, install the plugin, then reload it without restarting Claude Code.
/plugin marketplace add matrodrigs/shotcut-mcp
/plugin install shotcut-mcp@matrodrigs
/reload-plugins
Codex · Local stdio server
Choose your platform. The command points Codex at the same dependency-free Python server.
git clone https://github.com/matrodrigs/shotcut-mcp.git
cd shotcut-mcp
$pythonExe = py -3 -c "import sys; print(sys.executable)"
& $pythonExe "C:\path\to\shotcut-mcp\scripts\shotcut_mcp_server.py" --check
codex mcp add shotcut -- $pythonExe "C:\path\to\shotcut-mcp\scripts\shotcut_mcp_server.py"
git clone https://github.com/matrodrigs/shotcut-mcp.git
cd shotcut-mcp
python3 /absolute/path/to/shotcut-mcp/scripts/shotcut_mcp_server.py --check
codex mcp add shotcut -- python3 /absolute/path/to/shotcut-mcp/scripts/shotcut_mcp_server.py
Other MCP clients
Start with the packaged release if your client supports MCPB. Otherwise clone the repository and configure the local server directly.
shotcutAbsolute Python 3.10+ executable path/absolute/path/to/shotcut-mcp/scripts/shotcut_mcp_server.pyCommon questions
No. It edits saved MLT project files directly and uses the local Shotcut, Melt, FFmpeg, and FFprobe executables for validation, previews, and rendering.
The server processes media locally and sends tool results, metadata, and preview images to your MCP client. That client may use a cloud model or upload data under its own policies. Network resources embedded in projects are denied by default.
Yes. The output remains a native, editable .mlt project. Let the MCP finish its transaction before reopening or saving the same project in Shotcut.
No. Shotcut MCP is an independent MIT-licensed community project and is not endorsed by Shotcut or the MLT project.
Install locally
Start with a saved Shotcut timeline or a folder of source media. Review the result before exporting.