local-video-scenes-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., "@local-video-scenes-mcpextract scenes from screen-recording.mov"
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.
Local Video Scenes MCP
Local Video Scenes MCP extracts timestamped screenshots from local videos so Claude can produce a visual walkthrough. It does not use Whisper, audio transcription, or any hosted video-processing service.
What Stays Local
The original video stays on your machine.
ffmpegandffproberun locally.The MCP returns local screenshot paths and metadata.
Claude analyzes only the screenshots you provide through the MCP result.
Audio is not extracted or analyzed in V1.
Related MCP server: Loom Local MCP Server
Requirements
Node.js 18.18+
ffmpegandffprobe
The server includes video.check_ffmpeg, which reports whether ffmpeg/ffprobe are available and gives platform-specific install guidance. It also includes video.install_ffmpeg, which dry-runs by default and only runs package-manager commands when called with execute: true.
When a package manager is detected, it suggests commands such as:
brew install ffmpeg
winget install --id Gyan.FFmpeg -e
choco install ffmpeg -y
sudo apt-get install -y ffmpegMCP Configuration
After installing or building the package, configure your MCP client to run:
{
"mcpServers": {
"local-video-scenes": {
"command": "npx",
"args": ["local-video-scenes-mcp"]
}
}
}For local development from this repository:
{
"mcpServers": {
"local-video-scenes": {
"command": "node",
"args": ["/absolute/path/to/local-video-scenes-mcp/dist/server.js"]
}
}
}Tools
video.extract_scenes
Input:
{
"path": "/path/to/bug-demo.mp4",
"sensitivity": 0.3,
"minGapSeconds": 1.5,
"mode": "auto"
}Optional fields:
sensitivity: scene-change threshold between0and1; default0.3.maxFrames: maximum returned frames; defaultmin(80, max(12, ceil(durationSeconds / 3))).minGapSeconds: minimum gap between returned frames; default1.5.outputDir: output folder; default is a temp folder.mode:auto,scene, orsample; defaultauto.
Output includes:
durationsourcePathoutputDirextractionModemaxFramesperformanceEstimatewarningsframes[]withtimestamp,path,index, and optionalsceneScore
video.cleanup
Removes the generated frame directory:
{
"outputDir": "/tmp/video-context/abc123"
}video.check_ffmpeg
Checks local ffmpeg/ffprobe availability and returns install guidance if either is missing.
video.install_ffmpeg
Returns the detected install commands by default:
{
"execute": false
}To run the detected package-manager command, call it explicitly with:
{
"execute": true
}Performance Defaults
The default frame budget is tuned for 1-minute screen recordings:
maxFrames = min(80, max(12, ceil(durationSeconds / 3)))For a 60-second video, this returns about 20 frames by default. On an M2 with 16GB RAM, expected V1 behavior is:
ffmpeg extraction: usually 1-5 seconds
Claude visual walkthrough over 12-25 screenshots: roughly 10-30 seconds
target end-to-end time for a 1-minute video: under about 30 seconds in normal cases
Claude Usage Guidance
When a user provides a video path:
Call
video.extract_scenes.Inspect the returned image paths as visual context.
Produce a timestamped walkthrough of visible UI states, actions, errors, code, logs, and important text.
Mention that audio was not analyzed.
Use
video.cleanupwhen the generated screenshots are no longer needed.
Example:
The video shows the user opening the dashboard, navigating to Export, clicking the export action, and reaching a visible HTTP 500 error around 00:01:42. Audio was not analyzed.Development
npm install
npm test
npm run typecheck
npm run buildAvailable Tools
4 toolsvideo.check_ffmpegCheck ffmpegA
Check whether ffmpeg and ffprobe are available and return install guidance if not.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool checks availability and returns install guidance, which is sufficient for a non-destructive check. No annotations exist, so the description carries full burden; it is clear but lacks details on what 'install guidance' entails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise, and front-loaded with the core action. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description fully covers purpose and outcome. It is complete for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the description need not add parameter meaning. Schema coverage is 100% (empty schema). Baseline score of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks availability of ffmpeg and ffprobe and returns install guidance if missing. It is specific and distinguishes from sibling tools like cleanup, extract_scenes, and install_ffmpeg.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (check before using other video tools) but does not explicitly state when to use or provide alternatives. Sibling tool names help, but no direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
video.cleanupCleanup Video FramesB
Remove a generated video scene output directory.
| Name | Required | Description | Default |
|---|---|---|---|
| outputDir | Yes | Output directory returned by video.extract_scenes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only says 'Remove', which is destructive, but fails to describe implications (e.g., permanent deletion, no undo, potential errors if directory is missing or in use).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no fluff. Every word is necessary and front-loaded with the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description omits critical behavioral details like destructive nature and potential return values. With no output schema, it should at least note success/error indicators.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters, and the description adds context by noting the outputDir should come from video.extract_scenes, which helps the agent source the correct value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Remove' and the resource 'generated video scene output directory', making the purpose unambiguous. It also distinguishes from sibling tools like video.extract_scenes which generates the directory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor any prerequisites or context. It simply states the action without explaining typical usage scenarios or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
video.extract_scenesExtract Video ScenesA
Extract timestamped local screenshots from a video using ffmpeg scene detection with fallback sampling. Audio is not analyzed.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | auto uses scene detection then fallback sampling if too sparse. | |
| path | Yes | Path to a local video file. | |
| maxFrames | No | Maximum returned frames. Default: min(80, max(12, ceil(durationSeconds / 3))). | |
| outputDir | No | Optional directory for generated screenshots. | |
| sensitivity | No | Scene-change sensitivity. Default: 0.3. | |
| minGapSeconds | No | Minimum gap between returned frames. Default: 1.5. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must bear the full burden of behavioral disclosure. It mentions that audio is not analyzed, which is a helpful limitation. However, it fails to disclose that the tool may create output files (via outputDir or temporary files), its potential cost (CPU/memory usage), or that it requires ffmpeg (though siblings hint at this). These gaps leave the agent partially uninformed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at two sentences, with no unnecessary words. It front-loads the core action and then adds a key limitation. Every word is informative and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has six parameters and no output schema. The description covers the main purpose and a limitation, but lacks details on output artifacts, performance implications, and error conditions. For a moderate-complexity tool, the description is adequate yet incomplete, warranting a middle score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter description coverage. The tool description adds the context of scene detection and fallback sampling, which clarifies the 'mode' parameter but does not elaborate on individual parameters beyond what the schema provides. With full schema coverage, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description accurately specifies the tool's function: extracting timestamped screenshots using ffmpeg scene detection with fallback sampling. It clearly states the resource (video) and the action (extract scenes). The sibling tools are about ffmpeg management, so this tool is distinct and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description implies it's for extracting frames from local video files, but does not mention prerequisites (e.g., ffmpeg installation) or scenarios where it might not be suitable. Given the siblings handle ffmpeg installation, context is partially provided, but not in the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
video.install_ffmpegInstall ffmpegA
Return or run detected ffmpeg install commands. Dry-run by default; pass execute: true to run package-manager commands.
| Name | Required | Description | Default |
|---|---|---|---|
| execute | No | Run the detected install commands. Default false returns commands only. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool can run package-manager commands and that dry-run is default, implying no changes unless execute is true. However, it does not cover potential side effects, permissions, or error handling, which are relevant for a command-executing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states the main action (return or run commands), second explains the default and parameter. No fluff, every word adds value. The description is front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers the essential behavior. It mentions detection of install commands and execution. Missing details about return format or error handling, but overall adequate for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (the parameter is well-documented in the schema). The description adds the term 'dry-run' but essentially restates the schema's info. No new semantic value beyond what the schema provides, so score is baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns or runs detected ffmpeg install commands. It specifies the default dry-run behavior and the parameter to execute. This distinguishes it from siblings like video.check_ffmpeg (checking) and video.cleanup/extract_scenes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: dry-run by default, and use 'execute: true' to actually run commands. It does not explicitly exclude other scenarios, but the usage is straightforward given the single boolean parameter. Sibling context helps differentiate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v0.1.0- First observed
video.check_ffmpeg - First observed
video.cleanup - First observed
video.extract_scenes - First observed
video.install_ffmpeg
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: checking availability, installing, extracting scenes, and cleanup. No overlap in functionality.
All tools use a consistent 'video.' prefix and snake_case. The pattern verb_object (e.g., check_ffmpeg, extract_scenes) is maintained throughout.
Four tools adequately cover the essential workflow for a video scene extraction server: environment check, installation, extraction, and cleanup. The scope is well-balanced.
The tool surface covers the core operations (check, install, extract, cleanup). A minor gap is the lack of a read-only tool to list previously extracted scenes without re-running extraction, but overall it's sufficient.
Maintenance
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
Give AI random access to video: timestamped contact sheets + zoom into any start/end range.
Video analysis AI: transcripts, summaries, visual scenes/shots, clips, answers in natural language.
Related MCP Servers
- -licenseAqualityNot gradedmaintenanceEnables extracting screenshots from video files at specific timestamps or intervals. Supports multiple video formats and output customization including resolution, quality, and format options.411 npm1-
- FlicenseNot gradedqualityDmaintenanceExtracts and analyzes key frames from Loom videos or local video files for debugging purposes. Automatically detects scene changes and provides visual context for troubleshooting issues.4-
- AlicenseNot gradedqualityDmaintenanceAutomatically extracts subtitles, captures screenshots at specified timestamps, and generates structured Obsidian markdown notes from YouTube videos using Claude AI.3MIT
- FlicenseNot gradedqualityDmaintenanceBridges Claude and video content by extracting keyframes and transcribing audio, enabling Claude to analyze video files.-