Skip to main content
Glama

🎬 ffmpeg-mcp

A powerful MCP server for video and audio processing through FFmpeg

PyPI version License: MIT Python Version

Integrate FFmpeg with Claude, Dive, and other MCP-compatible AI systems. Convert, compress, trim videos, extract audio, and more — all through natural language.

FeaturesInstallationToolsUsageConfiguration


✨ Features

📊 Media Information

  • Get comprehensive metadata

  • Duration, resolution, codecs

  • Bitrate and stream details

  • JSON formatted output

🔄 Format Conversion

  • Convert between any formats

  • MP4, MKV, WebM, MOV, etc.

  • Custom video/audio codecs

  • Resolution scaling

🗜️ Video Compression

  • Quality presets (low/medium/high)

  • Encoding speed control

  • H.264 optimization

  • Size reduction stats

✂️ Video Trimming

  • Precise start/end times

  • Duration-based cuts

  • Stream copy (fast)

  • No re-encoding needed

🎵 Audio Extraction

  • Multiple formats supported

  • MP3, AAC, WAV, FLAC, OGG, Opus

  • Bitrate control

  • High quality output

🎞️ Advanced Features

  • Merge multiple videos

  • Extract frames as images

  • Interval or count-based extraction

  • JPG, PNG, BMP, WebP output

📝 Subtitles

  • Burn-in SRT/ASS/VTT subtitles

  • Multiple styles available

  • Customizable font size

  • Works great with Whisper MCP


Related MCP server: Video & Audio Editing MCP Server

🚀 Installation

Prerequisites

Install FFmpeg on your system:

Getting Started

Add the following config to your MCP client:

{
  "mcpServers": {
    "ffmpeg": {
      "command": "uvx",
      "args": ["ffmpeg-mcp-lite"]
    }
  }
}

MCP Client Configuration

  1. Open Dive Desktop

  2. Click "+ Add MCP Server"

  3. Paste the config provided above

  4. Click "Save" and you're ready!

Use the Claude Code CLI to add the ffmpeg MCP server:

claude mcp add ffmpeg uvx ffmpeg-mcp-lite

Add to your claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "ffmpeg": {
      "command": "uvx",
      "args": ["ffmpeg-mcp-lite"]
    }
  }
}

Go to Cursor Settings -> MCP -> New MCP Server. Use the config provided above.

Install via the VS Code CLI:

code --add-mcp '{"name":"ffmpeg","command":"uvx","args":["ffmpeg-mcp-lite"]}'

Follow the configure MCP guide using the standard config from above.

Manual Installation

pip install ffmpeg-mcp-lite

Or with uv:

uv pip install ffmpeg-mcp-lite

🛠️ Available Tools

All tools are prefixed with ffmpeg_ to avoid naming conflicts with other MCP servers.

📊 Media Information

Get comprehensive video/audio metadata

  • Parameters: file_path

  • Returns: JSON with duration, resolution, codecs, bitrate, streams

🔄 Conversion & Compression

Convert video/audio to different formats

  • Parameters: file_path, output_format, scale, video_codec, audio_codec

  • Formats: mp4, mkv, webm, mov, mp3, wav, etc.

Compress video to reduce file size

  • Parameters: file_path, quality, scale, preset

  • Quality: low, medium, high

  • Preset: ultrafast to veryslow

✂️ Editing

Trim video to extract a segment

  • Parameters: file_path, start_time, end_time or duration

  • Time format: "00:01:30" or seconds

Concatenate multiple videos into one

  • Parameters: file_paths (list), output_path

  • Supports: Same codec videos

🎵 Audio & Frames

Extract audio track from video

  • Parameters: file_path, audio_format, bitrate

  • Formats: mp3, aac, wav, flac, ogg, opus

Extract frames as images

  • Parameters: file_path, interval or count, format

  • Formats: jpg, png, bmp, webp

📝 Subtitles

