MCP server that lets local agents analyze video picture and embedded audio
Single tool 'analyze_video' has a detailed description (500+ chars) in Chinese covering use cases, constraints, and guidance. Input schema is present with two parameters: 'video' (string, required) and 'question' (string, optional). However, the schema lacks formal type constraints (no enum, pattern, or minLength/maxLength for the video parameter despite documented constraints like '1024 MiB', 'MP4 only', 'QWEN_ALLOWED_ROOTS'). Parameter descriptions are present but verbose and procedural rather than concise. No output schema is documented in the visible code, the tool returns text and structuredContent but the structure is not formally specified. Error handling is present (VideoError class) but recovery guidance is embedded in prose rather than structured error responses. The tool does one thing (analyze video) but the description conflates multiple concerns (upload caching, sampling vs frame-level analysis, evidence validation).
当你需要理解视频而当前模型不能直接观看时,调用此工具。它会联合分析视频画面和视频内嵌音频,并返回文本回答。不要先自行抽帧或抽音频;直接传入本地绝对 MP4 路径或公开 HTTPS URL。一次最多 1 小时;本地还受 1024 MiB 与当场上传政策约束。这是抽样理解,不是帧级剪辑定位。精确转场、半秒内 J/L-cut、削波与响度请先提供 5–30 秒片段。同一本地文件会复用已上传地址;未命中则全量上传。本地文件必须位于 QWEN_ALLOWED_ROOTS。不得把抽样结果说成逐帧或全部核对。把用户的分析要求写入 question。用户说得具体就尽量原样转发;只说「分析一下」这类空话时,先整理成具体的画面与声音问题(切点、节奏、配音是否统一、声画是否对上、哪些好、哪些要改)再调用。不要编造视频里没有的内容。
Input schema lacks formal constraints. 'video' parameter is a bare string with no pattern, enum, or format declaration. Documented constraints (MP4 only, 1024 MiB limit, QWEN_ALLOWED_ROOTS requirement) are in prose description, not machine-parseable schema. LLMs cannot validate these constraints and may pass invalid paths.
Output schema is not documented. The tool returns CallToolResult with text and structuredContent (EvidenceReport, coverage, audit), but the structure of these fields is not formally specified. LLMs cannot plan downstream operations or extract specific fields reliably.
Parameter description for 'question' is optional but lacks guidance on what happens when omitted. Code shows DEFAULT_QUESTION is used, but this is not stated in the schema description. LLMs may not understand the fallback behavior.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2025-06-18+ | v2 |
Error handling returns VideoError with code, stage, and httpStatus, but error responses to the LLM (agentErrorText, agentErrorStructuredContent) are not shown in the visible code. Cannot verify if recovery guidance is actionable or if error classification (retryable vs user-fixable vs fatal) is present.
Tool description is in Chinese and exceeds 1024 character baseline (500+ chars visible). While detailed, it mixes procedural guidance (how to call the tool) with constraints (duration, file size, roots). This violates the pattern of keeping descriptions concise and constraint-focused in schema, not prose.