Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

FFmpeg MCP Server

NPM · @ASH_J1997/FFMPEG-MCP-SERVER

FFmpeg & FFprobe media processing toolkit for video, audio, and social formats

71 Trust /100

Last scanned (3 hours ago)

Scores higher than 42% of npm servers

Category Design and Media

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 30 of 92 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability78
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 3373 tokens (~177/item across 19 items; 17 tools + 2 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management7
  • Stability observed for 2 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 17 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 18 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 24 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 23 Oct 26 −12
    • Malware scan: pass → unverified ▼ security
    • Schema quality: 2376 → 3373 ▼ functional
    • First check of Schema quality: 100 functional
    • Schema quality: excellent → good functional
    • Package version: 0.4.2 → 0.5.0 functional
  • 22 Oct 26 68

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 24 Oct 2026 · Analysed npm/@ash_j1997/ffmpeg-mcp-server@0.5.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 92 packages
Packages resolved 92
Stale 30
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 17 exposed · ~3,329 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
add_overlay ~217

Place a watermark image, logo PNG, or branding graphic over a video with customizable position, padding, scaling, and opacity.

NameTypeReqDescription
hardwareAccelerationboolean–Use hardware-accelerated video encoding when available. Default: true.
opacitynumber–Overlay opacity from 0.05 (subtle watermark) to 1.0 (fully opaque). Default: 1.0.
outputPathstringyesDestination path for the output video (.mp4 or .mov).
overlayPathstringyesPath to the watermark, logo, or overlay image (.png, .jpg, or .webp).
paddinginteger–Margin padding in pixels from the edge. Default: 20.
positionstring–Corner or screen placement for the overlay. Default: 'bottom_right'.
scaleWidthinteger–Optional width in pixels to scale the overlay, keeping its original aspect ratio (e.g. 150).
videoPathstringyesPath to the base video file.

No output schema declared.

No examples provided.

add_subtitles ~145

Embed an SRT or VTT subtitle track into a video container (mov_text for MP4, srt for MKV) without re-encoding the video stream.

NameTypeReqDescription
languagestring–ISO 639-2 three-letter language code (e.g. 'eng', 'spa', 'fra', 'deu')
outputPathstringyesTarget output video path (.mp4, .mkv, or .mov)
subtitlesPathstringyesPath to subtitle file (.srt or .vtt)
titlestring–Subtitle track label displayed in video players
videoPathstringyesPath to the source video file

No output schema declared.

No examples provided.

burn_subtitles ~261

Hardcode/burn subtitles directly into video frames with customizable font size, colors, and positioning. Unlike soft subtitles, burned subtitles render on all platforms including TikTok, Instagram Reels, and YouTube Shorts.

NameTypeReqDescription
fontColorstring–Primary subtitle text color: 'white', 'yellow', 'cyan', or ASS hex e.g. '&H00FFFFFF'. Default: 'white'.
fontSizeinteger–Subtitle font size in points. Default: 24.
hardwareAccelerationboolean–Use hardware-accelerated video encoding when available. Default: true.
marginVinteger–Vertical margin distance in pixels from the bottom edge. Default: 35.
outlineColorstring–Subtitle border/outline color: 'black', 'white', or ASS hex. Default: 'black'.
outlineWidthinteger–Outline thickness in pixels. Default: 2.
outputPathstringyesTarget output video path (.mp4, .mov, or .mkv).
subtitlesPathstringyesPath to the subtitle file (.srt, .vtt, or .ass) to burn into the video.
videoPathstringyesPath to the source video file.

No output schema declared.

No examples provided.

change_speed ~115

Change video and audio playback speed (such as 2x for fast forward or 0.5x for slow motion) with pitch correction.

NameTypeReqDescription
inputPathstringyesPath to the source video or audio file
muteAudioboolean–Whether to strip audio track completely
outputPathstringyesTarget output file path
speednumberyesPlayback speed multiplier (e.g., 2.0 for 2x fast-forward/timelapse, 0.5 for slow-motion)

No output schema declared.

No examples provided.

compress_video ~264

Compress video files to fit upload limits (such as GitHub PRs under 10MB or Discord under 25MB) using target file sizes or CRF quality levels. Does not modify the original file.

NameTypeReqDescription
crfinteger–Quality value between 18 (higher quality) and 45 (smaller file). Overrides preset.
hardwareAccelerationboolean–Use hardware-accelerated video encoding (VideoToolbox, NVENC, QSV, etc.) when available. Default: true.
inputPathstringyesPath to the source video file (e.g. './recordings/demo.mov')
maxWidthinteger–Maximum video width in pixels, such as 1280 for 720p. Keeps aspect ratio.
outputPathstringyesDestination path for the compressed MP4 file (e.g. './recordings/demo_compressed.mp4')
presetstring–Preset when targetSizeMB is not set: 'github_pr', 'discord', 'email', 'balanced', or 'high_quality'. Default: 'balanced'.
targetSizeMBnumber–Target output size in megabytes, such as 9.5 for GitHub or 24 for Discord. Computes bitrates from duration.

No output schema declared.

No examples provided.

concat_media ~103

Join multiple video or audio files in order into a single file. Uses stream copy for matching files or re-encodes when formats differ.

NameTypeReqDescription
inputPathsarrayyesList of media files to concatenate in sequential order
modestring–Concatenation mode. 'lossless' uses stream copy without quality loss (inputs must share codecs). 'reencode' normalizes differing resolutions/codecs.
outputPathstringyesTarget output file path

No output schema declared.

No examples provided.

create_split_screen ~311

Combine two video files into a split-screen video. Stacks clips vertically (1080x1920 for Reels and TikTok) or places them side-by-side. Supports audio mixing and subtitle embedding.

NameTypeReqDescription
audioSourcestring–Audio track selection: 'mix' (blends audio from both videos), 'first' (uses only top/left audio), 'second' (uses only bottom/right audio), or 'mute'. Default: 'mix'.
firstVideoPathstringyesPath to the top video (vertical layout) or left video (horizontal layout).
hardwareAccelerationboolean–Use hardware-accelerated video encoding (VideoToolbox, NVENC, QSV, etc.) when available. Default: true.
layoutstring–Split layout: 'vertical_9_16' (1080x1920 stacked top/bottom for Reels and TikTok), 'horizontal_16_9' (1920x1080 side-by-side), or 'square_1_1' (1080x1080 stacked). Default: 'vertical_9_16'.
outputPathstringyesDestination path for the split-screen output file (e.g. './reel.mp4').
secondVideoPathstringyesPath to the bottom video (vertical layout) or right video (horizontal layout).
subtitlesPathstring–Optional path to an .srt or .vtt subtitle file to embed into the output video.

No output schema declared.

No examples provided.

extract_audio ~183

Extract an audio track from a video file into a standalone audio file. Supports the 'whisper_wav' preset (16kHz mono WAV) for speech recognition models, plus MP3, AAC, FLAC, and stream copy.

NameTypeReqDescription
bitratestring–Target audio bitrate for MP3 or AAC (e.g. '128k', '192k', '320k').
formatstring–Audio format: 'whisper_wav' (16kHz mono WAV for Whisper), 'mp3', 'aac', 'flac', or 'copy' (extract without re-encoding). Default: 'mp3'.
inputPathstringyesPath to the source video or audio file.
outputPathstringyesDestination path for the output audio file (e.g. './extracted.wav' or './audio.mp3').

No output schema declared.

No examples provided.

extract_keyframes ~179

Extract multiple representative frames across a video's timeline. In 'montage' mode, merges frames into a single contact-sheet grid image and inlines base64 for vision models to inspect the whole video at once.

NameTypeReqDescription
countinteger–Number of representative frames to extract across the video timeline. Default: 6.
includeBase64boolean–Inline base64 image data in response for vision models. Default: true.
inputPathstringyesPath to the source video file.
layoutstring–Output format: 'montage' combines all frames into a single contact-sheet grid image for vision models; 'individual' exports separate frame images. Default: 'montage'.
outputPathstringyesDestination image path (e.g. './keyframes_grid.png' or './frames/frame_%02d.jpg').

No output schema declared.

No examples provided.

extract_thumbnail ~169

Capture a single still image from a video. Returns the saved image path and inlined base64 image data so vision models can inspect the frame.

NameTypeReqDescription
includeBase64boolean–Return base64 image data in response for vision models. Default: true.
inputPathstringyesPath to the source video file.
outputPathstringyesDestination image path ending in .png or .jpg (e.g. './thumb.png').
resolutionstring–Optional scaled size formatted as 'WIDTHxHEIGHT', such as '1280x720'. Defaults to source resolution.
timestampstring–Timestamp to capture, such as '00:00:05', '10', or 'midpoint' for the middle frame. Default: '00:00:01'.

No output schema declared.

No examples provided.

generate_waveform ~185

Generate a PNG waveform image from an audio or video file. Returns the file path and inlined base64 image data.

NameTypeReqDescription
colorstring–Waveform color in hex or name (such as '0x6366f1', 'white', or 'black'). Default: '0x6366f1'.
heightinteger–Image height in pixels. Default: 280.
includeBase64boolean–Return base64 image data in the response for vision models. Default: true.
inputPathstringyesPath to the audio or video file.
outputPathstringyesDestination path for the PNG image.
scalestring–Amplitude scale: 'lin', 'log', or 'sqrt'. Default: 'lin'.
widthinteger–Image width in pixels. Default: 1200.

No output schema declared.

No examples provided.

media_convert ~273

Convert video and audio files between formats. Includes presets for web MP4 (H.264/AAC), WebM (VP9/Opus), and animated GIF. Supports hardware acceleration on Apple Silicon, NVIDIA, Intel, and AMD.

NameTypeReqDescription
crfnumber–Quality factor from 0 to 51. Lower numbers mean higher quality. Default: 23 for MP4, 30 for WebM.
fpsnumber–Target frame rate in frames per second, such as 30, 60, or 15
hardwareAccelerationboolean–Use hardware-accelerated video encoding (VideoToolbox, NVENC, QSV, etc.) when available. Default: true.
inputPathstringyesPath to the source media file to convert
outputPathstringyesDestination path for the converted file (e.g. ./output.mp4, ./output.webm, ./animation.gif)
presetstring–Encoding preset: 'web_mp4' for browser playback, 'webm' for WebM video, 'gif' for animated GIF, or 'auto'. Default: 'auto'.
resolutionstring–Target size formatted as 'WIDTHxHEIGHT', such as '1920x1080' or '1280x720'

No output schema declared.

No examples provided.

media_probe ~58

Inspect audio and video files with ffprobe. Returns container metadata, stream details, codecs, resolution, bitrate, and duration as JSON.

NameTypeReqDescription
inputPathstringyesPath to the media file to inspect (e.g. './video.mp4')

No output schema declared.

No examples provided.

normalize_audio ~193

Normalize audio loudness using the broadcast standard EBU R128 (loudnorm). Supports -16 LUFS (podcasts/Reels), -14 LUFS (YouTube), and optional voice clarity enhancement (80Hz high-pass to remove mic rumble). Works on audio or video files.

NameTypeReqDescription
inputPathstringyesPath to the source audio or video file.
outputPathstringyesDestination path for the normalized media file.
targetLufsnumber–Target integrated loudness in LUFS (-16 for podcasts/Reels, -14 for YouTube, -23 for broadcast). Default: -16.
targetPeakDbnumber–Maximum allowed true peak level in dBTP. Default: -1.5.
voiceClarityboolean–Apply speech enhancement filters (80Hz high-pass to remove mic rumble and gentle compressor for presence). Default: false.

No output schema declared.

No examples provided.

reformat_aspect_ratio ~271

Change video aspect ratio to 9:16 vertical, 1:1 square, or 4:5 portrait. Adds blurred video borders, solid padding, or center crops.

NameTypeReqDescription
blurAmountnumber–Blur strength (5 to 50) for blur_background mode. Default: 20.
hardwareAccelerationboolean–Use hardware-accelerated video encoding (VideoToolbox, NVENC, QSV, etc.) when available. Default: true.
inputPathstringyesPath to the source video file.
modestring–Format mode: 'blur_background' adds blurred video borders, 'fit_pad' adds solid color padding, and 'crop_center' zooms and crops the center. Default: 'blur_background'.
outputPathstringyesDestination path for the reformatted video.
padColorstring–Background color for fit_pad mode, such as 'black', 'white', or hex '0x1e1e2e'. Default: 'black'.
targetRatiostring–Target aspect ratio: '9:16' for vertical reels, '1:1' for square, '16:9' for horizontal, or '4:5' for portrait. Default: '9:16'.

No output schema declared.

No examples provided.

trim_media ~206

Cut a segment from a video or audio file. Uses stream copy without re-encoding by default, or re-encodes when accurate cuts are needed.

NameTypeReqDescription
accurateReencodeboolean–Re-encode video for cuts between keyframes. Default: false (uses fast stream copy).
durationstring–Optional duration in seconds from startTime (e.g. '30'). If neither endTime nor duration is set, trims to end of file.
endTimestring–Optional end timestamp formatted as 'HH:MM:SS' or seconds. Do not combine with duration.
inputPathstringyesPath to the source media file to cut.
outputPathstringyesDestination path for the trimmed output file (e.g. './clip.mp4').
startTimestringyesStart timestamp formatted as 'HH:MM:SS' (e.g. '00:01:30') or seconds (e.g. '90').

No output schema declared.

No examples provided.

trim_silence ~196

Detect and remove silent pauses from audio or video files. Preserves video & audio lip-sync in 'start_end' mode. Returns original duration and seconds saved.

NameTypeReqDescription
inputPathstringyesPath to the source audio or video file.
minDurationSecondsnumber–Minimum silence duration in seconds to trigger a cut. Default: 0.5.
modestring–Trim mode: 'start_end' removes silence at the start and end (preserving perfect A/V sync on videos); 'all_pauses' removes silent pauses across audio files. Default: 'start_end'.
outputPathstringyesDestination path for the trimmed file (e.g. './recordings/cleaned.mp4').
thresholdDbnumber–Volume threshold in decibels, between -60dB and -10dB. Audio quieter than this is treated as silence. Default: -35.

No output schema declared.

No examples provided.

Install

How do I install the FFmpeg MCP Server server?

FFmpeg MCP Server runs locally as an npm package, launched with npx -y @ash_j1997/ffmpeg-mcp-server. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @ash_j1997/ffmpeg-mcp-server

# add to Claude Code
claude mcp add ashutos1997-ffmpeg-mcp-server -- npx -y @ash_j1997/ffmpeg-mcp-server
Common questions

What is the FFmpeg MCP Server server?

FFmpeg MCP Server is listed in the public MCP registry as io.github.Ashutos1997/ffmpeg-mcp-server. FFmpeg & FFprobe media processing toolkit for video, audio, and social formats. This page covers its npm package (@ash_j1997/ffmpeg-mcp-server).

Is the FFmpeg MCP Server server safe to use?

FFmpeg MCP Server scores 71 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 24 October 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the FFmpeg MCP Server server expose?

FFmpeg MCP Server exposes 17 tools: media_probe, media_convert, trim_media, extract_audio, extract_thumbnail, and 12 more. Their descriptions and schemas cost roughly 3,329 tokens of context every time the server is loaded.

Is the FFmpeg MCP Server server still maintained?

FFmpeg MCP Server is still listed as active in the MCP registry. We last reached this channel on 24 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the FFmpeg MCP Server server under?

FFmpeg MCP Server declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.