video-brief-mcp
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., "@video-brief-mcp transcribe ~/Desktop/review.mov and slice from 2:15 to 4:10"
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.
video-brief-mcp
An MCP server that turns a screen-recorded walkthrough — the "here's my feedback, let me show you" video a client or PM sends — into something a coding assistant can actually read: a timestamped transcript, frames, scene changes, and slices that pair what was said with what was on screen.
Everything runs locally: ffmpeg for video, openai-whisper for speech. Nothing is uploaded anywhere.
Tools
Tool | What it does |
| Duration, resolution, fps, audio, size, and whether a transcript is cached. Start here. |
| Runs Whisper as a background job. Waits up to |
| Read a time range of the cached transcript, or |
| Frames as images at explicit times ( |
| Moments the screen changes (page switch, modal), thinned to one per few seconds; optionally with frames. Better anchors than fixed intervals. |
| The main reading tool: transcript of |
| Writes |
Times accept seconds, MM:SS or HH:MM:SS. All tools are read-only except brief_export.
Related MCP server: vidlizer
Requirements
macOS or Linux with
ffmpeg/ffprobeon PATH (brew install ffmpeg)Python 3 with
openai-whisper(pip install openai-whisper); the first run of a model downloads it to~/.cache/whisper
Setup
npm install && npm run build
claude mcp add video-brief --scope user -- node /absolute/path/to/video-brief-mcp/dist/index.jsOptional environment: VIDEO_BRIEF_MODEL (default small), VIDEO_BRIEF_LANGUAGE (default en, or auto),
VIDEO_BRIEF_PYTHON, FFMPEG_PATH, FFPROBE_PATH.
A typical session
brief_probe /path/review.mov→ 13:13, 2282×1316, audiobrief_transcribe→ a minute later, the transcriptbrief_scenes withFrames: true→ where the screen changes, as imagesFor each item in the checklist:
brief_slice from: "2:15" to: "4:10"→ what she said and what she pointed atbrief_export outDir: docs/review-oct12→ the folder that goes into the repo next to the task
On an M1 Pro with the small model, one minute of speech transcribes in about 8 seconds on CPU.
Development
npm test # vitest; ffmpeg and whisper are injected, no media needed
npm run typechecksrc/media.ts— ffprobe / ffmpeg: probe, single-frame grabs (input seeking, fast on large files), scene detectionsrc/transcripts.ts— background Whisper jobs, progress parsing, disk cache, slicing and searchscripts/transcribe.py— Whisper runner that prints JSON and progress linessrc/tools.ts— tool definitions and handlerssrc/index.ts— MCP wiring over stdio
Available Tools
7 toolsbrief_exportWrite transcript + frames to a folderA
Writes transcript.txt (timestamped), frames/frame_NNN.jpg every N seconds and a README.md skeleton into outDir — the folder you keep next to the task (the video itself stays out of git).
Inputs: path (required), outDir (required), every, title, +1 more.
brief_framesFrames as imagesARead-only
Frames at explicit times (at), or one every N seconds between from and to. At most 16 per call; page with from/to for more.
Inputs: path (required), at, to, from, +2 more.
brief_probeInspect a videoARead-only
Duration, resolution, fps, audio track, size, and whether a transcript is already cached. Start here.
Inputs: path (required).
brief_scenesScene changesARead-only
Finds moments the screen changes substantially (page switch, modal, new view) — better anchors than fixed intervals. Returns the times, and with withFrames the frames too (capped). Decodes the whole range once, so allow ~1 minute per 10 minutes of video.
Inputs: path (required), to, from, width, +3 more.
brief_sliceWhat was said and shown between two timesARead-only
The core reading tool: transcript of [from, to] interleaved with frames every frameEvery seconds (default: ~4 frames across the range). Use it item by item when turning a review into tasks.
Inputs: to (required), from (required), path (required), width, +1 more.
brief_transcribeTranscribe (background job)ARead-only
Starts Whisper on the file, or reports progress if it is already running. Waits up to waitSeconds (default 45) and returns the full timestamped transcript if it finished, otherwise progress — call again to check. Results are cached, so repeat calls are instant.
Inputs: path (required), model, language, waitSeconds.
brief_transcriptRead the transcriptBRead-only
Reads the cached transcript, optionally a time range, or searches it for a phrase (returns hits with one segment of context each side).
Inputs: path (required), to, from, model, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
Each tool has a distinct role, but frames can be produced three ways (brief_frames, brief_scenes with withFrames, brief_slice), and brief_transcribe vs brief_transcript could initially be confused (start/monitor vs read cached). The descriptions do a good job of delineating these, noting defaults, caps, and when to use which.
All tools share a consistent brief_ prefix in snake_case, so the set reads as a coherent family. The suffix style is mixed (verbs like probe/transcribe/slice/export vs nouns like transcript/frames/scenes), which is a minor deviation but still predictable.
Seven tools is well within a comfortable range, and each covers a discrete step of the video-briefing workflow (inspect, transcribe, read, sample, detect, interleave, export). No tool looks redundant or tacked on.
The surface covers the full lifecycle from probing a file through transcription, evidence gathering, and exporting artifacts to a folder. Minor gaps remain: no cache cleanup/management, no options for transcription model or language, and no explicit error/recovery path for corrupt files.
Related MCP Connectors
Extract YouTube transcripts, search what was said, and read on-screen frames with cited timestamps.
Fetch transcripts, subtitles, chapters, metadata and frames from YouTube and 10+ video platforms
Turn screen recordings and video links into change lists with screenshots an AI can act on.
Make narrated, on-brand product videos of your real app from your coding agent or AI assistant.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceGenerates narrated video walkthroughs of git commits, staged/unstaged changes, or entire codebases with AI-powered analysis, syntax-highlighted code visualization, and text-to-speech narration.-
- AlicenseNot gradedqualityDmaintenancevidlizer pulls frames out of any video, image, or PDF using ffmpeg, sends them to a vision LLM, and returns a flow array — one entry per scene. Each entry tells you what happened, who was on screen, what text was visible, and what changed. If the video has audio, it transcribes it with Apple MLX Whisper and merges the speech into each step.4MIT
- FlicenseAqualityDmaintenanceExtracts timestamped screenshots from local videos, enabling Claude to produce visual walkthroughs without audio analysis or cloud processing.4-
- AlicenseAqualityBmaintenanceEnables Claude Code, Codex, Claude Desktop and Cursor to see and hear MP4/MOV/MKV/WebM videos and screen recordings through timestamped keyframe storyboards, zoom and full-resolution frame drill-down, and a locally generated Whisper transcript. It also works with recording bundles that capture clicks and typed context, and runs entirely on the user's machine with no uploads or API keys.51MIT