Skip to main content
Glama

FFmpeg MCP Server

A Model Context Protocol (MCP) server that provides video and audio manipulation tools powered by FFmpeg. This server enables AI assistants to perform media operations like cutting videos, converting formats, removing silence, and more.

Features

  • Self-contained - Includes bundled FFmpeg binary via ffmpeg-static, no system installation required

  • Format conversion - Convert between audio/video formats (mp4, mp3, wav, mov, etc.)

  • Video editing - Cut segments, concatenate multiple videos, convert images to video

  • Audio processing - Detect and remove silent segments automatically

  • Flexible - Raw FFmpeg command support for advanced operations

Related MCP server: FFmpeg MCP

Available Tools

Tool

Description

cut_video

Extract a segment from a video using start time and duration

image_to_video

Convert a static image to a video with fixed duration

concat_videos

Join multiple videos into one

convert

Convert between media formats (auto-detects from file extension)

remove_silence

Detect and remove silent segments from video

ffmpeg_raw

Execute raw FFmpeg commands for advanced operations

Installation

npm install -g ffmpeg-mcp-server

From source

git clone https://github.com/PedroMarianoAlmeida/ffmpeg-mcp
cd ffmpeg-mcp
npm install
npm run build

Configuration

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "ffmpeg": {
      "command": "npx",
      "args": ["ffmpeg-mcp-server"]
    }
  }
}

Claude Code

Add to your Claude Code MCP settings:

{
  "mcpServers": {
    "ffmpeg": {
      "command": "npx",
      "args": ["ffmpeg-mcp-server"]
    }
  }
}

Usage Examples

Cut a video segment

"Cut the first 30 seconds from video.mp4"
→ Uses cut_video tool

Convert formats

"Convert video.mov to mp4"
"Extract audio from video.mp4 as mp3"
→ Uses convert tool

Remove silence

"Remove silent parts from my podcast recording"
→ Uses remove_silence tool (detects silence > 2s at -30dB by default)

Advanced operations

"Add a watermark to my video"
"Speed up the video 2x"
"Rotate video 90 degrees"
→ Uses ffmpeg_raw tool with AI-constructed FFmpeg commands

Development

# Install dependencies
npm install

# Build
npm run build

# Project structure
src/
  index.ts    # MCP server setup and tool registrations
  lib.ts      # FFmpeg operations

License

MIT

Available Tools

6 tools
concat_videosC

Concatenate multiple videos into one

ParametersJSON Schema
NameRequiredDescriptionDefault
inputPathsYesArray of video file paths to concatenate
outputPathYesPath for output video file

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description discloses no behavioral traits such as whether it overwrites the output file, supports specific codecs, or the order of concatenation. This leaves the agent uninformed about side effects or requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that directly conveys the tool's purpose. No unnecessary information, though a bit more detail could be added without sacrificing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with two parameters and no output schema, the description is minimally adequate. However, it lacks details on error handling, output format, or any behavioral important for the agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers both parameters with descriptions. The tool description adds no further meaning beyond the schema, but the schema coverage is complete, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool concatenates multiple videos into one, using a specific verb and resource. It distinguishes from siblings like cut_video or convert, but could be improved by mentioning ordering or format compatibility.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives like ffmpeg_raw or convert. The description does not mention prerequisites or scenarios where concatenation is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convertB

Convert media between formats (audio-to-audio, video-to-video, or video-to-audio). Format is auto-detected from file extension.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputPathYesPath to input media file
outputPathYesPath for output file (extension determines format)
audioBitrateNoAudio bitrate (e.g., '192k', '320k')
videoBitrateNoVideo bitrate (e.g., '2M', '5M')

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description only mentions auto-detection of format from extension, which adds some value, but fails to disclose crucial behavioral traits like whether it overwrites existing files, supported formats, or any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the main action and supported conversions. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite schema covering parameters, the description lacks context on expected behavior (e.g., return value, error handling, supported formats) and no output schema. For a conversion tool, it is incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover 100% of parameters, so baseline is 3. The description adds that format is auto-detected, reinforcing outputPath semantics but not providing new meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it converts media between formats with specific combinations (audio-to-audio, video-to-video, video-to-audio). It is distinct from sibling tools like concat_videos or cut_video, which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like ffmpeg_raw or image_to_video. Lacks explicit context for usage or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cut_videoB

Extract a segment from a video file

