Video Vision Mcp

io.github.KitDevUA由 GitHub 账号 KitDevUA 发布v0.5.1更新于 Oct 24, 2026

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

已验证STDIO仅桌面媒体与设计AI 与机器学习

概览

AI 生成的概览

一个本地 MCP 服务器,把视频文件或直链转换为抽帧图像和转写文本,或交给 Gemini 原生分析,让助手能理解视频内容。

可以做什么
分析本地路径或直链视频,输出抽帧图像、转写文本和元数据,可设置抽帧间隔,也可指定时间点取帧。仅获取转写文本。列出已缓存的解析结果及所用后端。可在三种后端间选择:完全本地的 ffmpeg 加 whisper.cpp、经 OpenAI 或 Groq 的云端转写、或由 Gemini 一次性分析整段视频。
适用场景
当助手需要理解它本身无法观看的视频内容时适用,例如缺陷工单中的屏幕录制或链接片段,并希望得到抽帧加转写,或一次 Gemini 分析结果。
运行要求
以 Python 包形式本地运行(需 Python 3.10 及以上),可通过 uvx 或 pip 使用。第 1 层无需密钥,但首次转写会从 Hugging Face 下载 whisper 模型。云端层需要 GEMINI_API_KEY、OPENAI_API_KEY 或 GROQ_API_KEY,可通过 VIDEO_MCP_ENV 指向的 .env 文件加载。获取链接和模型需要网络访问。
安装前请注意
设置 GEMINI_API_KEY、OPENAI_API_KEY 或 GROQ_API_KEY 后,视频内容会发送给相应第三方;服务器会打印一次性提示,且除非禁用,Gemini 优先。只有第 1 层完全本地。下载的视频和缓存结果保存在缓存目录,默认 24 小时后清理。需要鉴权的 API 链接不能作为 url 输入。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Video Vision Mcp,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

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.

来源:README.md,提交 128b7d7

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.5.1最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分