Skip to main content
Glama

encodr-mcp

A high-quality, local-first Model Context Protocol server that exposes FFmpeg transcoding to any MCP host (Claude Desktop, Claude Code, …). Everything runs on your machine with open-source codecs — no cloud, no upload, no quality compromise.

CI Python License

Why

LLM agents are great at deciding what to transcode but shouldn't be trusted to hand-write ffmpeg incantations. encodr-mcp gives the model a small set of safe, well-typed tools with quality-first defaults baked in — CRF-based encoding, preset slow, sensible pixel formats — while still allowing full overrides.

Related MCP server: ffmpeg-mcp

Quality policy

All presets use constant-quality (CRF/VBR) encoding, not fixed bitrate — the best quality-per-byte. Defaults target visually-transparent output:

Media

Codec options

Default

Video

h264 (universal), h265, av1 (best compression), vp9

H.264 CRF 18, preset slow, yuv420p, +faststart

Audio

opus, aac, mp3, flac (lossless), wav

Opus 160k VBR

Image

webp, avif, jpeg, png (lossless)

WebP q90 / AVIF CRF 23

Nothing is locked — every tool accepts crf, preset, bitrate, quality, scaling, and fps overrides.

Tools

Tool

What it does

probe_media

Inspect format + streams (compact summary)

list_codecs

List supported codecs/formats and their defaults

transcode_video

Re-encode video (codec, CRF, scale, fps, audio)

remux_video

Change container with no re-encode (lossless, instant)

transcode_audio

Re-encode audio, optional EBU R128 loudness normalization

extract_audio

Pull the audio track out losslessly

convert_image

Convert/resize images

thumbnail

Grab a frame at a timestamp

burn_subtitles

Hardcode subtitles into video

extract_stream

Copy a single stream out by index

Requirements

  • FFmpeg on your PATH (ffmpeg + ffprobe). macOS: brew install ffmpeg.

  • Python 3.11+.

FFmpeg builds vary in which encoders/filters they ship. encodr-mcp detects this at runtime and returns a clear error (e.g. "webp requires the 'libwebp' encoder, which this FFmpeg build was not compiled with") instead of failing cryptically. In particular, convert_image to WebP needs libwebp, and burn_subtitles needs an FFmpeg built with libass. A full build (brew install ffmpeg, or most Linux distro packages) includes both.

Install

git clone https://github.com/lakshan-jk/encodr-mcp
cd encodr-mcp
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"

Run

encodr-mcp          # stdio transport
# or
python -m encodr_mcp

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "ffmpeg": {
      "command": "/absolute/path/to/encodr-mcp/.venv/bin/encodr-mcp"
    }
  }
}

Claude Code

claude mcp add ffmpeg -- /absolute/path/to/encodr-mcp/.venv/bin/encodr-mcp

Security / sandboxing

By default the server can read and write anywhere your user can. To confine all input/output paths to one directory tree, set:

export ENCODR_MCP_ROOT=/path/to/allowed/dir

Any path outside that root is rejected. Commands are always executed with an explicit argument list (never a shell string), so filenames can't inject shell commands.

Development

pytest            # unit tests + ffmpeg integration tests (auto-skipped if no ffmpeg)
ruff check .
mypy

License

MIT © Lakshan Kumar JK

Available Tools

10 tools
burn_subtitlesC

Burn (hardcode) a subtitle file into the video. Audio is copied unchanged.

NameRequiredDescriptionDefault
inputYes
outputYes
overwriteNo
subtitlesYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden. It usefully states that audio is copied unchanged, but it does not disclose overwrite behavior, whether the output is overwritten or errors when it exists, or any constraints around subtitle formats and video re-encoding.

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 two short sentences with no wasted words, and the core operation is front-loaded. It is appropriately sized for the information it chooses to include.

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

Completeness2/5

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

Although an output schema exists, the input schema has no parameter descriptions and there are no annotations. For a four-parameter mutation tool, the description omits too much about required inputs, overwrite behavior, and parameter meaning to be complete.

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?

