mcp-video-analyzer
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| logging | {} |
| completions | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| analyze_videoA | Analyze a video URL to extract transcript, key frames, metadata, comments, OCR text, and annotated timeline. Returns structured data about the video content:
Supports: Loom (loom.com/share/...), YouTube/Vimeo/TikTok/Instagram/X/Twitch/Dailymotion/Facebook (requires yt-dlp), direct video URLs (.mp4, .webm, .mov), and local video files (absolute path or file:// URI). Detail levels:
Use options.fields to request only specific data (e.g., ["metadata", "transcript"]). Use options.forceRefresh to bypass the cache. Use options.model / options.language / options.initialPrompt to override Whisper transcription per call (e.g. a heavier model + a domain glossary for hard audio) without restarting the server. |
| analyze_videosA | Batch-analyze many videos in one call, with a concurrency limit and per-item results. For each source it runs the same pipeline as analyze_video (frames + OCR + transcript + timeline), reusing the shared cache and on-disk sidecars. Designed for processing a corpus of local files: pair it with MCP_WRITE_SIDECARS=1 so results persist next to each video and a re-run resumes instead of recomputing. Returns a JSON summary plus one structured entry per source:
To keep the response bounded, frame images are NOT inlined and full transcript/OCR/timeline arrays are returned only when options.fields is set; otherwise you get counts. Use analyze_video on an individual source when you need the images or full data inline. |
| get_frame_atA | Extract a single video frame at a specific timestamp. Useful for inspecting what's on screen at a particular moment. The AI reads the transcript, identifies a critical moment, and requests the exact frame at that timestamp. Supports: Loom (loom.com/share/...), YouTube/Vimeo/TikTok/Instagram/X/Twitch/Dailymotion/Facebook (requires yt-dlp), direct video URLs (.mp4, .webm, .mov), and local video files (absolute path or file:// URI). Args:
Returns: A single image of the video frame at the specified timestamp. |
| get_frame_burstA | Extract multiple frames evenly distributed across a time range. Designed for motion and vibration analysis where scene-change detection fails because the "scene" doesn't change — only the position/state of objects does. Example: get_frame_burst(url, "0:15", "0:17", 10) → 10 frames in 2 seconds
Supports: Loom (loom.com/share/...), YouTube/Vimeo/TikTok/Instagram/X/Twitch/Dailymotion/Facebook (requires yt-dlp), direct video URLs (.mp4, .webm, .mov), and local video files (absolute path or file:// URI). Args:
Returns: N images evenly distributed between the from and to timestamps. |
| get_transcriptA | Extract only the transcript from a video URL. Returns timestamped transcript entries with speaker identification (when available). Faster than analyze_video when you only need the transcript. If the platform has no native transcript, attempts Whisper fallback transcription (requires @huggingface/transformers, whisper CLI, or OPENAI_API_KEY). Supports: Loom (loom.com/share/...), YouTube/Vimeo/TikTok/Instagram/X/Twitch/Dailymotion/Facebook (requires yt-dlp; native captions preferred), direct video URLs (.mp4, .webm, .mov), and local video files (absolute path or file:// URI). For local files a sidecar .vtt/.srt next to the file is used first, then an embedded subtitle track, and only then the Whisper fallback if neither exists. |
| get_metadataA | Get video metadata, comments, chapters, and AI summary from a video URL. Returns structured metadata without downloading the video or extracting frames. Faster than analyze_video when you only need metadata. Supports: Loom (loom.com/share/...), YouTube/Vimeo/TikTok/Instagram/X/Twitch/Dailymotion/Facebook (requires yt-dlp), direct video URLs (.mp4, .webm, .mov), and local video files (absolute path or file:// URI). |
| get_framesA | Extract key frames from a video URL without transcript or metadata. Two extraction modes:
Returns optimized, deduplicated JPEG frames. Supports: Loom (loom.com/share/...), YouTube/Vimeo/TikTok/Instagram/X/Twitch/Dailymotion/Facebook (requires yt-dlp), direct video URLs (.mp4, .webm, .mov), and local video files (absolute path or file:// URI). |
| analyze_momentA | Deep-dive analysis of a specific time range in a video. Combines burst frame extraction + transcript filtering + OCR + annotated timeline for a focused segment of the video. Use this when you need to understand exactly what happens between two timestamps:
Example: analyze_moment(url, "1:30", "2:00", 10) → 10 frames + transcript + OCR for that 30s window Supports: Loom (loom.com/share/...), YouTube/Vimeo/TikTok/Instagram/X/Twitch/Dailymotion/Facebook (requires yt-dlp), direct video URLs (.mp4, .webm, .mov), and local video files (absolute path or file:// URI). |
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 8 tools
Most tools are clearly distinct: analyze_video is the full pipeline, get_metadata/get_transcript/get_frames are single-aspect extractions, and get_frame_at/get_frame_burst/analyze_moment handle specific temporal queries. The only mild overlap is between analyze_video and analyze_videos (batch vs. single), but the descriptions explicitly differentiate them.
Tool names follow a consistent verb_noun pattern: analyze_videos, analyze_video, analyze_moment, get_metadata, get_frame_at, get_frame_burst, get_frames, get_transcript. The only minor inconsistency is that analyze_moment is a verb_noun pair while the others are verb_noun with the noun being a direct object; still, the pattern is predictable and readable.
8 tools is well-scoped for a video analysis server. Each tool covers a distinct need: full analysis, batch analysis, metadata-only, transcript-only, frames-only, single frame, frame burst, and segment deep-dive. No redundant or filler tools.
The tool surface covers the core video analysis lifecycle well: full analysis, metadata, transcript, frames, and time-range deep dives. Minor gaps include no explicit tool for listing supported platforms or managing cache/sidecars, but these are workarounds and not core analysis operations.