Skip to main content
Glama

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 PATH

Related MCP server: ffmpeg-mcp

Install

cd video-editor-mcp
npm install

Configure 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: node

  • Args: ["/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

get_media_info

Duration, resolution, codecs, fps, bitrate, file size

trim_video

Cut a clip by start time + end time/duration

merge_videos

Concatenate multiple clips into one (auto-normalizes resolution)

convert_format

Change container/codec (mp4, mov, webm, mp3, etc.)

extract_audio

Pull the audio track out as an MP3

resize_video

Scale to a target width/height

crop_video

Crop to a rectangular region

rotate_video

Rotate 90/180/270° and/or flip horizontally/vertically

change_speed

Speed up or slow down (pitch-corrected audio)

adjust_volume

Raise/lower volume, or mute

extract_frame

Grab a still frame at a timestamp

add_text_overlay

Burn in a caption/title, optionally timed

add_watermark

Overlay a logo image at a chosen corner

add_fade

Fade in/out (video, audio, or both)

compress_video

Re-encode at a target quality (CRF) to shrink file size

generate_gif

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 test

Run 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 copy cuts, 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_DIR convenience 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 tools
add_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

    A3.7/5.0

    Scored across 16 tools

    Disambiguation5/5

    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.

    Naming Consistency5/5

    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.

    Tool Count4/5

    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).

    Completeness4/5

    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

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers