video
Fetches YouTube videos and returns a timestamped transcript (using platform subtitles when available) plus scene-selected keyframe contact sheets, with drill-down tools to grab exact high-resolution frames or scan ranges at specific timestamps without downloading the whole video.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@videowatch https://youtu.be/dQw4w9WgXcQ and summarize the key points"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
watch-video
Let Claude (or any MCP client) watch a video. Give it a local file or a URL (YouTube and 1,500+ other sites via yt-dlp) and it gets a timestamped transcript plus a handful of scene-selected keyframes, then drills into exact frames only when needed. No cloud transcription, no API keys.
It ships as two parts:
videoMCP server with six tools (below).watch-videoskill that teaches Claude the cheap-first workflow: overview, then frames, then ranges.
How it works
Step | What happens |
Transcript | Platform subtitles if the video has them (seconds), else Parakeet TDT 0.6B v3 (int8, CPU, English), else faster-whisper large-v3-turbo (GPU or |
Keyframes | Decodes only keyframes at thumbnail size, drops repeats and static slides, then fills the largest time gaps. The selection adapts to how much the video changes (screencast vs. action). |
Contact sheets | Labelled frames tiled into grids: about 20 frames for the token cost of 1.5 full frames. Black bars are cropped automatically. |
Drill-down |
|
Everything is cached under ~/.cache/video_mcp, so repeat calls are instant.
Measured on a mid-range CPU (i5-11400, no GPU): 35.7-minute local video overview in about 2.6 minutes; YouTube video with subtitles in about 7 seconds; a drill-down frame in about 0.5 seconds.
Related MCP server: ffmpeg-agent
Install
Requirements: Python 3.10+ and ffmpeg (including ffprobe) on your PATH.
pip install git+https://github.com/marwanm7moud/watch-video
# optional: Whisper for non-English videos / GPU machines
pip install "watch-video[whisper] @ git+https://github.com/marwanm7moud/watch-video"Install ffmpeg with winget install Gyan.FFmpeg (Windows), brew install ffmpeg (macOS) or
sudo apt install ffmpeg (Linux). The first transcription downloads the Parakeet model (about 650 MB).
Register the MCP server
Claude Code:
claude mcp add video --scope user -- video-mcpClaude Desktop (claude_desktop_config.json) or any other MCP client:
{ "mcpServers": { "video": { "command": "video-mcp" } } }If video-mcp is not on your PATH, use the full path to the executable or python -m video_mcp.server.
Install the skill
Copy the skill folder so Claude knows when and how to use the tools:
# macOS / Linux
mkdir -p ~/.claude/skills && cp -r skills/watch-video ~/.claude/skills/
# Windows (PowerShell)
Copy-Item -Recurse skills\watch-video $HOME\.claude\skills\Then ask Claude: "Watch https://youtu.be/... and summarize it", or "At what point do they explain the stop-loss, and what does the chart show then?"
Tools
Tool | Use |
| Start here: metadata, chapters, full transcript, contact sheets. |
| Exact frames ( |
| Evenly spaced frames in one sheet, to follow motion or a demo. |
| Transcript slice. |
| Timestamped hits for any of the words. |
| Detected tools, GPU and the transcription profile in use. |
Command line
The same operations work without MCP:
video-cli overview video.mp4 --max-frames 16
video-cli frames https://youtu.be/... 12:30 13:05
video-cli range video.mp4 10:00 10:30 --count 12
video-cli search video.mp4 "stop loss"
video-cli hwConfiguration
Variable | Default | Effect |
|
| Cache directory (delete it to reclaim space). |
|
| Default transcription language; |
|
| Threads for CPU transcription. |
| unset | Set to |
On CPU the server runs below normal priority, one heavy job at a time, with Whisper held to AVX2, so a long transcription does not freeze your desktop.
Limitations
Transcription is English-first. Other languages need Whisper (
language="auto"), which is slow on CPU.Frames are sampled, not every frame is analysed; the transcript can mishear names and terms. The skill tells Claude to cite timestamps and confirm exact on-screen text with a hi-res frame.
Use it only on videos you are allowed to access and process; respect each site's terms and copyright.
Development
pip install -e ".[dev]"
ruff check .
pytestLicense
MIT. See LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Multimodal video analysis MCP — transcription, vision, and OCR for any video URL.
MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.
Transcribe, subtitle, dub and lip-sync media; create speech, voices, images and thumbnails.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to search, retrieve, transcribe, and summarize a local audio/video library over MCP, with timestamps and saved reports.4Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables applications and AI agents to inspect, convert, extract, and process media through asynchronous HTTP and MCP tasks, with optional natural-language planning and A2A interoperability.MIT
- FlicenseNot gradedqualityAmaintenanceEnables users to ingest YouTube videos, extract transcripts and scene-based visual descriptions, build a compounding wiki knowledge base, and query it through agentic search from MCP-compatible clients.-
- FlicenseNot gradedqualityAmaintenanceEnables ingesting YouTube videos into a persistent, searchable wiki with transcript extraction, scene-change vision analysis, and cross-video knowledge compounding. MCP clients can then ask questions and receive reasoned answers with source citations.-