MCP server for running FFmpeg and ImageMagick commands in Docker containers with automatic Windows path conversion. Supports both Windows (with drive letter mapping) and Linux (cloud) deployments.
This server has severe definition quality issues. Tool names lack action verbs (ffmpeg-win, imagemagick-win are not verb-noun patterns). Descriptions are present but vague and inconsistent. Parameter descriptions exist but are inconsistent in quality. Critical issue: the server enforces a non-standard, confusing basedir requirement that contradicts standard Docker path mapping. No output schemas are documented. Error handling exists in code but error messages are not actionable for LLMs. The tools appear to be a Windows-specific wrapper around Docker commands, but the interface design prioritizes implementation details (basedir normalization warnings) over user intent.
Run FFmpeg in a sandbox container against the team-shared media volume. All file paths MUST be absolute under `/home/media/` (team COS bucket auto-mounted; uploaded by cos-mcp). Typical input is `/home/media/inputs/<file>`, write outputs to `/home/media/outputs/<file>` so they auto-sync back to the bucket. Example args: ['-i', '/home/media/inputs/in.mp4', '-c:v', 'libx264', '-crf', '23', '/home/media/outputs/out.mp4']
Run FFmpeg command with AUTO Windows path conversion. Paths like D:/path/file.mp4 are automatically converted to /work/path/file.mp4. ⚠️ IMPORTANT: basedir MUST be drive root (D:/, E:/), NOT subdirectory. Subdirectories are auto-corrected with warning.
Check if a file exists with AUTO Windows path conversion. ⚠️ IMPORTANT: Drive letter is auto-extracted and forced to root (D:/, E:/).
Check whether a file exists in the team-shared media volume. Path must be absolute under `/home/media/`.
Run ImageMagick `magick` CLI in a sandbox container against the team-shared media volume. All paths MUST be absolute under `/home/media/`. Example args: '/home/media/inputs/a.png -resize 50% /home/media/outputs/a-small.png'
Run ImageMagick command with AUTO Windows path conversion. Paths like D:/path/file.jpg are automatically converted. ⚠️ IMPORTANT: basedir MUST be drive root (D:/, E:/), NOT subdirectory.
Tool names do not follow verb_noun convention. Names like 'ffmpeg-win' and 'imagemagick-win' are noun-only (tools) with a platform qualifier, not action verbs. Standard names should be 'run_ffmpeg', 'run_imagemagick', 'check_file_exists'.
Descriptions focus on implementation details (Windows path conversion, Docker basedir rules) rather than what the tool does from the LLM's perspective. Description for 'ffmpeg-win' is 230+ characters, bloated with warnings about basedir normalization. Should be: 'Run FFmpeg commands to process video/audio files.' and move technical details to parameter docs.
Parameter 'args' in ffmpeg-win and imagemagick-win lack type clarity and proper constraints. 'args' is an array of strings with no enum or regex validation. LLMs cannot validate FFmpeg arguments, the tool accepts any string. No maximum length or format constraints declared.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 10 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 26 | - | v1 |
Output schemas are not documented anywhere. The code returns a dict with 'success', 'output', 'error', 'command' keys, but this is never declared in tool definitions. LLMs cannot know what fields to expect in responses, breaking downstream planning.
basedir parameter is mandatory for ffmpeg-win and file-exists-win, optional for imagemagick-win. This inconsistency is confusing. Moreover, the 'basedir must be drive root' requirement is a non-standard constraint that violates the principle of accepting user-friendly paths. Standard Docker volume mounts support subdirectories, this constraint is artificial.
Error messages in code (e.g., 'Command timeout (5 minutes)', subprocess exceptions) are not actionable for LLMs. No recovery guidance provided. When a file is not found, the tool returns success:false but does not suggest alternatives or next steps.
file-exists-win has a 20-character description ('Check if a file exists') which is below the 34-char baseline for acceptable descriptions. Per hard scoring rules, description score capped at 20.
No documentation of what fields imagemagick command output contains. The tool merges stdout and stderr but does not explain what to expect, is it error messages? JSON? Plain text?