mcp-ffmpeg
Wraps FFmpeg and FFprobe for local media processing, providing tools to check dependencies, get media file metadata, extract frames from video as base64 images, extract/convert audio to MP3, and split audio into chunks.
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., "@mcp-ffmpegextract audio from video.mp4 to mp3"
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.
mcp-ffmpeg
MCP server wrapping FFmpeg and FFprobe for local media processing.
Works with Claude Code, Codex, Claude Desktop, Cursor, VS Code, Windsurf, and any MCP-compatible client.
Prerequisites
Node.js 18+
FFmpeg and FFprobe installed and in PATH
Install FFmpeg:
brew install ffmpegRelated MCP server: FFmpeg MCP
Installation
Claude Code
claude mcp add ffmpeg -- npx -y github:pauloFroes/mcp-ffmpegCodex
Add to your codex.toml:
[mcp.ffmpeg]
command = "npx"
args = ["-y", "github:pauloFroes/mcp-ffmpeg"]Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"ffmpeg": {
"command": "npx",
"args": ["-y", "github:pauloFroes/mcp-ffmpeg"]
}
}
}Cursor
Add to .cursor/mcp.json:
{
"mcpServers": {
"ffmpeg": {
"command": "npx",
"args": ["-y", "github:pauloFroes/mcp-ffmpeg"]
}
}
}VS Code
Add to .vscode/mcp.json:
{
"servers": {
"ffmpeg": {
"command": "npx",
"args": ["-y", "github:pauloFroes/mcp-ffmpeg"]
}
}
}Windsurf
Add to ~/.windsurf/mcp.json:
{
"mcpServers": {
"ffmpeg": {
"command": "npx",
"args": ["-y", "github:pauloFroes/mcp-ffmpeg"]
}
}
}Available Tools
Tool | Description |
| Check if ffmpeg and ffprobe are installed and available |
| Get media file metadata (duration, resolution, codecs, format) |
| Extract frames from video at regular intervals (returns base64 images) |
| Extract/convert audio from video to MP3 |
| Split audio file into chunks of N minutes |
License
MIT
Available Tools
5 toolscheck_dependenciesCheck DependenciesARead-only
Check if ffmpeg and ffprobe are installed and available in PATH. Returns status, version, and installation instructions if missing.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark as read-only and non-destructive. Description adds value by detailing return includes status, version, and installation instructions, and checks PATH. No contradictions.
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?
Single, efficient sentence front-loading the action. No extraneous words; every part earns its place.
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 simplicity, zero parameters, and no output schema, description fully covers purpose and expected result. Complete for this 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?
No parameters (schema coverage 100%). Baseline of 4 for zero-parameter tools; description doesn't need to add param info.
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?
Description specifies the exact verb 'check' and resources 'ffmpeg' and 'ffprobe'. Clearly distinguishes from sibling tools like extract_audio or get_media_info by focusing on dependency verification.
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?
Implied usage: run before other tools to ensure dependencies exist. No explicit when-not-to-use or alternatives, but the context is clear due to tool's simplicity and zero parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_audioExtract AudioA
Extract/convert audio from a local video file to MP3. Returns the path to the extracted audio file.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Absolute path to a local video file | |
| output_dir | No | Output directory (default: system temp dir) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the description adds minimal behavioral info beyond stating the return value (path to audio). It does not disclose potential side effects, format specifics, or prerequisites beyond what is implicit.
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?
Two concise sentences with the action front-loaded. No unnecessary words. Every sentence adds value: purpose and return type.
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 simple tool with 2 parameters and no output schema, the description covers the main purpose and return. However, it lacks details on error handling, overwrite behavior, or dependency requirements, making it adequate but not comprehensive.
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 100% with descriptions for both parameters. The tool description does not add new semantic meaning beyond restating the purpose (extract audio from video). Baseline of 3 is appropriate.
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 specifies the action 'Extract/convert audio', the resource 'local video file', and the output format 'MP3'. It distinguishes itself from siblings like extract_frames (video frames) and split_audio (audio segments).
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 when audio extraction is needed, but it does not explicitly state when to prefer this tool over alternatives like split_audio or when not to use it. No exclusions or context for siblings are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_framesExtract FramesARead-only
Extract frames/screenshots from a local video file at regular intervals. Returns images as base64 that Claude can see and analyze.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output image format (default: 'jpg') | jpg |
| file_path | Yes | Absolute path to a local video file | |
| max_frames | No | Maximum number of frames to extract (default: 10) | |
| interval_seconds | No | Seconds between each frame capture (default: 30) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that images are returned as base64 and usable by Claude, providing behavioral context beyond the annotations.
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?
Two sentences, front-loaded with the main action and output, no wasted words. Efficient and to the point.
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?
With no output schema, the description explains the return format (base64 images for Claude). It covers input, process, and output, leaving no critical gaps for a read-only 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?
All 4 parameters are fully described in the input schema (100% coverage). The description does not add extra parameter meaning, but it implies interval_seconds via 'regular intervals'. Baseline 3 is appropriate.
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 verb 'extract' and resource 'frames from a local video file', with output specified as 'base64 that Claude can see'. It is specific and distinguishes from siblings like extract_audio or get_media_info.
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 extracting frames at regular intervals, but does not explicitly mention when not to use or alternative tools. Sibling tools are distinct, so the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_media_infoGet Media InfoARead-only
Get metadata about a local media file (video or audio): duration, resolution, codecs, format, filesize. Uses ffprobe.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Absolute path to a local media file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds value by specifying 'Uses ffprobe' (external tool) and 'local media file' constraint. No contradictions; the description complements annotations well.
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?
Two sentences with no superfluous content. Every word adds value: verb, resource, specific metadata fields, tool used. Front-loaded with key purpose.
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 no output schema, the description compensates by listing returned fields (duration, resolution, etc.) and the underlying method (ffprobe). Sufficient for a simple read-only 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?
Schema coverage is 100%, and the description only repeats 'local media file' which is already in the schema parameter description. No additional semantic value beyond reinforcing the context.
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 metadata about a local media file (video or audio)' with specific fields listed (duration, resolution, etc.), using a specific verb and resource. It distinguishes from sibling tools like extract_audio which have different purposes.
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 when metadata is needed but does not explicitly state when to use this tool versus alternatives, nor provide any when-not-to-use guidance. No mention of prerequisite checks or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
split_audioSplit AudioA
Split an audio file into chunks of N minutes. Returns paths to all chunk files. Useful for processing large files that exceed API size limits.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Absolute path to a local audio file | |
| output_dir | No | Output directory (default: system temp dir) | |
| chunk_minutes | No | Duration of each chunk in minutes (default: 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, consistent with description stating splitting creates new files. Description adds the use case context but does not elaborate on return format or potential side effects beyond path return.
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?
Two concise sentences, front-loaded with purpose and immediate context. No extraneous 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?
For a simple 3-parameter tool with no output schema, the description covers purpose, return value, and a key use case. Could mention default chunk minutes or output directory behavior, but overall adequate.
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 100%, and the description does not add significant semantics beyond the schema. It mentions chunk duration implicitly but does not add detail not already in 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?
Clearly states the verb 'Split an audio file into chunks of N minutes' and the resource 'audio file'. Also distinguishes from sibling tools which perform different actions (check dependencies, extract audio, extract frames, get media info).
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?
Explicitly mentions when to use: 'Useful for processing large files that exceed API size limits.' Does not mention when not to use or compare to alternatives, but the context is clear enough.
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.
5 tool updates
v1.0.0- First observed
check_dependencies - First observed
extract_audio - First observed
extract_frames - First observed
get_media_info - First observed
split_audio
TDQS
Each tool has a distinct purpose: checking dependencies, extracting audio, extracting frames, getting media info, and splitting audio. There is no overlap or ambiguity in their functionalities.
All tool names follow a consistent verb_noun pattern in snake_case, such as 'check_dependencies' and 'extract_audio', making them predictable and easy to understand.
With 5 tools, the server is well-scoped for common ffmpeg operations like extraction and metadata retrieval. It is neither too sparse nor too heavy.
The tool set covers essential audio/video extraction and info tasks, but lacks some common ffmpeg features like video conversion or merging. Minor gaps exist but do not severely hinder basic workflows.
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.
FFmpeg as a service for AI agents: typed video editing tools, async jobs, downloadable outputs.
Video, audio, and image processing for AI agents: convert, transcribe, upscale - 150+ operations.
Hosted MCP tools for FFmpeg-style video and audio processing through FFMPEG API.
Related MCP Servers
- 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
- AlicenseAqualityCmaintenanceEnables video and audio processing through FFmpeg, supporting format conversion, compression, trimming, audio extraction, frame extraction, video merging, and subtitle burning through natural language commands.826MIT
- 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/pauloFroes/mcp-ffmpeg'
If you have feedback or need assistance with the MCP directory API, please join our Discord server