MCP Server for video quality analysis and transcoding comparison
This MCP server presents a focused video quality analysis toolkit with clearly defined tools, but suffers from significant quality gaps that prevent production recommendation. All 5 tools have explicit schemas with proper JSON Schema structure and reasonable input parameters. However, critical issues emerge: (1) All tool descriptions are in Chinese, which violates LLM optimization baselines and creates poor discoverability for English-speaking LLMs; (2) Parameter descriptions lack detail and actionable constraints (e.g., 'path' parameter has no format guidance, range specs, or error recovery hints); (3) Output schemas are completely undocumented, the source code does not show what fields are returned, forcing LLMs to guess; (4) Error handling is minimal and non-actionable (FFmpegError catches exist but responses don't guide recovery); (5) No tool annotations (readOnlyHint, idempotentHint) despite all tools being read-only operations; (6) Missing composed tool patterns, no guidance on which tools to call together or in sequence. The tool names themselves are good (verb_noun pattern: analyze_*, compare_*, summarize_*) and follow verb-first conventions, but the surrounding definition infrastructure is weak.
分析视频伪影和主观质量代理指标。可进行单流分析或转码前后对比分析
分析视频的 GOP 结构和帧类型分布,包括 I/P/B 帧统计和关键帧时间戳
分析视频文件的元信息和编码参数,包括容器格式、编码器、分辨率、帧率等
对比两个视频文件的画质指标,包括 PSNR、SSIM 和 VMAF
生成转码效果的综合评估报告,包括质量变化、关键问题和优化建议
All tool descriptions are in Chinese (e.g., '分析视频文件的元信息和编码参数,包括容器格式、编码器、分辨率、帧率等'). This violates LLM optimization baselines and creates poor discoverability for English-speaking LLMs. Descriptions must be in English for A grade servers.
Output schemas are completely undocumented. The source code shows TextContent responses containing JSON but does not specify what fields are returned (e.g., for analyze_video_metadata, what keys appear in the result object?). LLMs cannot plan downstream tool calls without knowing the output structure.
Parameter 'path' lacks actionable description. Should specify: valid file extensions (.mp4, .mkv, etc.), maximum file size, required codec support, and error recovery steps (e.g., 'If FFmpeg fails, ensure ffmpeg is installed').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 41 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Parameters 'reference' and 'distorted' in compare_quality_metrics and 'source'/'transcoded' in summarize_transcode_comparison lack descriptions. The schema declares them as required strings, but LLMs have no guidance on format, constraints, or what to do if they refer to the same file.
No tool annotations despite all 5 tools being read-only operations. Missing readOnlyHint=true declarations. This prevents agents from distinguishing safe tools from destructive ones and limits optimization opportunities.
Error handling is minimal and non-actionable. The catch block returns 'error' + 'success: false' but does not guide the LLM on recovery. For FFmpegError, should return: 'FFmpeg error: [specific reason]. Ensure ffmpeg is installed and the file format is supported.'
Optional parameter 'reference' in analyze_artifacts is not declared in the inputSchema. It appears in the description but the schema only marks 'target' as required. This creates ambiguity, LLMs may not realize reference is optional.
No guidance on tool composition. analyze_video_metadata, analyze_gop_structure, compare_quality_metrics, and analyze_artifacts all operate on videos. Descriptions should hint at common sequences: e.g., 'Call analyze_video_metadata first to confirm codec support, then analyze_gop_structure for GOP details.'