Skip to main content
Glama

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

brief_probe

Duration, resolution, fps, audio, size, and whether a transcript is cached. Start here.

brief_transcribe

Runs Whisper as a background job. Waits up to waitSeconds, then returns the full transcript or progress (03:30 of 13:13 (26%)). Cached on disk, so repeat calls are instant.

brief_transcript

Read a time range of the cached transcript, or search for a phrase with context.

brief_frames

Frames as images at explicit times (at: ["2:15", 250]) or every N seconds; 16 per call, with a continuation hint.

brief_scenes

Moments the screen changes (page switch, modal), thinned to one per few seconds; optionally with frames. Better anchors than fixed intervals.

brief_slice

The main reading tool: transcript of [from, to] interleaved with frames, each frame followed by the speech that comes after it.

brief_export

Writes transcript.txt, frames/frame_NNN.jpg and a README skeleton into a folder you keep next to the task. Never overwrites an existing README.

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 / ffprobe on 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.js

Optional environment: VIDEO_BRIEF_MODEL (default small), VIDEO_BRIEF_LANGUAGE (default en, or auto), VIDEO_BRIEF_PYTHON, FFMPEG_PATH, FFPROBE_PATH.

A typical session

  1. brief_probe /path/review.mov → 13:13, 2282×1316, audio

  2. brief_transcribe → a minute later, the transcript

  3. brief_scenes withFrames: true → where the screen changes, as images

  4. For each item in the checklist: brief_slice from: "2:15" to: "4:10" → what she said and what she pointed at

  5. brief_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 typecheck
  • src/media.ts — ffprobe / ffmpeg: probe, single-frame grabs (input seeking, fast on large files), scene detection

  • src/transcripts.ts — background Whisper jobs, progress parsing, disk cache, slicing and search

  • scripts/transcribe.py — Whisper runner that prints JSON and progress lines

  • src/tools.ts — tool definitions and handlers

  • src/index.ts — MCP wiring over stdio

Available Tools

7 tools
brief_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 imagesA
Read-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 videoA
Read-only

Duration, resolution, fps, audio track, size, and whether a transcript is already cached. Start here.

Inputs: path (required).

brief_scenesScene changesA
Read-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 timesA
Read-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)A
Read-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 transcriptB
Read-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

    A3.8/5.0

    Scored across 7 tools

    Disambiguation4/5

    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.

    Naming Consistency4/5

    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.

    Tool Count5/5

    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.

    Completeness4/5

    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

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      vidlizer 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.
      4
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Enables 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.
      5
      1
      MIT