For agents
An MCP server that edits video. Nothing ships without you.
Point your agent at vidcut and it gets a real timeline, not a chat box. It also gets you — in the browser, approving before anything renders.
Updated 2026-09-10
What is an MCP video editor?
Model Context Protocol (MCP) is an open standard for connecting AI models to external tools, used by Claude Code, Claude Desktop, Cursor and a growing list of agent clients. vidcut ships an MCP server: instead of a chat window bolted onto an editor, your agent calls 53 structured tools directly against a real, editable timeline — portrait, landscape, square or 4:5 — importing footage, cutting and reordering clips, laying word-level captions, adding motion graphics, mixing audio and rendering with FFmpeg. Every tool returns structured project state, so the agent never has to re-describe the video from a transcript. And every change lands in a browser UI with a human review gate: the agent can call request_review and wait, you approve or send the edit back with notes it reads, and nothing renders without your sign-off. The self-hosted build is free under the AGPL; the hosted cloud adds rendering, storage and more tools.
Not every video MCP server works this way.
vidcut is open source under the AGPL and runs on your own machine. It exposes a real, editable timeline — not a render queue — and it has a review gate: the agent calls request_review and waits, and you send work back with notes it reads. You are not approving a finished file; you are in the edit while it happens.
Connect it
Cloud
One command. Every paid plan includes a Remote MCP endpoint.
claude mcp add --transport http vidcut https://your-editor.studio.usevidcut.com/mcpSelf-host
Run the AGPL build on your own machine and point your agent at it — no account, no limits.
Read the sourceThe 53 tools
Every tool returns structured project state, so your agent never has to re-describe the video back to itself.
| Tool | What it does |
|---|---|
add_clip | Append already-imported media to the end of the main track (existing clips are untouched — good for adding one file at a time) |
add_mographcloud | Add one parameterized motion-graphics overlay (the others are untouched) |
add_overlay | Add a single overlay (the others are untouched) |
add_to_library | Save media into the user's cross-project library for reuse in future projects |
auto_caption | One-shot auto captions: recognize → paginate → write the caption track (a whole-track replace |
export_publish_package | Package the finished render for manual upload: copies the output video plus cover and .srt into output/publish/<stamp>/, writes one text file per platform from the metadata you provide, and records per-platform duration/size warnings in manifest.json |
extract_audio | Extract a clip's audio into a standalone audio item (the clip's own volume goes to zero), so it can be adjusted, faded or deleted on its own |
generate_imagecloud | Generate NEW images with AI via fal |
generate_musiccloud | Generate a NEW background-music track with AI via fal |
generate_soundcloud | Generate a NEW custom sound effect with AI (ElevenLabs SFX v2 via fal) |
get_chatread-only | Read the conversation with the person reviewing your work (both sides, oldest first) |
get_editing_skillread-onlycloud | Fetch one editing playbook in full (markdown): workflow with tool-call sequences, silent-failure pitfalls, final checklist |
get_editor_contextread-only | The user's current selection in the UI, playhead position, and dragged time range |
get_feedbackread-only | Summary of human changes since the given version — how the AI reads back what the user adjusted |
get_frameread-only | Extract the frame at a given time as JPEG — the AI's eyes |
get_generation_statuscloud | Check AI generation jobs |
get_historyread-only | Recent change log (version/label/source/ts) |
get_mograph_snippetread-onlycloud | Fetch one library item's full HTML/CSS/GSAP source plus an adaptation checklist for the html mograph template (strip the page scaffold and every <script src>, register the paused window.__timelines["html-mograph"] timeline, re-layout 1920x1080 blocks for the bake canvas, swap webfonts and bundled images) |
get_projectread-only | Trimmed overview of the project (clips/captions/media/version/review) |
import_from_library | Import a library asset into this project: its derivatives are copied in (no re-processing) and the file is referenced in place from the library (content-addressed, so the reference never breaks) |
import_media | Register a media file |
import_stock_mediacloud | Download one search_stock_media result into the project and register it as media (builds proxy/filmstrip/peaks |
list_editing_skillsread-onlycloud | List the built-in editing playbooks — 8 workflows covering speech editing, transcript-driven assembly, style mimicry from a reference video, beat-synced cutting, music & mixing, long-to-short repurposing, short-form packaging and pre-render checks |
list_libraryread-only | Search the user's cross-project asset library (reusable logos, intros, BGM…) |
list_sourceread-only | List importable files in a footage folder (no recursion, hidden files excluded, whitelisted extensions only) |
post_chat | Say something to the person reviewing your work — it shows up in the Chat tab of the editor and they can reply there |
preflight_checkread-onlycloud | Read-only self-check of the current timeline, to run right before render |
redo | Redo the last N undone edits (the inverse of undo) |
remove_audio | Remove one audio item |
remove_clip | Remove one clip (the magnetic main track closes the gap, so every later clip shifts left) |
remove_mographcloud | Remove one mograph overlay |
remove_overlay | Remove one overlay |
render | Render the project to a final mp4 (the project canvas, currently 1080×1920, re-encoded) |
reorder_clips | Reorder the main-track clips (order is a permutation of clipIds) |
request_review | Ask the user to review the current timeline in the browser UI |
search_mograph_libraryread-onlycloud | Search the vendored motion-graphics snippet library (373 HTML/CSS/GSAP items from the hyperframes registry), organised into 13 categories (lower-third / text-type / chart-data / map-geo / social-mock / device-ui / transition / vfx-overlay / code-dev / handwriting / logo-brand / background / camera-motion) |
search_stock_mediaread-onlycloud | Search free stock-media platforms (Pexels, Pixabay, Unsplash, Freesound) for B-roll, photos, sound effects and music beds |
set_audio | Set the whole audio track (voiceover/BGM |
set_canvas | Change the canvas size (the frame everything is composed into, and the shape of the exported video) |
set_canvas_fit | What to do when the media does not fill the canvas: contain = black bars, blur = a blurred, scaled-up fill (blur is the better look for landscape footage on a 9:16 canvas) |
set_captions | Replace the whole caption track (every existing caption is replaced |
set_cover | Set the cover image: when a rendered file is still around, the frame at that time is taken from the export (overlays and captions included) |
set_overlays | Replace the whole overlay track (every existing overlay is replaced |
set_timeline | Set the whole video main track (the initial cut) |
timeline_op | Rough-cut at a point on the timeline: split, deleteBefore (drop the picture before that time), deleteAfter (drop what follows), or freeze (insert a freeze-frame) |
transcribe | Run speech recognition (whisper.cpp) over the whole timeline and return per-word timestamps |
undo | Undo the last N edits (cursor-style: call it repeatedly to keep walking back) |
update_audio | Adjust one audio item (volume, fades, timing, ducking) |
update_caption | Change one caption only (text/start/duration/style/tokens/reveal/motion) |
update_clip | Change one clip's in/duration/volume/label/transition (its position in the main track is untouched) |
update_library_asset | Rename or retag a library asset (label/tags are what list_library searches) |
update_mographcloud | Change one existing mograph overlay: props (shallow merge — send only the fields you want to change), duration, position, start or anchor |
update_overlay | Change one overlay only (start/anchor/duration/position/text) |
Generated from the checked-in tool surface, so this table cannot drift from what the server actually exposes. The open-source build you host yourself ships 39 of these; the ones marked “cloud” need a paid plan.