Burn-in subtitles to video (hardcode)

  • Parameters: file_path, subtitle_path, style, font_size, output_path

  • Formats: SRT, ASS, VTT

  • Styles: outline, shadow, background, glow


💡 Usage Examples

Get Media Information

"Get info about /path/to/video.mp4"
"What's the resolution and duration of this video?"
"Show me the codec information for my video"

Convert Videos

"Convert video.mp4 to WebM format"
"Convert this video to MKV with h265 codec"
"Convert and scale to 1280x720"

Compress Videos

"Compress video.mp4 with medium quality"
"Compress this video to reduce file size, use fast preset"
"Compress with high quality and scale to 1920:-1"

Trim Videos

"Trim video.mp4 from 00:01:00 to 00:02:30"
"Cut the first 30 seconds from this video"
"Extract a 1-minute clip starting at 5:00"

Extract Audio

"Extract audio from video.mp4 as MP3"
"Get the audio track in AAC format with 192k bitrate"
"Extract audio as FLAC for best quality"

Extract Frames

"Extract one frame every 5 seconds from video.mp4"
"Get 10 frames evenly distributed from this video"
"Extract frames as PNG images"
"Extract frames as WebP for screen recordings"

💡 For screen recordings, prefer png or webp over jpg — JPEG chroma subsampling smears anti-aliased text and 1px UI borders.

Merge Videos

"Merge video1.mp4 and video2.mp4 together"
"Concatenate these three videos into one"

Add Subtitles

"Add subtitles.srt to video.mp4"
"Burn in Chinese subtitles with shadow style"
"Add subtitles with font size 32 and glow effect"

🔧 Configuration

Environment Variables

Variable

Description

Default

FFMPEG_PATH

Path to ffmpeg binary

ffmpeg

FFPROBE_PATH

Path to ffprobe binary

ffprobe

FFMPEG_OUTPUT_DIR

Default output directory

~/Downloads

Custom Configuration

{
  "mcpServers": {
    "ffmpeg": {
      "command": "uvx",
      "args": ["ffmpeg-mcp-lite"],
      "env": {
        "FFMPEG_OUTPUT_DIR": "/path/to/output"
      }
    }
  }
}

🏗️ Architecture

Built With

  • FFmpeg - Video/audio processing engine

  • FastMCP - MCP Python framework

  • asyncio - Async subprocess execution

  • Python 3.10+ - Type hints and modern features

Key Features

  • Async Processing: Non-blocking FFmpeg execution

  • Type Safe: Full type hints with mypy validation

  • Well Tested: 32 test cases with pytest

  • Cross Platform: Works on Windows, macOS, Linux

  • Modular Design: One file per tool


🤝 Contributing

Contributions are welcome!

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request

Development

# Clone and install
git clone https://github.com/kevinwatt/ffmpeg-mcp-lite.git
cd ffmpeg-mcp-lite
uv sync

# Run tests
uv run pytest

# Type checking
uv run mypy src/

# Linting
uv run ruff check src/

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.


🙏 Acknowledgments

  • FFmpeg - The powerful multimedia framework

  • Anthropic - For the Model Context Protocol

  • Dive - MCP-compatible AI platform


⬆ Back to Top

Available Tools

8 tools
ffmpeg_add_subtitlesA

Add subtitles to a video file (burn-in/hardcode).

Args:
    file_path: Path to the input video file
    subtitle_path: Path to the subtitle file (SRT, ASS, VTT)
    style: Subtitle style - "outline" (default), "shadow", "background", or "glow"
    font_size: Font size for subtitles (default: 24)
    output_path: Optional output file path. If not specified, saves to default output directory.

Returns:
    Path to the output video with subtitles
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
subtitle_pathYes
styleNooutline
font_sizeNo
output_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses that subtitles are burned-in (destructive) and mentions default output path behavior, but lacks details on authorization or rate limits.

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 concise, uses a clear docstring format with Args and Returns, front-loads the main purpose, and contains no redundant information.

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

