mcp视频分析仪
精选于 很棒的mcp服务器.
用于视频分析的MCP服务器--从视频URL中提取转录本、关键帧和元数据。支持Loom、直接视频文件(.mp4、.webm)等。
没有现有的视频MCP组合 文字记录+视觉框架+元数据 在一个工具中。这个确实如此。
安装
先决条件
- Node.js 18+ --需要通过以下方式运行服务器
npx - yt-dlp (可选)--通过ffmpeg实现帧提取。安装时使用
pip install yt-dlp - 铬/铬 (可选)--如果yt-dlp不可用,则返回帧提取
没有yt-dlp或Chrome,服务器仍然可以工作——你会得到成绩单、元数据和评论,只是没有框架。
克劳德代码(CLI)
claude mcp add video-analyzer -- npx mcp-video-analyzer@latest然后重新启动Claude Code或开始新的对话。
VS代码/光标
添加到MCP设置文件中:
- VS Code:
File → Preferences → Settings → search "MCP"或编辑~/.vscode/mcp.json/%APPDATA%\Code\User\mcp.json(Windows) - 光标:
Settings → MCP Servers → Add
{
"servers": {
"mcp-video-analyzer": {
"type": "stdio",
"command": "npx",
"args": ["mcp-video-analyzer@latest"]
}
}
}然后重新加载窗口(Ctrl+Shift+P → “开发人员:重新加载窗口”)。
克劳德桌面版
添加到您的Claude Desktop配置文件中:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 视窗:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"video-analyzer": {
"command": "npx",
"args": ["mcp-video-analyzer@latest"]
}
}
}然后重新启动Claude Desktop。
验证它是否正常工作
安装后,询问您的AI助手:
Analyze this video: https://www.loom.com/share/bdebdfe44b294225ac718bad241a94fe如果服务器已连接,它将自动调用 analyze_video 工具。
工具
analyze_video --完整视频分析
在一次调用中从视频URL中提取所有内容:
> Analyze this video: https://www.loom.com/share/abc123...退货:
- 转录本 带有时间戳和发言人
- 关键帧 通过场景变化检测提取(自动去重)
- OCR文本 从帧中提取(代码、错误消息、屏幕上可见的UI文本)
- 带注释的时间线 将文字记录+框架+OCR合并为统一的“何时发生”视图
- 元数据 (标题、持续时间、平台)
- 评论 来自观众
- 章节 和 AI摘要 (可用时)
AI将 自动地 当它看到视频URL时调用此工具——无需询问。
选项:
detail--分析深度:"brief"(元数据+截断的转录,无帧),"standard"(默认),"detailed"(密集采样,更多帧)fields--要返回的特定字段数组,例如。["metadata", "transcript"]。可用:metadata,transcript,frames,comments,chapters,ocrResults,timeline,aiSummarymaxFrames(1-60,默认值取决于细节级别)--提取帧的上限threshold(0.0-1.0,默认值0.1)--场景更改灵敏度forceRefresh--绕过缓存并重新分析skipFrames--仅用于转录分析的跳过帧提取
get_transcript --仅提供成绩单
> Get the transcript from this video快速转录提取。当没有可用的本地转录本时,返回Whisper转录。
get_metadata --仅元数据
> What's this video about?返回元数据、评论、章节和AI摘要,而无需下载视频。
get_frames --仅限框架
> Extract frames from this video with dense sampling两种模式:
- 场景变化检测 (默认)--捕获视觉过渡
- 密集采样 (
dense: true)--全覆盖时为1帧/秒
analyze_moment --在一定时间范围内深潜
> Analyze what happens between 1:30 and 2:00 in this video将突发帧提取+过滤转录+OCR+带注释的时间线相结合,用于聚焦片段。当你需要准确了解特定时刻发生的事情时使用。
get_frame_at --时间戳上的单帧
> Show me the frame at 1:23 in this video人工智能读取记录,发现关键时刻,并要求精确的帧来查看屏幕上的内容。
get_frame_burst --时间范围内的N帧
> Show me 10 frames between 0:15 and 0:17 of this video对于运动、振动、动画或快速滚动,突发模式在一个狭窄的窗口中捕获N帧,这样AI就可以看到逐帧的变化。
细节级别
| 级别 | 帧 | 转录 | OCR | 时间线 | 用例 |
|---|---|---|---|---|---|
brief | 无 | 前10个条目 | 否 | 否 | 快速检查——这段视频是关于什么的? |
standard | 最多20个(场景更改) | 完整 | 是 | 是 | 默认--完整分析 |
detailed | 高达60(1fps密集) | 完整 | 是 | 是 | 深度分析-每秒捕获 |
缓存
结果将在内存中缓存10分钟。具有相同URL和选项的后续调用会立即返回。使用 forceRefresh: true 绕过缓存。
支持的平台
| 平台 | 转录 | 元数据 | 评论 | 框架 | 授权 | |
|---|---|---|---|---|---|---|
| 织布机 | 是 | 是 | 是 | Yes | 是 | 无 |
| 直接URL (.mp4、.webm) | 否 | 仅持续时间 | 否 | 是 | 无 |
帧提取策略
帧提取使用双策略回退链——不需要单个依赖关系:
| 策略 | 工作原理 | 速度 | 要求 |
|---|---|---|---|
| yt-dlp+ffmpeg (主要) | 下载视频,通过场景检测提取帧 | 快速、精确 | yt-dlp (pip install yt-dlp) |
| 浏览器 (回退) | 在无头Chrome中打开视频,寻求时间戳,截图 | 速度较慢,无需下载 | 已安装Chrome或Chromium |
回退是自动的——如果yt-dlp不可用,服务器会通过以下方式尝试基于浏览器的提取 puppeteer-core如果两者都不可用,分析仍然会返回成绩单+元数据+评论,只是没有框架。
后处理管道
帧提取后,管道会自动应用:
| 步骤 | 它做什么 | 为什么 |
|---|---|---|
| 帧重复数据删除 | 使用感知哈希(dHash+Hamming距离)删除几乎相同的连续帧 | 屏幕广播通常有很长的静态时刻——dedup删除冗余帧,节省令牌 |
| 光学字符识别 | 从每个帧中提取屏幕上可见的文本(通过tesseract.js) | 捕获转录本未覆盖的代码、错误消息、终端输出、UI文本 |
| 带注释的时间线 | 将转录时间戳+帧时间戳+OCR文本合并到一个按时间顺序排列的视图中 | 为AI提供统一的“在每个时刻说了什么,视觉上发生了什么变化,出现了什么文本” |
OCR步骤需要 tesseract.js (作为依赖项包含在内)。如果加载失败,分析将在没有OCR的情况下继续进行,不会丢失任何帧或转录。
补充工具
Chrome开发工具MCP
对于 实时web调试 除了视频分析,还可以将此服务器与 Chrome开发工具MCP:
claude mcp add chrome-devtools npx @anthropic-ai/mcp-devtools@latest何时使用每个:
| 场景 | 工具 |
|---|---|
| Bug报告记录为Loom视频 | mcp-video-analyzer --从录音中提取转录、帧和错误文本 |
| 实时调试网页 | Chrome DevTools MCP——检查DOM、控制台、网络,截图 |
| 视频显示UI问题,需要再现它 | 两者都用:先分析视频,然后在Chrome DevTools中打开页面进行再现 |
这两个MCP相辅相成:视频分析仪理解 记录的 内容,DevTools与 生活 页。
输出示例
这 examples/loom-demo/ 文件夹包含 实际产出 从分析公共织机视频(Boost应用内演示视频, 2:55).
| 文件 | 显示内容 |
|---|---|
metadata.json | 标题、期限、平台 |
transcript.json | 42个带有扬声器ID的带时间戳的条目 |
timeline.json | 统一的时间顺序视图(转录+帧合并) |
moment-transcript-0m30s-0m45s.json | 已筛选的成绩单 analyze_moment (0:30–0:45) |
full-analysis.json | 完成 analyze_video 输出 |
帧图像 (共19人) examples/loom-demo/frames/):
scene_*.jpg--场景变化检测(关键视觉过渡)dense_*.jpg--1fps密集采样(每10帧保存为样本)burst_*.jpg--用于矩分析的突发提取(0:30–0:45)
更改后重新生成: npx tsx examples/generate.ts --需要yt-dlp+网络访问。发展
# Install dependencies
npm install
# Run all checks (format, lint, typecheck, knip, tests)
npm run check
# Build
npm run build
# Run E2E tests (requires network)
npm run test:e2e
# Open MCP Inspector for manual testing
npm run inspect建筑
src/
├── index.ts # Entry point (shebang + stdio)
├── server.ts # FastMCP server + tool registration
├── tools/ # MCP tool definitions (7 tools)
│ ├── analyze-video.ts # Full analysis with detail levels + caching
│ ├── analyze-moment.ts # Deep-dive on a time range
│ ├── get-transcript.ts # Transcript-only with Whisper fallback
│ ├── get-metadata.ts # Metadata + comments + chapters
│ ├── get-frames.ts # Frames-only (scene-change or dense)
│ ├── get-frame-at.ts # Single frame at timestamp
│ └── get-frame-burst.ts # N frames in a time range
├── adapters/ # Platform-specific logic
│ ├── adapter.interface.ts # IVideoAdapter interface + registry
│ ├── loom.adapter.ts # Loom: authless GraphQL
│ └── direct.adapter.ts # Direct URL: any mp4/webm link
├── processors/ # Shared processing
│ ├── frame-extractor.ts # ffmpeg scene detection + dense + burst extraction
│ ├── browser-frame-extractor.ts # Headless Chrome fallback for frames
│ ├── audio-transcriber.ts # Whisper fallback (HF transformers → CLI → OpenAI)
│ ├── image-optimizer.ts # sharp resize/compress
│ ├── frame-dedup.ts # Perceptual dedup (dHash + Hamming distance)
│ ├── frame-ocr.ts # OCR text extraction (tesseract.js)
│ └── annotated-timeline.ts # Unified timeline (transcript + frames + OCR)
├── config/
│ └── detail-levels.ts # brief / standard / detailed config
├── utils/
│ ├── cache.ts # In-memory TTL cache with LRU eviction
│ ├── field-filter.ts # Selective field filtering for responses
│ ├── url-detector.ts # Platform detection from URL
│ ├── vtt-parser.ts # WebVTT → transcript entries
│ └── temp-files.ts # Temp directory management
└── types.ts # Shared TypeScript interfaces许可证
麻省理工学院
