Video Vision Mcp

io.github.KitDevUAPublished by GitHub account KitDevUAv0.5.1Updated Oct 24, 2026

Analyze any video (local file or URL) into frames + transcript for Claude Code

VerifiedSTDIODesktop onlyMedia & DesignAI & ML

Overview

AI-generated overview

A local MCP server that turns a video file or direct URL into sampled frames and a transcript, or a native Gemini analysis, so an assistant can reason about its

What you can do
Analyze a video from a local path or direct URL into frames, transcript and metadata, with a configurable frame interval and optional frames at specific timestamps. Retrieve the transcript text alone. List cached analyses and the backend each used. Choose between a fully local ffmpeg plus whisper.cpp tier, cloud transcription via OpenAI or Groq, or native Gemini analysis of the whole video.
When to use it
Useful when an assistant needs to understand video content it cannot watch natively, such as a screen recording attached to a bug ticket or a linked clip, and you want frames plus a transcript or a single-call Gemini analysis.
Requirements
Runs locally as a Python package (Python 3.10 or newer) via uvx or pip. Tier 1 needs no keys but downloads a whisper model from Hugging Face on first transcription. Cloud tiers need GEMINI_API_KEY, OPENAI_API_KEY or GROQ_API_KEY, optionally loaded from a .env file pointed to by VIDEO_MCP_ENV. Network access is needed to fetch URLs and models.
Before you install
With GEMINI_API_KEY, OPENAI_API_KEY or GROQ_API_KEY set, video content is sent to that third party; the server prints a one-time notice, and Gemini takes precedence unless disabled. Only tier 1 stays fully local. Downloaded videos and cached analyses are kept under a cache directory and pruned after a default 24 hours. Authenticated API URLs will not work as the url input.

Installation

In SourceWeft

  1. Open Video Vision Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

video-vision-mcp

[CI] [PyPI] [Python] [License: MIT]

An MCP server that gives Claude Code the ability to analyze any video — a local file or a URL — through one set of tools.

Claude can't watch video natively (only text + the first frame of an image). This server converts a video into sampled frame images + an audio transcript, or — when a Gemini key is present — a native Gemini analysis of the whole video.

It is standalone: give it a ready video (a local path or a direct URL) and it does the rest. It does not connect to Jira/Slack/etc. If a video lives behind an integration, fetch it with that integration first (download to a file or get a direct URL), then hand the file_path or url to this server.

Scenario: a Jira bug ticket has only a screen-recording, no text. Your Jira MCP downloads the attachment to a temp file → analyze_video file_path=/tmp/bug.mp4 → you see the frames + transcript (or Gemini's analysis) and can reason about the bug.

Three backend tiers (auto-selected)

TierNeedsWhat it does
1 — local (default)nothingffmpeg frames + whisper.cpp transcript. Free, fully local, always works.
2 — cloud ASROPENAI_API_KEY or GROQ_API_KEYLocal frames, but transcription via OpenAI Whisper / Groq for higher quality.
3 — native GeminiGEMINI_API_KEYGemini ingests the whole video (visual + audio) in one call, with MM:SS timestamps. Default when the key is set.

Precedence: Gemini > OpenAI > Groq > local. Set VIDEO_MCP_DISABLE_GEMINI=true to force tiers 1/2 even with a Gemini key. The backend used is named in every result.

Privacy: tier 1 never uploads anything. Tiers 2/3 print a one-time notice in the session the first time video content is sent to a third party.

Tools

  • analyze_video — frames + transcript + metadata (the main tool). frame_interval sets seconds between frames (default 1.0; e.g. 0.5/0.25/0.1 denser, 2/5 sparser).
  • get_video_transcript_only — transcript text only.
  • extract_frames_at — frames at specific timestamps ("00:42", "1:05", 12.5).
  • list_recent_analyses — cached analyses + backend used.

Install

Requires Python ≥ 3.10. A single install pulls everything — backends, plus the ffmpeg and whisper.cpp dependencies. Nothing is ever installed globally on your machine (no brew/apt/winget, no sudo).

Use it (recommended)

With uv you don't install it explicitly — uvx runs the published package on demand (see Register in Claude Code). To install into an environment instead:

bash
uv pip install video-vision-mcp     # or: pip install video-vision-mcp

From source (development)

bash
git clone https://github.com/KitDevUA/video-vision-mcp.gitcd video-vision-mcpuv venv && source .venv/bin/activateuv pip install -e ".[dev]"          # all backends bundled

Dependencies — fully self-contained

  • ffmpeg / ffprobe: if they are already on your PATH, those system binaries are used. Otherwise the bundled static-ffmpeg package supplies them (fetched once into its own local cache — never a system-wide install).
  • whisper.cpp (tier 1 transcription): shipped as the bundled pywhispercpp binding (prebuilt wheels; builds from source only if no wheel exists for your platform/Python). A whisper-cli already on PATH is used if present.
  • whisper model: the ggml model (base by default) downloads from Hugging Face into the cache on first transcription. Override with VIDEO_MCP_WHISPER_MODEL (tiny/base/small/medium/large-v3) or VIDEO_MCP_WHISPER_MODEL_PATH.
  • cloud-only: set OPENAI_API_KEY / GROQ_API_KEY (tier 2) or GEMINI_API_KEY (tier 3); whisper.cpp is then never invoked.

Configure

bash
cp env.example .env# edit .env — nothing is required for tier 1

See env.example for every variable — all optional (API keys and tuning). Tier 1 needs none.

Register in Claude Code

Add to your project .mcp.json (or global config) — see .mcp.json.example:

json
{  "mcpServers": {    "video-vision": {      "command": "uvx",      "args": ["video-vision-mcp"],      "env": { "VIDEO_MCP_ENV": "/abs/path/to/.env" }    }  }}

uvx downloads and runs the published package automatically — no manual install step. VIDEO_MCP_ENV is optional (tier 1 needs no keys); point it at your .env if you use the cloud backends. For local development against a checkout, use "args": ["--from", "/abs/path/to/video-vision-mcp", "video-vision-mcp"] instead. Restart Claude Code; the video-vision tools then appear.

Cache

Results are cached at ~/.cache/video-vision-mcp/ keyed by (file hash, backend, frame interval) — re-analyzing the same video is instant, and switching backends or intervals keeps each result separately. Downloaded URLs and whisper models live under the same dir. Override with VIDEO_MCP_CACHE_DIR.

Cached analyses and downloaded videos older than VIDEO_MCP_CACHE_TTL_HOURS (default 24) are pruned on startup and skipped on read; set 0 to keep them forever. Whisper models are never pruned (expensive to re-download).

Using it with an integration (e.g. Jira, Slack)

This server is deliberately standalone — it never talks to Jira, Slack, or any other service. When a video lives behind an integration, let that integration's MCP fetch it, then pass the result here:

  1. The integration MCP downloads the attachment to a local file (or gives a direct, publicly reachable URL — an authenticated API URL won't work with url).
  2. Call analyze_video file_path=<downloaded file> (or url=<direct link>).

This keeps auth and service-specific logic where it belongs, and lets one video tool serve every source.

Source: README.md at commit 128b7d7

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.5.1LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts