Skip to main content
Glama
Linux Video Editor MCP

Linux Video Editor MCP

by DeclanJeon

Linux Video Editor MCP

A local MCP server for basic video editing on Linux, powered by FFmpeg. It provides a small set of editing tools to MCP-compatible agents such as Codex. It is an independent Linux implementation, not Higgsfield's official editor or a reverse-engineered copy of it.

Requirements

  • Linux

  • Node.js 18+

  • FFmpeg with libx264, AAC, MP3 (libmp3lame), and the subtitles filter enabled

  • An MCP client that supports stdio servers

ffprobe is optional. Media inspection falls back to FFmpeg's input report.

Related MCP server: mcp-ffmpeg

Install

git clone https://github.com/DeclanJeon/linux-video-editor-mcp.git
cd linux-video-editor-mcp
npm ci

Register it globally with Codex:

codex mcp add linux-video-editor -- node "$HOME/path/to/linux-video-editor-mcp/server.js"

Replace the example path with the actual clone location. By default the server only reads and writes under ~/Videos. To select another workspace, set VIDEO_MCP_ROOT in the MCP server environment. Restart Codex after registering.

Tools

  • video_probe — report media format, duration, and stream information.

  • trim_video — cut a time range and encode a new MP4 (high, medium, or small quality).

  • extract_audio — extract audio to MP3 (128, 192, or 320 kbps).

  • burn_subtitles — burn an SRT subtitle file into a new MP4.

All paths are relative to the configured workspace. Outputs must use the required file extension, must be in an existing directory, and cannot overwrite existing files. Inputs are left unchanged. Video encoding can take time and CPU, especially for large files.

Development / smoke test

node --check server.js
npm start

The MCP server communicates over stdio; do not print logs to stdout. A client can initialize the server and call tools/list to verify tool discovery.

Limitations

This is a deliberately small local editing toolkit, not a full timeline editor. It does not provide a graphical UI, video generation, cloud uploads, or Higgsfield account integration. Codec/filter availability depends on the local FFmpeg build. The subtitle filter rejects unsupported path characters to avoid FFmpeg filter-string parsing issues.

License

MIT. See LICENSE.

Available Tools

4 tools
burn_subtitlesBurn subtitles into videoA

Render an SRT subtitle file permanently into a video. Both files and output must stay in ~/Videos; saves a new MP4.

NameRequiredDescriptionDefault
inputYes
outputYes
subtitlesYes

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 must carry the behavioral burden; it usefully discloses that output is a new MP4 (source not modified in place) and that paths are sandboxed to ~/Videos. It omits key write-tool behavior: whether an existing output file is overwritten, what happens on invalid SRT or codec failure, and processing time for long videos.

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, zero filler, with the core action front-loaded and the path constraint immediately after. Nothing to cut and nothing buried.

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 3-parameter mutation with no annotations and no output schema, the description covers the action, the output type, and the directory restriction. It stops short of overwrite semantics, failure modes, and what is returned (e.g. path to the new file), which an agent needs before invoking a write 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 description coverage is 0%, so the description must compensate; it does add meaningful semantics — 'subtitles' is an SRT file, 'output' is an MP4, both constrained to ~/Videos. It still leaves path form ambiguous (absolute vs relative to ~/Videos, filename vs full path) and doesn't map 'input' explicitly, so compensation is partial.

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: 'Render an SRT subtitle file permanently into a video' with the outcome 'saves a new MP4'. The distinction from siblings (video_probe, trim_video, extract_audio) is obvious by operation, but the description never names or contrasts them, so it sits at a clear-but-undifferentiated 4.

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 operational constraint 'Both files and output must stay in ~/Videos' is a genuine usage rule an agent needs before calling. However there is no when-to-use/when-not guidance, no prerequisites (e.g. ffmpeg), and no statement about re-running or overwriting, so usage is only implied.

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

extract_audioExtract audioB

Extract audio from a media file in ~/Videos and save it as MP3. Original is unchanged.

NameRequiredDescriptionDefault
inputYes
outputYes
bitrateNo192k

TDQS

B3/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 behavioral burden. It usefully discloses that the original is unchanged and the output format is MP3, but it omits overwrite behavior, error handling, permission needs, and what is returned after extraction.

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 short, front-loaded sentences with no filler. The core operation and the non-destructive guarantee are stated 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?

For a three-parameter file-transformation tool with no annotations, 0% schema coverage, and no output schema, the description leaves important gaps: bitrate semantics, output path behavior, overwrite policy, and return value. It is not complete enough for confident invocation without inspecting the schema.

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. It gives some meaning for input (a media file in ~/Videos) and output format (MP3), but does not explain the bitrate parameter at all, nor whether output is a path, filename, or directory.

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 (extract) and resource (audio from a media file), and specifies format (MP3) and location (~/Videos). It distinguishes the operation from the sibling video tools implicitly, though it never names an alternative or explicitly contrasts itself with 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?

