An MCP server providing FFmpeg tools (frame extraction, info, transcode) over stdio using JSON-RPC.
Three tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. Tool names follow verb_noun convention (extract_frames, get_media_info, transcode_push), which is good. However, descriptions lack actionable context for LLM selection, parameters are under-documented (missing descriptions for optional params in transcode_push), and output schemas are not formally documented. No error handling guidance, no enum constraints on codec/format parameters, and no indication of which operations are destructive. The server uses mcp-go framework correctly but definitions fall short of production quality.
Extracts frames from a video file using 'ffmpeg -i input -vsync 0 output_pattern'. Creates a directory based on the output pattern.
Gets comprehensive media information including format, streams (codec, profile, resolution, etc.), and frame details (PTS, type, resolution, side_data) using ffprobe.
Transcodes a video/stream and pushes it to an output URL.
transcode_push has 4 optional parameters (codec_video, codec_audio, format, bitrate_video) with no descriptions. LLMs cannot determine valid values or when to use them.
No output schemas documented for any tool. LLMs cannot plan downstream operations or extract required fields (e.g., frame count from extract_frames, stream details from get_media_info).
codec_video and codec_audio parameters accept free-form strings with no enum constraint. LLMs will hallucinate invalid codec names (e.g., 'h265pro' instead of 'libx265'). Should declare valid options as enums.
extract_frames and transcode_push are destructive (write files, create directories) but descriptions do not state this. Agents cannot distinguish safe read-only tools from operations with side effects.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Error handling returns generic error messages (e.g., 'ffmpeg execution failed') with no recovery guidance. LLMs cannot determine if the error is retryable, user-fixable, or fatal.