video-editor-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@video-editor-mcp Trim my video to 30 seconds and convert to GIF"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
video-editor-mcp
An MCP (Model Context Protocol) server that gives Claude (or any MCP-compatible
client) real video-editing tools, powered by ffmpeg. Once connected, you can
ask Claude things like "trim intro.mp4 to the first 10 seconds, add my logo
in the corner, and export it as a GIF" and it will call these tools directly.
Requirements
Node.js 18+
ffmpeg and ffprobe installed and available on your system
PATHmacOS:
brew install ffmpegUbuntu/Debian:
sudo apt install ffmpegWindows: ffmpeg.org/download.html, then add it to PATH
Related MCP server: ffmpeg-mcp
Install
cd video-editor-mcp
npm installConfigure where your videos live
Every tool takes file paths. Relative paths are resolved against the
MEDIA_DIR environment variable (so Claude doesn't need to know your full
filesystem layout) — set it to the folder containing the videos you want to
edit. Absolute paths are always used as-is. If MEDIA_DIR isn't set, it
defaults to the directory you launch the server from.
Connect it to an MCP client
This is a standard MCP server using the stdio transport, so any MCP-compatible client/host can spawn and talk to it. The host just needs to launch this process and communicate over stdin/stdout:
Command:
nodeArgs:
["/absolute/path/to/video-editor-mcp/src/index.js"]Env:
MEDIA_DIR=/absolute/path/to/your/videos
How you wire that up depends on your host/client's own configuration format
(most MCP-aware hosts use a command + args + env shape similar to the
above).
Tools exposed
Tool | What it does |
| Duration, resolution, codecs, fps, bitrate, file size |
| Cut a clip by start time + end time/duration |
| Concatenate multiple clips into one (auto-normalizes resolution) |
| Change container/codec (mp4, mov, webm, mp3, etc.) |
| Pull the audio track out as an MP3 |
| Scale to a target width/height |
| Crop to a rectangular region |
| Rotate 90/180/270° and/or flip horizontally/vertically |
| Speed up or slow down (pitch-corrected audio) |
| Raise/lower volume, or mute |
| Grab a still frame at a timestamp |
| Burn in a caption/title, optionally timed |
| Overlay a logo image at a chosen corner |
| Fade in/out (video, audio, or both) |
| Re-encode at a target quality (CRF) to shrink file size |
| Convert a video segment into an animated GIF |
Each tool returns the resulting file's path and size, so Claude can chain operations (e.g. trim → add watermark → compress) by feeding one tool's output into the next tool's input.
Testing without Claude
Run the unit tests, which generate a synthetic test video with ffmpeg and exercise every operation:
npm testRun a full protocol-level test (spins up the server and a real MCP client, lists tools, and calls a couple of them):
node test/e2e-client.js(The e2e test expects npm test to have been run first so test/tmp/v1.mp4
exists — or generate your own test clip there.)
Notes & limitations
All operations re-encode by default for correctness (frame-accurate trims, mixed-codec merges, etc.) rather than using fast
-c copycuts, so they're not the fastest possible, but they're reliable across arbitrary inputs.This server runs entirely on your local machine and only touches files you point it at — no video data is uploaded anywhere.
There's no built-in sandboxing beyond the
MEDIA_DIRconvenience for relative paths; since the server has the same filesystem permissions as whatever process launches it, only connect it to clients you trust.
Available Tools
16 toolsadd_fadeB
Add a fade-in and/or fade-out to a video, audio, or both.
Inputs: input_path (required), output_path (required), target, fade_in_duration, +1 more.
add_text_overlayA
Burn text (e.g. a caption or title) onto a video, optionally only during a time range.
Inputs: text (required), input_path (required), output_path (required), end_time, +4 more.
add_watermarkC
Overlay a logo/watermark image onto a video at a chosen corner or the center.
Inputs: input_path (required), output_path (required), watermark_path (required), opacity, +2 more.
adjust_volumeA
Change the audio volume of a video, or mute it entirely.
Inputs: input_path (required), output_path (required), mute, volume_factor.
change_speedA
Speed up or slow down a video (audio pitch is preserved). speed_factor > 1 speeds up, < 1 slows down (e.g. 2 = 2x faster, 0.5 = half speed).
Inputs: input_path (required), output_path (required), speed_factor (required).
compress_videoA
Reduce a video file size by re-encoding it with a given quality level (CRF). Lower CRF = higher quality/larger file; higher CRF = smaller file/lower quality. 28 is a reasonable default.
Inputs: input_path (required), output_path (required), crf, preset.
convert_formatA
Convert a video/audio file to a different container/codec. The output format is inferred from the output_path extension (e.g. .mp4, .mov, .webm, .avi, .mp3).
Inputs: input_path (required), output_path (required).
crop_videoC
Crop a video to a rectangular region.
Inputs: width (required), height (required), input_path (required), output_path (required), +2 more.
extract_audioA
Extract the audio track from a video file and save it as an MP3.
Inputs: input_path (required), output_path (required).
extract_frameA
Grab a single still frame from a video at a given timestamp and save it as an image.
Inputs: input_path (required), output_path (required), timestamp.
generate_gifB
Convert a segment of a video into an animated GIF.
Inputs: input_path (required), output_path (required), fps, width, +2 more.
get_media_infoA
Inspect a video or audio file: duration, resolution, codecs, fps, bitrate, file size.
Inputs: input_path (required).
merge_videosA
Concatenate two or more video files into one, in the given order. Clips are auto-scaled to match so different resolutions/codecs can be joined.
Inputs: input_paths (required), output_path (required).
resize_videoA
Resize/scale a video. Provide width, height, or both (aspect ratio is preserved if only one is given).
Inputs: input_path (required), output_path (required), width, height.
rotate_videoB
Rotate and/or flip a video.
Inputs: input_path (required), output_path (required), flip, rotation.
trim_videoA
Cut a clip out of a video between a start time and either an end time or a duration (seconds).
Inputs: input_path (required), output_path (required), duration, end_time, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 16 tools
Each tool targets a distinct video/audio editing operation with clear separation: inspecting, extracting, trimming, merging, converting, resizing, cropping, rotating, speed/volume changes, frame grabbing, overlays, fades, compression, and GIF generation. Even overlapping pairs like convert_format vs compress_video or extract_frame vs generate_gif have well-defined differences in purpose and output.
All tool names follow a consistent verb_noun pattern using lowercase with underscores (get_media_info, extract_audio, trim_video, etc.). There are no mixed conventions, camelCase, or vague verbs, making the toolset highly predictable.
With 16 tools, the set is slightly above the typical 3-15 sweet spot, but each tool serves a distinct common editing need. The count feels justified given the broad scope of video editing, though one or two could be consolidated (e.g., add_text_overlay and add_watermark are both overlays).
The toolset covers core video editing workflows: inspect, trim, merge, convert, transform (resize/crop/rotate), audio adjustment, frames, text/watermark overlays, fades, compression, and GIF export. Missing operations like video stabilization or color grading are minor gaps for a basic editor, and agents can accomplish most tasks without dead ends.
Maintenance
Related MCP Connectors
Hosted MCP tools for FFmpeg-style video and audio processing through FFMPEG API.
FFmpeg processing for video, audio and images via MCP with OAuth and shared account allowance.
MCP server for the FFmpeg Micro video transcoding API — create, monitor, download transcodes.
MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server providing video processing capabilities through FFmpeg, enabling dialog-based local video search, trimming, concatenation, and playback functionalities.837 PyPI153MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides 17 FFmpeg-based tools for video and audio processing, including conversion, compression, and editing. It enables AI assistants to perform complex media tasks like extracting audio, adding watermarks, and merging videos using natural language.16,348 npm2MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that exposes FFmpeg as structured tools for AI-agent-driven video editing, enabling operations like trimming, subtitling, and transcoding via natural language.16,348 npm1MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server for programmatic video editing using ffmpeg, enabling draft creation and refinement via natural language.6 npmISC