Usage is only implied by the purpose statement; there is no explicit condition for when to choose this tool over video_probe, trim_video, or burn_subtitles. No exclusions, prerequisites, or alternative routing are stated.

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

trim_videoTrim videoA

Cut a segment from a video in ~/Videos and save a new MP4. Start and duration are seconds; original is unchanged.

NameRequiredDescriptionDefault
inputYes
outputYes
qualityNomedium
start_secondsYes
duration_secondsYes

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 load; it earns credit for stating the original file is unchanged (non-destructive) and that output is a new MP4. However it says nothing about what happens if the output path already exists, permission/media-tool requirements, failure modes, or whether large durations are throttled.

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 tight sentences with the core action and the key units/non-destructive note front-loaded. No filler, nothing repeated from the schema.

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?

A mutation tool with no annotations, no output schema, and 0% schema description coverage needs more than what's here. It covers safety and units but omits the quality parameter, output-overwrite semantics, and error/return behavior, so an agent still has gaps before calling confidently.

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 0%, so the description must compensate; it does explain that start and duration are in seconds and that input/output are video paths. But the quality parameter (high/medium/small) is never mentioned, nor are path format expectations (absolute vs relative, resolution against ~/Videos), leaving part of the 5-parameter surface 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?

States a specific verb and resource ('Cut a segment from a video') plus the output artifact ('save a new MP4') and the working location (~/Videos). It doesn't explicitly differentiate from video_probe, extract_audio, or burn_subtitles, but those operations are distinct enough that an agent can route without confusion.

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?

Usage is implied by the operation itself ('trim') and constrained to files in ~/Videos, but there is no explicit when-to-use guidance, no exclusion of alternatives, and no statement of what to do instead if the file is elsewhere.

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

video_probeInspect video or audio fileC

Return media metadata for a file inside the Videos workspace.

NameRequiredDescriptionDefault
fileYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations at all, the description carries the full behavioral burden and does not meet it. It never states that the operation is read-only, what happens if the file does not exist, whether the workspace path is a requirement or a restriction, or roughly what metadata comes back.

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?

One short sentence with no filler and the resource front-loaded. It is efficient, though the brevity is part of why other dimensions are under-specified rather than a virtue in itself.

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?

The tool is simple (one required parameter, no nested objects), but with no output schema the description is the only place that could explain what 'media metadata' contains (duration, codec, resolution) and what a failure looks like. It omits both, leaving the agent guessing about the return payload.

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

Parameters2/5

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

The single 'file' parameter has 0% schema description coverage, so the description must compensate. It only adds the 'inside the Videos workspace' scoping; it does not say whether the value is a bare filename, a relative path, or an ID, nor any format rules.

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?

Names a specific verb and resource ('Return media metadata') plus a scope ('inside the Videos workspace'), which implicitly separates it from the transformation siblings trim_video, extract_audio and burn_subtitles. It does not explicitly state that it is the read-only inspection step versus those tools, so it stops short of a 5.

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 stated when-to-use, when-not-to-use, or named alternative. An agent must infer that this is the tool to call before trimming or extracting audio; nothing in the text says so.

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. 4 tool updatesv1.0.0
    • First observedburn_subtitles
    • First observedextract_audio
    • First observedtrim_video
    • First observedvideo_probe

TDQS

B3.3/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a unique operation on a distinct aspect of media: probing metadata, trimming segments, extracting audio, and burning subtitles. There is no overlap in inputs or side effects, so an agent can pick the right tool without ambiguity.

Naming Consistency4/5

Three of four names follow a clean verb_noun pattern (trim_video, extract_audio, burn_subtitles). video_probe inverts this to noun_verb, a minor deviation that is still readable and unambiguous.

Tool Count4/5

Four tools is a focused, non-redundant set within the reasonable 3-15 range. However, for a self-described video editor the surface is slightly thin, leaving obvious common operations uncovered.

Completeness3/5

Core flows (probe, trim, audio extraction, subtitle burn) are covered, but there is no concat/merge, format conversion, resize/crop, or frame/thumbnail extraction—notable gaps for a video editing domain that agents would frequently hit as dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    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
  • A
    license
    Not graded
    quality
    C
    maintenance
    Gives coding agents a local FFmpeg video-editing engine exposed over MCP, enabling them to probe, cut, join, reframe, caption, normalize audio, and verify the resulting media without cloud services or API keys. Every operation returns structured JSON and self-checks its own output against delivery specs.
    7,165 npm
    MIT