The named operations cover what most edits actually need, and `apply_filter` takes a raw filter string for everything they do not — so the ceiling is FFmpeg's, not the tool list's. Files stay on your disk and paths are explicit, which makes it usable on footage you would never upload.
A video editing MCP server built on FastMCP and ffmpeg-python. It works on files in a local workspace rather than uploads, and the documented tool set spans 35+ operations across basic edits, audio, effects and colour, format conversion, composition and analysis. Long operations report progress back through the MCP context, and the workspace is browsable as resources.
- The four everyday edits — segment extraction, resolution change, joining clips, and metadata inspection — `trim_video`, `resize_video`, `concatenate_videos`, `get_video_info`
- Audio extracted, added or replaced, tracks merged, and a spectrum visualisation rendered — `extract_audio`, `add_audio`, `merge_audio_tracks`, `extract_audio_spectrum`
- Any FFmpeg filter string applied directly, plus speed changes, colour grading, motion blur and stabilization as named operations — `apply_filter`, `change_speed`, `apply_color_grading`, `apply_motion_blur`, `apply_video_stabilization`
- Format and codec conversion, and a frame pulled out as a thumbnail — `convert_format`, `generate_thumbnail`
- Composition: slideshows from images, multi-video mosaics, picture-in-picture, time lapses and transitions between clips — `create_video_slideshow`, `create_video_mosaic`, `create_picture_in_picture`, `create_time_lapse`, `create_video_transitions`
- Analysis: frames extracted, scene changes detected, technical statistics and dominant colours reported — `extract_frames`, `detect_scene_changes`, `extract_video_statistics`, `extract_dominant_colors`
- Text and graphics over the picture, and batch processing across several files — `add_text_overlay`, `create_animated_text`, `batch_process_videos`
- The workspace readable as resources: `videos://list` for what is there and `videos://{filename}/metadata` for one file
FFmpeg on the machine — everything here is a wrapper around it — and Python 3.13 or newer. `pip install vfx-mcp` gives a `vfx-mcp` command the client runs over stdio; a Nix flake and a `uv sync` path both exist for running from a clone. No account and no key: tools take input and output paths, and `VFX_WORK_DIR` points the server at the directory holding your footage. Rendering is CPU work on your own machine, so long jobs are long — progress is reported while they run.
One command — pip install vfx-mcp
