Video Understanding MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| VIDEO_MODEL | Yes | Required. Model name or router alias. | |
| VIDEO_API_KEY | No | API key sent as Authorization: Bearer <key>. | |
| VIDEO_BASE_URL | Yes | Required. Endpoint base URL, for example https://host/v1. | |
| VIDEO_YTDLP_PATH | No | yt-dlp executable path. | yt-dlp |
| VIDEO_FFMPEG_PATH | No | ffmpeg executable path. | ffmpeg |
| VIDEO_PART_FORMAT | No | Request part format: image_url, video_url, file, or input_file. | image_url |
| VIDEO_ALLOWED_DIRS | No | Directories local files may be read from, separated by ':' (';' on Windows). Local files are refused when unset. | |
| VIDEO_FFPROBE_PATH | No | ffprobe executable path. | ffprobe |
| VIDEO_VERIFY_MEDIA | No | Fail calls when the endpoint evidently ignored the video. | true |
| VIDEO_MAX_UPLOAD_MB | No | Largest prepared video sent inline, before base64, in MB (1–100). | 15 |
| VIDEO_MAX_CONCURRENCY | No | Number of analyses running at once; further calls wait (1–16). | 2 |
| VIDEO_MAX_DOWNLOAD_MB | No | Largest source download in MB (1–10000). | 500 |
| VIDEO_MAX_OUTPUT_TOKENS | No | max_tokens for the answer (256–65536). | 8192 |
| VIDEO_REQUEST_TIMEOUT_MS | No | Endpoint request timeout in milliseconds (5000–900000). | 180000 |
| VIDEO_MAX_DURATION_SECONDS | No | Longest analyzed range in seconds (1–7200). | 300 |
| VIDEO_ALLOW_PRIVATE_NETWORK | No | Allow downloads from loopback and private addresses. | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Use understand_video to watch a video and answer questions about it. Pass a page URL, a direct media URL (with headers such as Referer when a scraper returned them), or an allowed local path. For long videos or fast motion, pass start_seconds and end_seconds. Call get_server_info to see limits and whether ffmpeg and yt-dlp are installed.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| understand_videoA | Watch a video and answer a question about it, using a video-capable model behind the configured OpenAI-compatible endpoint. source accepts a page URL (TikTok, YouTube, X, Instagram, ... resolved with yt-dlp), a direct media URL with optional headers such as Referer from a scraper, or an absolute local path inside an allowed directory. Returns answer, summary, speech (transcript in the original language), on_screen_text, a timeline in source-video seconds, and analysis metadata with warnings. Videos longer than the duration limit need start_seconds/end_seconds; a short range also gives more detail for fast motion such as workouts. fps is a hint applied only when the request format supports it. Errors carry a code (e.g. ENDPOINT_UNREACHABLE, LIMIT_EXCEEDED, SOURCE_NOT_ALLOWED, MEDIA_NOT_PROCESSED) as a [CODE] text prefix and in _meta. |
| get_server_infoA | Show the server version, endpoint host and model, request format, limits, local-file policy, and whether ffmpeg and yt-dlp are available. Never shows the API key. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 2 tools
understand_video performs the single domain action while get_server_info is purely diagnostic/introspective. There is no overlap in inputs, outputs, or intent, so an agent cannot plausibly confuse them.
Both names are snake_case verb_noun forms (understand_video, get_server_info) with an imperative verb first. The convention is uniform across the entire surface.
Two tools is on the low end, but the server's scope is narrow — one capability-rich analysis tool plus one configuration/introspection tool. Nothing extraneous is present; it only feels slightly thin because the domain is a single action.
The core lifecycle (analyze a source, inspect server capabilities/limits) is covered, including error codes, timeline output, and truncation handling via start/end seconds. Minor gaps exist around things like probing media metadata without a full analysis or listing allowed directories, but agents can work around these.