Skip to main content
Glama

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 ffmpeg

Related MCP server: FFmpeg MCP

Installation

Claude Code

claude mcp add ffmpeg -- npx -y github:pauloFroes/mcp-ffmpeg

Codex

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_dependencies

Check if ffmpeg and ffprobe are installed and available

get_media_info

Get media file metadata (duration, resolution, codecs, format)

extract_frames

Extract frames from video at regular intervals (returns base64 images)

extract_audio

Extract/convert audio from video to MP3

split_audio

Split audio file into chunks of N minutes

License

MIT

Available Tools

5 tools
check_dependenciesCheck DependenciesA
Read-only

Check if ffmpeg and ffprobe are installed and available in PATH. Returns status, version, and installation instructions if missing.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute path to a local video file
output_dirNoOutput directory (default: system temp dir)

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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

For a simple tool with 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 FramesA
Read-only

Extract frames/screenshots from a local video file at regular intervals. Returns images as base64 that Claude can see and analyze.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput image format (default: 'jpg')jpg
file_pathYesAbsolute path to a local video file
max_framesNoMaximum number of frames to extract (default: 10)
interval_secondsNoSeconds between each frame capture (default: 30)

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 InfoA
Read-only

Get metadata about a local media file (video or audio): duration, resolution, codecs, format, filesize. Uses ffprobe.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute path to a local media file

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute path to a local audio file
output_dirNoOutput directory (default: system temp dir)
chunk_minutesNoDuration of each chunk in minutes (default: 10)

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 5 tool updatesv1.0.0
    • First observedcheck_dependencies
    • First observedextract_audio
    • First observedextract_frames
    • First observedget_media_info
    • First observedsplit_audio

TDQS

A4.2/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

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/pauloFroes/mcp-ffmpeg'

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