Completeness5/5

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

Despite 5 parameters and no annotations, the description covers all inputs and the return type. Since an output schema exists (context indicates 'true'), the description appropriately avoids duplicating that information.

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

Parameters4/5

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

With 0% schema description coverage, the description adds significant meaning by explaining each parameter's purpose (e.g., 'style' enum values, 'font_size' default) and the return value, going beyond the bare 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 'Add subtitles to a video file (burn-in/hardcode)', using a specific verb and resource, and distinguishes from sibling tools like ffmpeg_compress or ffmpeg_extract_audio.

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

Usage Guidelines3/5

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

The description implies usage for adding subtitles but does not provide explicit guidance on when to use this tool vs alternatives or mention any prerequisites or exclusions.

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

ffmpeg_compressA

Compress a video file to reduce file size.

Args:
    file_path: Path to the input video file
    quality: Compression quality level - "low" (smallest file), "medium", or "high" (best quality)
    scale: Optional resolution scale (e.g., "1280:720", "1920:-1" for auto height)
    preset: Encoding speed preset - faster presets = larger files, slower = smaller files

Returns:
    Path to the compressed file
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
qualityNomedium
scaleNo
presetNomedium

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It explains parameters and return value but does not disclose whether the tool overwrites the original file, any destructive potential, or required permissions. Behavioral traits beyond parameter effects are missing.

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 concise and well-structured with a clear purpose sentence followed by an Args list. Every sentence adds value, with no redundant information.

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

Completeness4/5

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

The description covers all parameters and return type, but lacks broader context: no mention of supporting formats, whether output file is new or overwrites, or any side effects. With no annotations, a bit more completeness on behavioral context would be ideal.

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

Parameters5/5

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

Schema description coverage is 0%, so the description compensates fully. It explains each parameter: file_path path, quality levels with their effect on file size, scale format example, and preset trade-off between speed and size. This adds significant meaning beyond the bare 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 'Compress a video file to reduce file size.' This is a specific verb (compress) and resource (video file), and it distinguishes from sibling tools like ffmpeg_convert or ffmpeg_extract_audio.

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

Usage Guidelines3/5

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

The description does not provide explicit guidance on when to use this tool versus alternatives, such as converting formats or extracting audio. The purpose is implied but no exclusions or alternatives are mentioned.

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

ffmpeg_convertB

Convert video/audio to a different format.

Args:
    file_path: Path to the input media file
    output_format: Target format (e.g., mp4, mkv, webm, mp3, wav)
    scale: Optional resolution scale (e.g., "1280:720", "1920:-1" for auto height)
    video_codec: Optional video codec (e.g., libx264, libx265, libvpx-vp9)
    audio_codec: Optional audio codec (e.g., aac, mp3, opus)

Returns:
    Path to the converted file
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
output_formatYes
scaleNo
video_codecNo
audio_codecNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description should disclose behavioral traits, but it only states the return type and does not mention error handling, overwrite behavior, or other 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.

Conciseness4/5

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

The description is a well-structured docstring with clearly labeled Args and Returns sections, and contains no unnecessary words.

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?

Given the tool's moderate complexity (5 parameters, some optional) and the presence of an output schema, the description covers the essential aspects but lacks details on edge cases and usage context.

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

Parameters4/5

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

With 0% schema description coverage, the description compensates by providing examples for scale and codec parameters, and explaining output_format. However, it could be more precise about allowed values.

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 'Convert video/audio to a different format' with a specific verb and resource, and it is distinct from sibling tools like ffmpeg_extract_audio, ffmpeg_compress, etc.

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?

The description does not provide any guidance on when to use this tool versus the siblings, nor does it mention when not to use it or alternative tools.

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

ffmpeg_extract_audioA

Extract audio track from a video file.