Schema description coverage is 0%, so the description must explain all four parameters. It only indirectly implies an input video and subtitle file, and does not clarify the output path, overwrite flag, or accepted subtitle formats.

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

Purpose4/5

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

The description uses a specific verb plus resource: 'Burn (hardcode) a subtitle file into the video.' This clearly explains the operation and distinguishes it from generic transcoding or remuxing, though it does not explicitly name which sibling tool to use for soft subtitle embedding.

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 states what the tool does but gives no guidance on when to use it versus alternatives such as remux_video or transcode_video. There are no exclusions, prerequisites, or indications of when hardcoding subtitles is preferable.

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

convert_imageC

Convert/resize an image. Formats: webp, avif, jpeg, png (lossless).

For webp/jpeg, quality is 0-100; for avif, quality is a CRF-like value.

NameRequiredDescriptionDefault
fmtYes
inputYes
widthNo
heightNo
outputYes
qualityNo
overwriteNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.8/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 the full behavioral burden. It discloses format support and quality interpretation, but it does not explain whether the operation overwrites files by default, how existing outputs are handled, whether resizing preserves aspect ratio, or what permissions/access constraints apply.

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 short, front-loaded, and contains no wasted text. The core operation is stated first, followed by the two pieces of format/quality context that are most likely to affect invocation.

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

Completeness2/5

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

For a 7-parameter image-conversion tool with no annotations, the description is incomplete. The output schema covers return values, but the description still omits key invocation details such as overwrite semantics, resizing behavior, and input/output path handling.

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?

Schema description coverage is 0% across 7 parameters. The description adds useful meaning for fmt and quality, including valid formats and quality ranges, but leaves input, output, width, height, and overwrite undocumented in both schema and description.

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

Purpose4/5

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

The description clearly states a specific verb and resource: convert or resize an image. It also lists supported output formats, so the agent can distinguish this from video/audio sibling tools without opening the schema. It does not explicitly differentiate itself from the closest image-related sibling, thumbnail.

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 explains supported formats and quality semantics but gives no guidance on when to use this tool versus alternatives such as thumbnail or transcode_video. There are also no prerequisites or exclusions for input/output files, overwrite behavior, or required dimensions.

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

extract_audioB

Extract the audio track from a video losslessly (stream copy).

NameRequiredDescriptionDefault
inputYes
outputYes
overwriteNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/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 does disclose a meaningful behavioral trait – that the operation is a stream copy (fast, no quality loss, but fails or produces nothing if the container has no compatible audio stream) – yet it says nothing about what happens to an existing output file, whether the overwrite flag silently replaces data, or what errors look like.

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?

A single front-loaded sentence with the method qualifier in parentheses; nothing is wasted and the key constraint appears immediately.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but a file-mutating tool with zero annotations and zero parameter documentation leaves the agent guessing about overwrite semantics, path handling, and failure modes. The description is too thin for that burden.

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?

Schema description coverage is 0%, so all three parameters (input, output, overwrite) are undocumented in structured data. The description mentions no parameters at all – not the path formats, not the meaning of overwrite, not whether directories are created – so it fully fails to compensate for the coverage gap.

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

Purpose4/5

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

The description states a specific verb (extract) and resource (audio track from a video) and specifies the method (lossless stream copy). It partially distinguishes itself from siblings like transcode_audio and remux_video by declaring losslessness, but never names them, so the differentiation is implicit rather than explicit.

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 phrase 'losslessly (stream copy)' implies the usage condition: use this when you want the audio without re-encoding. However, there is no explicit statement of when to prefer this over transcode_audio or extract_stream, and no mention of preconditions such as the input actually containing an audio track.

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

extract_streamA

Extract a single stream (by absolute index from probe_media) losslessly.

NameRequiredDescriptionDefault
indexYes
inputYes
outputYes
overwriteNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/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 full behavioral burden. 'Losslessly' is a genuinely useful behavioral trait (no re-encoding), but it is silent on overwrite behavior when the output exists, error conditions for an invalid index, and permission requirements. The presence of an output schema relieves it of return-value explanation.

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?