ParametersJSON Schema
NameRequiredDescriptionDefault
inputPathYesPath to input video file
outputPathYesPath for output video file
startTimeYesStart time (e.g., '00:01:30' or '90')
durationYesDuration (e.g., '00:00:30' or '30')

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden. It only states the action without disclosing behavioral traits such as file handling (non-destructive due to input/output paths), codec support, or error responses. The minimal description fails to inform the agent of important behaviors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no extraneous words. It efficiently communicates the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks context about return values, success criteria, or limitations (e.g., supported video formats). With 4 required parameters and no output schema, the agent needs more information to invoke the tool correctly, such as expected output format or error handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, providing descriptions for all 4 parameters. The tool description adds no additional meaning beyond the schema, such as format examples or constraints. Baseline 3 is appropriate given the schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Extract a segment from a video file' uses a specific verb and resource, clearly identifying the tool's function. It distinguishes itself from siblings like concat_videos, convert, and remove_silence by focusing on segment extraction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidelines are provided. The description does not indicate when to use this tool versus alternatives, nor does it specify prerequisites or limitations. The agent must infer context from the sibling list without explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ffmpeg_rawA

Execute a raw FFmpeg command with custom arguments. Use this for advanced operations not covered by other tools (e.g., filters, effects, watermarks, speed changes).

ParametersJSON Schema
NameRequiredDescriptionDefault
argsYesArray of FFmpeg arguments (e.g., ['-i', 'input.mp4', '-vf', 'scale=1280:720', 'output.mp4'])

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description fails to disclose critical behavioral traits: no mention of potential side effects (e.g., file creation, overwrites), error handling, or safety warnings for raw command execution.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences efficiently state purpose, usage context, and examples. No redundant information; front-loaded with core function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Without an output schema, the description should explain what the tool returns or produces (e.g., output files, console output). It does not, leaving significant gaps for an advanced raw execution tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and already describes the args parameter well. The description adds a helpful usage example but no additional semantic detail beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool executes raw FFmpeg commands and distinguishes itself from sibling tools by specifying it's for advanced operations not covered by others, with concrete examples (filters, effects, etc.).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises using this tool for advanced operations not covered by other tools and lists examples. However, it lacks explicit when-not-to-use guidance or direction to specific siblings for simpler tasks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

image_to_videoB

Convert a static image to a video with fixed duration

ParametersJSON Schema
NameRequiredDescriptionDefault
imagePathYesPath to input image file
outputPathYesPath for output video file
durationYesDuration in seconds
fpsNoFrames per second

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, and the description does not disclose behavioral traits beyond the basic operation. It does not mention if files are overwritten, required permissions, or how errors are handled. The description carries the full burden but provides minimal transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no unnecessary words. It is front-loaded with the essential purpose and efficiently communicates the core functionality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 4 parameters and no output schema or annotations, the description provides a minimal overview but omits details like supported input formats, aspect ratio handling, and output codec. It is adequate for a straightforward conversion but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds limited value by reiterating 'fixed duration', but does not elaborate on parameter constraints like valid image formats or the effect of fps on output quality.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Convert'), the resource ('static image to a video'), and a key constraint ('fixed duration'). It distinguishes from sibling tools like concat_videos and ffmpeg_raw.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, limitations, or context in which image_to_video is preferred over concat_videos or ffmpeg_raw.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_silenceB

Detect and remove silent segments from a video, keeping only non-silent parts

ParametersJSON Schema
NameRequiredDescriptionDefault
inputPathYesPath to input video file
outputPathYesPath for output video file
noiseThresholdNoAudio level threshold for silence detection (e.g., '-30dB')-30dB
minSilenceDurationNoMinimum duration in seconds to consider as silence

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description carries full burden but only states basic functionality. Missing details on how silent segments are removed (e.g., splicing, speed changes), output consequences, or limitations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no redundancy. However, it could include additional useful context without being verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and no annotations. Description lacks explanations of return value, behavior for edge cases, or how parameters interact. Incomplete for a tool with 4 parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds no additional meaning beyond the parameter descriptions already present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool detects and removes silent segments from a video, keeping only non-silent parts. It uses specific verbs and resource, and distinguishes from siblings like cut_video which cuts by time or frames.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like cut_video or ffmpeg_raw. Does not mention prerequisites, when not to use, or typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv1.0.2
    • First observedconcat_videos
    • First observedconvert
    • First observedcut_video
    • First observedffmpeg_raw
    • First observedimage_to_video
    • First observedremove_silence

TDQS

A3.5/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct FFmpeg operation: concatenation, conversion, cutting, raw commands, image-to-video, and silence removal. No overlap; ffmpeg_raw is explicitly a catch-all for advanced cases, maintaining clear boundaries.

Naming Consistency4/5

Tool names mostly follow a verb_noun pattern in snake_case (e.g., concat_videos, cut_video, remove_silence). Convert is slightly generic but consistent with the pattern. Overall naming is predictable and readable.

Tool Count5/5

6 tools is well-scoped for an FFmpeg server. It covers common operations without being overwhelming, and each tool has a clear purpose. The count is appropriate for the domain.

Completeness4/5

The set covers core operations: concatenation, conversion, cutting, image-to-video, and silence removal. Missing some specific tasks like subtitles or scaling, but ffmpeg_raw fills gaps for advanced needs. Minor gaps remain.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers