FFmpeg MCP
FFmpeg MCP is a media processing server that lets you manipulate video and audio files through natural language commands via FFmpeg.
Get Media Info (
ffmpeg_get_info): Retrieve comprehensive metadata (duration, resolution, codecs, bitrate, stream details) for any video/audio file.Convert Format (
ffmpeg_convert): Convert media between formats (MP4, MKV, WebM, MOV, MP3, WAV, etc.) with optional resolution scaling and custom codec selection.Compress Video (
ffmpeg_compress): Reduce file size using quality presets (low/medium/high) and encoding speed presets (ultrafast to veryslow) with optional resolution scaling.Trim Video (
ffmpeg_trim): Extract a segment by specifying start time with either an end time or duration.Merge Videos (
ffmpeg_merge): Concatenate multiple video files into a single output file.Extract Audio (
ffmpeg_extract_audio): Pull audio tracks into formats like MP3, AAC, WAV, FLAC, OGG, or Opus with optional bitrate control.Extract Frames (
ffmpeg_extract_frames): Save frames as images (JPG, PNG, BMP) at a set time interval or as a fixed count distributed across the video.Add Subtitles (
ffmpeg_add_subtitles): Burn/hardcode subtitles (SRT, ASS, VTT) into video with customizable style (outline, shadow, background, glow) and font size.
Provides comprehensive video and audio processing capabilities including format conversion, compression, trimming, audio extraction, frame extraction, subtitle burning, and media file merging through FFmpeg
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@FFmpeg MCPcompress this video to medium quality to save space"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🎬 ffmpeg-mcp
A powerful MCP server for video and audio processing through FFmpeg
Integrate FFmpeg with Claude, Dive, and other MCP-compatible AI systems. Convert, compress, trim videos, extract audio, and more — all through natural language.
Features • Installation • Tools • Usage • Configuration
✨ 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
Open Dive Desktop
Click "+ Add MCP Server"
Paste the config provided above
Click "Save" and you're ready!
Use the Claude Code CLI to add the ffmpeg MCP server:
claude mcp add ffmpeg uvx ffmpeg-mcp-liteAdd to your claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.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-liteOr 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_pathReturns: JSON with duration, resolution, codecs, bitrate, streams
🔄 Conversion & Compression
Convert video/audio to different formats
Parameters:
file_path,output_format,scale,video_codec,audio_codecFormats: mp4, mkv, webm, mov, mp3, wav, etc.
Compress video to reduce file size
Parameters:
file_path,quality,scale,presetQuality: low, medium, high
Preset: ultrafast to veryslow
✂️ Editing
Trim video to extract a segment
Parameters:
file_path,start_time,end_timeordurationTime format: "00:01:30" or seconds
Concatenate multiple videos into one
Parameters:
file_paths(list),output_pathSupports: Same codec videos
🎵 Audio & Frames
Extract audio track from video
Parameters:
file_path,audio_format,bitrateFormats: mp3, aac, wav, flac, ogg, opus
Extract frames as images
Parameters:
file_path,intervalorcount,formatFormats: jpg, png, bmp, webp
📝 Subtitles
Burn-in subtitles to video (hardcode)
Parameters:
file_path,subtitle_path,style,font_size,output_pathFormats: 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
pngorwebpoverjpg— 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 |
| Path to ffmpeg binary |
|
| Path to ffprobe binary |
|
| Default output directory |
|
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!
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing-feature)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
Available Tools
8 toolsffmpeg_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
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| subtitle_path | Yes | ||
| style | No | outline | |
| font_size | No | ||
| output_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| quality | No | medium | |
| scale | No | ||
| preset | No | medium |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| output_format | Yes | ||
| scale | No | ||
| video_codec | No | ||
| audio_codec | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| audio_format | No | mp3 | |
| bitrate | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| interval | No | ||
| count | No | ||
| format | No | jpg |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| file_paths | Yes | ||
| output_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| start_time | Yes | ||
| end_time | No | ||
| duration | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
8 tool updates
v1.0.0- First observed
ffmpeg_add_subtitles - First observed
ffmpeg_compress - First observed
ffmpeg_convert - First observed
ffmpeg_extract_audio - First observed
ffmpeg_extract_frames - First observed
ffmpeg_get_info - First observed
ffmpeg_merge - First observed
ffmpeg_trim
TDQS
Each tool has a clearly distinct purpose: adding subtitles, compressing, converting, extracting audio, extracting frames, getting info, merging, and trimming. No overlap in functionality.
All tools follow a consistent 'ffmpeg_verb_noun' pattern in snake_case (e.g., ffmpeg_extract_audio, ffmpeg_get_info). No deviations.
With 8 tools, the server covers a broad range of common FFmpeg operations without being excessive. Each tool serves a distinct, useful purpose.
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
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
- RendobarOAuthcom.rendobar
Transform video, audio and images, and generate media from prompts. FFmpeg, captions, models.
Video, audio, and image processing for AI agents: convert, transcribe, upscale - 150+ operations.
FFmpeg as a service for AI agents: typed video editing tools, async jobs, downloadable outputs.
Hosted MCP tools for FFmpeg-style video and audio processing through FFMPEG API.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables video editing using natural language commands powered by FFmpeg, supporting operations like trimming, merging, format conversion, and more with real-time progress tracking and error handling.50-
- AlicenseBqualityDmaintenanceProvides powerful video and audio editing capabilities through FFmpeg, enabling AI assistants to perform professional-grade operations including format conversion, trimming, overlays, transitions, and advanced audio processing.2783MIT
- AlicenseAqualityDmaintenanceProvides video and audio manipulation tools powered by FFmpeg, enabling AI assistants to perform media operations such as cutting, converting, and removing silence.61052MIT
- FlicenseBqualityDmaintenanceEnables AI assistants to perform video and audio processing tasks such as format conversion, cutting, merging, and adding effects via FFmpeg, with hardware acceleration support.193-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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