A single tight sentence with no filler, and the most decision-relevant information (single stream, absolute index source, lossless) is front-loaded.

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 four-parameter extraction tool with an output schema, the description covers the essential selector and the lossless guarantee. The main remaining gap is overwrite semantics, which is a modest omission for a straightforward utility.

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 0%, so all four parameters are undocumented in the schema. The description clarifies the most ambiguous one ('absolute index from probe_media'), but leaves input path format, output path format, and the overwrite flag's effect entirely unexplained.

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

Purpose4/5

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

States a specific verb and resource ('Extract a single stream') and adds the distinguishing scope 'by absolute index' plus 'losslessly'. That differentiates it from the more targeted sibling extract_audio, though the description never names that sibling explicitly.

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 parenthetical 'from probe_media' implies the caller should run probe_media first to obtain the index, which is useful implicit sequencing. However, it gives no when-not guidance or explicit statement that extract_audio is the preferred route for audio-only extraction.

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

list_codecsA

List the supported video/audio codecs and image formats with their quality defaults.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/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 behavioral burden. The word "List" implies a read-only enumeration and there are no parameters or side effects to disclose, but the description does not explicitly state that it is non-mutating or describe any runtime constraints.

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

Conciseness5/5

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

The description is a single efficient sentence that front-loads the action (list), the resource (codecs and image formats), and the useful extra detail (quality defaults). There is no filler.

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 zero-parameter listing tool with an output schema, the description is nearly complete: it says what will be listed and that quality defaults are included. It could be slightly stronger by clarifying that it is a static/read-only catalog, but the output schema removes the need to explain return structure.

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?

The tool takes zero parameters, so there are no parameter semantics to explain. The baseline for zero-parameter tools is 4, and nothing in the description creates ambiguity about inputs.

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 a specific verb and resource: it lists supported video/audio codecs and image formats, plus their quality defaults. That clearly distinguishes it from sibling tools like probe_media or transcode_video, which inspect or process media rather than enumerate supported formats.

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 this is a discovery/reference tool, but it does not explicitly say when to use it versus alternatives such as probe_media. There are no exclusions or stated prerequisites, so the agent can infer usage but must do so from context.

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

probe_mediaB

Inspect a media file and return a compact summary of its format and streams.

NameRequiredDescriptionDefault
pathYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

With no annotations, the description must carry behavioral burden. 'Inspect' and 'return summary' imply a read-only, non-mutating operation with no side effects, which is helpful context. However, it doesn't explicitly state permissions or that it only reads, so it partially compensates but leaves gaps.

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?

A single front-loaded sentence with no wasted wording. It is appropriately sized, though it omits usage guidance that would strengthen structure.

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?

An output schema exists so return values need not be explained, and the description states the tool returns format/stream summaries. Still, for an inspection tool with an undocumented 'path' parameter, the description omits expected input format and any read-only confirmation.

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?

Schema description coverage is 0% for the single 'path' parameter, and the description adds no information about its format or expected value. With one undocumented parameter, the description should compensate but does not.

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

Purpose4/5

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

The description uses a specific verb (inspect) and resource (media file) and states what is returned: format and streams. It is fairly distinguishable from siblings like extract_stream or transcode_video, though it doesn't explicitly name them.

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 versus alternatives such as list_codecs or extract_stream, and no prerequisites or exclusions. Usage is only implied by the words 'inspect' and 'return summary'.

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

remux_videoB

Change a video's container (e.g. .mkv -> .mp4) with no re-encode. Lossless and fast.

NameRequiredDescriptionDefault
inputYes
outputYes
overwriteNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.2/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, and it does usefully disclose that the operation is lossless and re-encode-free. However it says nothing about failure modes that matter for a remux — e.g. when the target container cannot hold the existing codec — nor about file-write behavior beyond the existence of an output path.

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?

A single front-loaded sentence with an inline example and the two defining traits (lossless, fast). Every clause earns its place; nothing is padded or buried.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but for a file-mutating tool with zero annotation coverage and 0% parameter documentation, the description leaves overwrite semantics, path expectations, and incompatible-codec behavior entirely unaddressed.

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?

