Back to Browse

Watch Video MCP Server

Developer ToolsModerate5.6MCP RegistryLocal
Free

Server data from the Official MCP Registry

Let an AI watch a video: timestamped transcript, scene-selected keyframes and exact frames. Local.

About

Let an AI watch a video: timestamped transcript, scene-selected keyframes and exact frames. Local.

Security Report

5.6
Moderate5.6Moderate Risk

This is a local video-analysis MCP server that uses yt-dlp, ffmpeg and ffprobe to build transcripts and keyframe contact sheets. It runs subprocesses with argument lists rather than shell strings, has no hardcoded secrets, and requires no API keys. The only notable items are low-severity: local file paths are accepted from the model without a directory restriction, and the server adds a sys.path manipulation at import time. Supply chain analysis found 20 known vulnerabilities in dependencies (2 critical, 16 high severity). Package verification found 1 issue.

10 files analyzed · 26 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

File System Read

Reads files on your machine. Normal for tools that analyze or process local data.

File System Write

Writes or modifies files on your machine. Check that this is expected for the tool.

HTTP Network Access

Connects to external APIs or services over the internet.

process_spawn

Check that this permission is expected for this type of plugin.

env_vars

Check that this permission is expected for this type of plugin.

system_info

Check that this permission is expected for this type of plugin.

What You'll Need

Set these up before or after installing:

~/.cache/video_mcpOptional

Environment variable: VIDEO_MCP_CACHE

enOptional

Environment variable: VIDEO_MCP_LANG

4 (CPU)Optional

Environment variable: VIDEO_MCP_THREADS

unsetOptional

Environment variable: VIDEO_MCP_AVX512

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-marwanm7moud-watch-video": {
      "env": {
        "VIDEO_MCP_LANG": "your-video-mcp-lang-here",
        "VIDEO_MCP_CACHE": "your-video-mcp-cache-here",
        "VIDEO_MCP_AVX512": "your-video-mcp-avx512-here",
        "VIDEO_MCP_THREADS": "your-video-mcp-threads-here"
      },
      "args": [
        "watch-video-mcp"
      ],
      "command": "uvx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

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.

> Watch https://www.youtube.com/watch?v=jNQXAC9IVRw and tell me what he says about the elephants.

$ video-cli overview https://www.youtube.com/watch?v=jNQXAC9IVRw --max-frames 8
# Me at the zoo
duration: 00:19
transcript: platform-subs:en, language=en, 6 segments, took 0.4s
keyframes: 3 scene-selected at 00:00, 00:05, 00:11
total time: 6.7s

## Transcript
[00:01] All right, so here we are, in front of the elephants
[00:05] the cool thing about these guys is that they have really... really really long trunks and that's cool
[00:16] and that's pretty much all there is to say
IMAGE: ~/.cache/video_mcp/Youtube_jNQXAC9IVRw/sheets_8/sheet_01.jpg

Claude: He stands in front of the elephants (00:01) and says the cool thing about them is
their really long trunks (00:05). That is the whole video (00:16).

Why this one

watch-videoCloud video APIs (e.g. Gemini)Transcript-only tools
Sees the screen (code, slides, charts, UI)Yes: keyframes, hi-res frames, OCRYesNo
Runs locally, nothing uploadedYesNo: the video goes to the providerVaries
API key or accountNoneRequired, billed per useVaries
Videos without captionsLocal Parakeet / WhisperYesOften fails
Token cost of the visual pass~20 frames per contact sheet (cost of ~1.5 images)Billed by video lengthNone (no visuals)
Private recordings (meetings, bug repros)Safe: never leave the machineUploadedVaries

It ships as two parts:

  • video MCP server with seven tools (below).
  • watch-video skill that teaches Claude the cheap-first workflow: overview, then frames, then ranges.

How it works

StepWhat happens
TranscriptPlatform subtitles if the video has them (seconds), else Parakeet TDT 0.6B v3 (int8, CPU, 25 European languages), else faster-whisper large-v3-turbo (other languages, GPU or language="auto").
KeyframesDecodes 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 sheetsLabelled frames tiled into grids: about 20 frames for the token cost of 1.5 full frames. Black bars are cropped automatically.
Drill-downget_frames seeks to exact timestamps at 1280 px (readable code and charts). For URLs it seeks into the stream without downloading the whole video.

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.

Install

Requirements: Python 3.10+ and ffmpeg (including ffprobe) on your PATH.

Claude Code: one command (plugin)

Installs the MCP server and the skill together. Needs uv for uvx.

/plugin marketplace add marwanm7moud/watch-video
/plugin install watch-video@watch-video

Any agent: package, server, skill

pipx install watch-video-mcp          # or: uv tool install watch-video-mcp / pip install watch-video-mcp
# optional extras: Whisper (non-European languages / GPU) and OCR (on-screen text as text)
pipx install "watch-video-mcp[whisper,ocr]"
# latest from GitHub instead of PyPI:
pip install git+https://github.com/marwanm7moud/watch-video

No install needed to try the CLI: uvx --from watch-video-mcp video-cli hw.

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-mcp

Claude 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

The skill works with or without the MCP server: it falls back to video-cli and installs it on first use. Copy the skill folder so your agent 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

ToolUse
video_overview(source, max_frames=40, ocr=False)Start here: metadata, chapters, full transcript, contact sheets. ocr=True adds on-screen text.
get_frames(source, timestamps, hi_res=True)Exact frames ("12:30", "1:02:05" or seconds), up to 20.
scan_range(source, start, end, count=12)Evenly spaced frames in one sheet, to follow motion or a demo.
find_cuts(source, start, end, threshold=0.2)Hard cuts (shot or screen changes) and cuts per minute, for pacing.
get_transcript(source, start, end)Transcript slice.
search_transcript(source, query)Timestamped hits for any of the words, exact phrase first; plus on-screen text after an ocr=True overview.
check_hardware()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 overview demo.mp4 --ocr          # also read code/slides on screen
video-cli frames https://youtu.be/... 12:30 13:05
video-cli range video.mp4 10:00 10:30 --count 12
video-cli cuts ad.mp4                       # hard cuts + cuts per minute
video-cli search video.mp4 "stop loss"
video-cli hw

Configuration

VariableDefaultEffect
VIDEO_MCP_CACHE~/.cache/video_mcpCache directory (delete it to reclaim space).
VIDEO_MCP_LANGenDefault transcription language; auto detects it with Whisper.
VIDEO_MCP_THREADS4 (CPU)Threads for CPU transcription.
VIDEO_MCP_AVX512unsetSet to 1 to let Whisper use AVX-512 (faster, but a very heavy sustained load).

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

  • English is assumed unless you pass language. Parakeet covers 25 European languages on CPU (language="de", "fr", "es", ...). Other languages (Arabic, Chinese, Japanese, Hindi, ...) need Whisper, 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 .
pytest

License

MIT. See LICENSE.

Reviews

No reviews yet

Be the first to review this server!