Args:
    file_path: Path to the input video file
    audio_format: Output audio format (mp3, aac, wav, flac, ogg, opus)
    bitrate: Audio bitrate (e.g., "128k", "192k", "320k"). If not specified, uses format default.

Returns:
    Path to the extracted audio file
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
audio_formatNomp3
bitrateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

Describes input, output format, and returns path, but lacks behavioral details like file modification, output location, or error handling. Annotations absent, so description partially compensates.

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?

Very concise: one sentence for purpose, bulleted args, and returns. No wasted words. Front-loaded with action.

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

Completeness4/5

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

Covers purpose, all parameters, and return value. With output schema present, return is documented. Minor omission: no mention of output directory or non-modification of input, but adequate for a simple extraction tool.

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

Parameters5/5

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

Adds significant meaning beyond schema: explains file_path purpose, enum values for audio_format, and format examples for bitrate. Schema coverage 0%, so description fully compensates.

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?

Clearly states 'Extract audio track from a video file' with specific verb and resource. Distinguishes from sibling tools like ffmpeg_convert or ffmpeg_extract_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 vs alternatives. Does not mention when not to use or reference sibling tools.

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

ffmpeg_extract_framesA

Extract frames from a video as images.

Args:
    file_path: Path to the input video file
    interval: Extract one frame every N seconds (e.g., 1.0 for one frame per second)
    count: Total number of frames to extract (evenly distributed). Mutually exclusive with interval.
    format: Output image format (jpg, png, bmp)

Returns:
    Path to the directory containing extracted frames
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
intervalNo
countNo
formatNojpg

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It mentions the return value but omits details on side effects, authorization needs, or file handling behavior (e.g., overwriting existing directories).

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 concise and structured with Args/Returns sections. Every sentence is useful, though it could be slightly more terse.

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

Completeness4/5

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

Given the tool's simplicity and the presence of an output schema (though not shown), the description adequately covers inputs and output. However, additional context on performance or disk usage would improve completeness.

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

Parameters4/5

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

Schema coverage is 0%, so the description fully defines all parameters: file_path, interval, count (with mutual exclusivity), and format with enum values. This adds high value beyond 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 'Extract frames from a video as images,' which is specific and distinguishes it from siblings like ffmpeg_extract_audio or ffmpeg_compress.

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 explains the key parameters and their mutual exclusivity (interval vs count), but does not explicitly guide when to use this tool versus other sibling tools.

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

ffmpeg_get_infoA

Get video/audio file metadata using ffprobe.

Args:
    file_path: Path to the media file

Returns:
    JSON string with media metadata including duration, resolution,
    codecs, bitrate, and stream information
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full burden. It mentions the return format (JSON string with metadata fields) but does not disclose side effects, if any, or behavior like whether it modifies the file. Basic but incomplete.

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 short and includes 'Args' and 'Returns' sections. It is front-loaded with the purpose. However, the labels are somewhat redundant given the schema, but overall efficient.

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?

The tool has an output schema, so return values are documented. The description covers the basic purpose and parameters. However, missing usage guidelines and behavioral transparency leave gaps for a complete understanding.

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

Parameters2/5

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

The schema has 0% description coverage. The description adds minimal meaning beyond the property name by stating 'Path to the media file' for file_path. This barely improves understanding beyond the schema's field name and type.

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 'Get video/audio file metadata using ffprobe', specifying the tool's function and the underlying tool. It distinguishes from sibling tools like ffmpeg_compress or ffmpeg_convert, which handle manipulation tasks.

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

Usage Guidelines3/5

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

The description implicitly suggests use for metadata retrieval but does not provide explicit guidance on when to use it over alternatives or when not to use it. No exclusions or context hints are given.

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

ffmpeg_mergeA

Concatenate multiple video files into one.

Args:
    file_paths: List of paths to video files to merge (in order)
    output_path: Optional output file path. If not specified, saves to default output directory.