Schema description coverage is 0% for all three parameters, so the description must compensate and it does not: 'input' and 'output' are only inferable as file paths, and the 'overwrite' flag (default false) — the parameter with the most behavioral consequence — is never mentioned.

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

Purpose4/5

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

States a specific verb and resource ('Change a video's container') with a concrete example and the key differentiator 'no re-encode'. That phrasing implicitly contrasts with the transcode_video sibling, though it never names it, so the distinction still requires an inference step.

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 'no re-encode' / 'lossless and fast' framing implies you should prefer this over transcoding when only the container needs to change, but there is no explicit when-to-use vs when-not statement and no reference to sibling tools like transcode_video or probe_media.

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

thumbnailC

Grab a single high-quality frame from a video at timestamp at (HH:MM:SS).

NameRequiredDescriptionDefault
atNo00:00:01
inputYes
widthNo
outputYes
overwriteNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, yet it says nothing about writing an image file to `output`, what image format results, or what `overwrite=false` does when the target exists. 'High-quality frame' hints at internal quality selection but is never explained, and failure modes for out-of-range timestamps are unstated.

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?

A single well-formed sentence that front-loads the action and embeds the timestamp format inline, with no filler. It is efficient, though the brevity comes at the cost of the missing parameter and behavior detail noted elsewhere.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but for a five-parameter media tool with zero schema coverage and no annotations, the description leaves the agent without enough to call it correctly. It should at minimum explain input/output file semantics, the width parameter, and overwrite behavior.

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?

Schema description coverage is 0%, and the description only clarifies one of five parameters: `at` with its HH:MM:SS format. The semantics of `input`, `output`, `width` (does null mean native resolution?), and `overwrite` are left entirely undocumented in both schema and description.

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

Purpose4/5

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

The description states a specific verb and resource: grab a single high-quality frame from a video at a given timestamp. That clearly separates it from siblings like transcode_video or extract_audio, though it never explicitly names those alternatives or clarifies how it differs from extract_stream.

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?

There is no guidance on when to use this versus convert_image, extract_stream, or probe_media, and no mention of prerequisites such as supported container formats or whether the timestamp must be within the video duration. The agent must infer usage entirely from the tool name.

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

transcode_audioC

Transcode audio. Codecs: opus (default), aac, mp3, flac (lossless), wav.

Set normalize=true for EBU R128 loudness normalization (-16 LUFS).

NameRequiredDescriptionDefault
codecNoopus
inputYes
outputYes
bitrateNo
channelsNo
normalizeNo
overwriteNo
sample_rateNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/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 the full burden of behavioral disclosure. It says nothing about the file-writing behavior, what happens when the output exists, whether overwrite must be set, or any failure modes. The normalization detail adds some value, but critical mutation semantics 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.

Conciseness4/5

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

The description is short, front-loaded with the core action, and contains no wasted sentences. The formatting is slightly awkward with an embedded newline, but the key information is easy to scan.

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

Completeness2/5

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

For a mutation tool with eight parameters, no annotations, and 0% schema description coverage, the description is substantially incomplete. It does not explain required input/output paths, overwrite behavior, or the other optional parameters. The output schema helps with return values, but the call semantics remain under-specified.

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?

Schema description coverage is 0%, so the description must compensate for eight parameters. It only documents codec values/default and normalize, leaving input, output, bitrate, channels, overwrite, and sample_rate entirely unexplained. The codec list is helpful but far from sufficient.

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

Purpose4/5

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

The description states a specific verb and resource ('Transcode audio') and clearly distinguishes this tool from transcode_video and other media tools. It also names supported codecs and the default, which adds meaningful purpose context. It stops short of 5 because it doesn't explicitly differentiate from sibling audio-related tools like extract_audio or remux_video.

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?

There is no explicit guidance on when to use this tool instead of alternatives such as extract_audio, remux_video, or transcode_video. The codec list and normalize note are useful but do not tell an agent when this operation is appropriate or when another tool should be chosen.

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

transcode_videoA

Transcode a video. Quality is CRF-based (lower crf = higher quality).

Codecs: h264 (default, universal), h265, av1 (best compression), vp9. Optionally downscale with scale_height (e.g. 1080) or change fps.

NameRequiredDescriptionDefault
crfNo
fpsNo
inputYes
outputYes
presetNo
overwriteNo
audio_codecNoaac
video_codecNoh264
scale_heightNo
audio_bitrateNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/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, and it does explain CRF semantics and codec tradeoffs usefully. However, it never mentions that this writes a file, that overwrite defaults to false and can clobber existing output, or anything about long-running encode cost, leaving the destructive/behavioral profile underspecified.

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?

Front-loaded with the core action, then quality semantics, then codec options, with no filler sentences. The bulleted codec list is scannable and every line adds information, though the lack of coverage of half the parameters keeps it from being fully efficient as documentation.

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?

An output schema exists so return values need no explanation, and the description covers the primary knobs (codec, crf, scale, fps) for a re-encode tool. It is still incomplete for a 10-parameter mutating tool, omitting overwrite safety and the audio/preset options that materially affect the result.

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 0% across 10 parameters, so the description must compensate. It covers crf direction, video_codec options and default, scale_height with an example, and fps, but leaves preset, overwrite, audio_codec, and audio_bitrate entirely undocumented.

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

Purpose4/5

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

Opens with a specific verb+resource ('Transcode a video') and immediately contrasts with siblings by emphasizing re-encoding quality and codec choice, which implicitly separates it from remux_video and transcode_audio. It does not name those siblings, so the differentiation is inferential rather than explicit.

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 codec notes ('h264 default, universal', 'av1 best compression') give some selection guidance, and downscaling/fps are framed as optional. But there is no statement of when to use this instead of remux_video (stream copy) or what prerequisites exist, so the agent must infer the choice.

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

Tool Schema Changelog

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

  1. 10 tool updatesv0.1.0
    • First observedburn_subtitles
    • First observedconvert_image
    • First observedextract_audio
    • First observedextract_stream
    • First observedlist_codecs
    • First observedprobe_media
    • First observedremux_video
    • First observedthumbnail
    • First observedtranscode_audio
    • First observedtranscode_video

TDQS

B3.4/5.0

Scored across 10 tools

Disambiguation4/5

Each tool has a largely distinct action: probe vs. list, transcode vs. remux, audio vs. video. The only real overlap is extract_audio versus extract_stream (which can also pull an audio stream by index), and thumbnail vs. extract_stream for frame grabbing, but the descriptions make the intended boundaries clear enough.

Naming Consistency4/5

Nine of ten tools follow a clean snake_case verb_noun pattern (probe_media, transcode_video, extract_audio, convert_image, burn_subtitles). 'thumbnail' is the lone bare noun, a minor deviation from an otherwise predictable convention.

Tool Count5/5

Ten tools is well-scoped for a media encoding server, covering inspection, listing, video/audio transcoding, remuxing, extraction, image conversion, thumbnails, and subtitles without padding. Each tool maps to a concrete operation a user would need.

Completeness4/5

The core encode/convert lifecycle is well covered, including probe, codec discovery, transcode, remux, extract, and subtitle burn-in. Minor gaps exist around trimming/cutting to a time range, concatenating files, and extracting subtitle streams, but none are dead ends for typical workflows.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    Enables comprehensive video and audio processing using FFmpeg, supporting tasks like metadata extraction, clipping, scaling, and adding transitions or overlays. It provides a high-performance interface for building media processing microservices via FastMCP.
    12
    12
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables LLMs to perform FFmpeg operations like clipping, merging, extracting audio, adding subtitles, and transcoding videos via a set of tools exposed as an MCP server.
    5
    8
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides 30+ FFmpeg video and audio editing tools via MCP, enabling AI assistants to perform operations like trimming, transcoding, overlays, and composition directly.
    27
    4
    MIT