Returns:
    Path to the merged file
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathsYes
output_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are present, so the description bears full responsibility for disclosing behavior. It only states the basic operation and mentions an optional output path, but omits critical behavioral details like file format compatibility, codec requirements, error handling, or behavior when files have different resolutions.

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 concise, using a clear structure (Args/Returns). Two sentences for the main description and two for parameters, but no unnecessary information. It could be slightly more compact but is well-organized.

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?

While the description covers the minimal essentials for merging files, it lacks completeness regarding supported formats, order enforcement, error conditions, and return value details. An output schema exists but the description does not leverage it to explain the output path format.

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

Parameters4/5

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

Schema coverage is 0%, so the description adds significant value beyond the schema. It explains that file_paths is a list of paths in order, and output_path is optional with a default behavior. This provides necessary context for correct invocation.

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's purpose with a specific verb ('concatenate') and resource ('multiple video files into one'). It effectively distinguishes from sibling tools like ffmpeg_trim, ffmpeg_compress, etc., which have different operations.

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

Usage Guidelines3/5

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

The description implies the tool is for merging video files in order, but it lacks explicit guidance on when to use it versus alternatives (e.g., when to use ffmpeg_merge vs ffmpeg_convert or other tools). No 'when not to use' or prerequisite information is provided.

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

ffmpeg_trimA

Trim a video to extract a specific segment.

Args:
    file_path: Path to the input video file
    start_time: Start time (e.g., "00:01:30" or "90" for 90 seconds)
    end_time: End time (e.g., "00:02:00"). Mutually exclusive with duration.
    duration: Duration of the clip (e.g., "30" for 30 seconds). Mutually exclusive with end_time.

Returns:
    Path to the trimmed file
ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
start_timeYes
end_timeNo
durationNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

The description notes the mutual exclusivity of end_time and duration, which is important. However, it does not disclose whether the original file is modified, or any error behavior (e.g., invalid times). No annotations are present to compensate.

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 concise with a clear structure: a one-line summary followed by Args and Returns sections. Every sentence is relevant and efficient.

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 4-parameter tool with no annotations, the description covers parameter usage but lacks information about supported video formats, error handling, and output details beyond a file path. The presence of an output schema partially mitigates Return documentation.

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

Parameters4/5

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

With 0% schema description coverage, the description provides clear explanations for each parameter, including examples for time formats and the mutual exclusivity condition, adding significant meaning beyond 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 states 'Trim a video to extract a specific segment' with a specific verb and resource. This clearly distinguishes it from siblings like ffmpeg_extract_audio or ffmpeg_compress.

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_extract_frames or ffmpeg_convert. The description does not mention prerequisites or exclusions.

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. Dates show when Glama detected each change.

  1. 8 tool updatesv1.0.0
    • First observedffmpeg_add_subtitles
    • First observedffmpeg_compress
    • First observedffmpeg_convert
    • First observedffmpeg_extract_audio
    • First observedffmpeg_extract_frames
    • First observedffmpeg_get_info
    • First observedffmpeg_merge
    • First observedffmpeg_trim

TDQS

A4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: adding subtitles, compressing, converting, extracting audio, extracting frames, getting info, merging, and trimming. No overlap in functionality.

Naming Consistency5/5

All tools follow a consistent 'ffmpeg_verb_noun' pattern in snake_case (e.g., ffmpeg_extract_audio, ffmpeg_get_info). No deviations.

Tool Count5/5

With 8 tools, the server covers a broad range of common FFmpeg operations without being excessive. Each tool serves a distinct, useful purpose.

Completeness4/5

The tool set covers core video/audio operations (info, conversion, compression, trimming, merging, subtitle addition) but lacks advanced features like video effects or audio filters. It is sufficient for typical use cases.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kevinwatt/ffmpeg-mcp-lite'

If you have feedback or need assistance with the MCP directory API, please join our Discord server