videoscan-mcp
Enables downloading and analyzing audio from Bandcamp, including transcription and metadata extraction.
Enables downloading and analyzing videos from CBS, including transcription, frame extraction, and metadata retrieval.
Enables downloading and analyzing videos from CNN, including transcription, frame extraction, and metadata retrieval.
Enables downloading and analyzing videos from Dailymotion, including transcription, frame extraction, and metadata retrieval.
Enables downloading and analyzing videos from Facebook, including transcription, frame extraction, and metadata retrieval.
Provides video analysis capabilities using Google Gemini's vision API to analyze frames and extract visual information from videos.
Enables downloading and analyzing videos from Instagram, including transcription, frame extraction, and metadata retrieval.
Enables downloading and analyzing videos from NBC, including transcription, frame extraction, and metadata retrieval.
Provides video analysis capabilities using OpenAI's vision and transcription APIs to analyze frames and transcribe audio from videos.
Enables downloading and analyzing videos from Pinterest, including transcription, frame extraction, and metadata retrieval.
Enables downloading and analyzing videos from Reddit, including transcription, frame extraction, and metadata retrieval.
Enables downloading and analyzing audio from SoundCloud, including transcription and metadata extraction.
Enables downloading and analyzing videos from TikTok, including transcription, frame extraction, and metadata retrieval.
Enables downloading and analyzing videos from Twitch, including transcription, frame extraction, and metadata retrieval.
Enables downloading and analyzing videos from Vimeo, including transcription, frame extraction, and metadata retrieval.
Enables downloading and analyzing videos from YouTube, including transcription, frame extraction, and metadata retrieval.
Enables downloading and analyzing YouTube Shorts videos, including transcription, frame extraction, and metadata retrieval.
Click on "Install 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., "@videoscan-mcpAnalyze this YouTube video: https://youtu.be/dQw4w9WgXcQ"
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.
VideoScan MCP
An MCP (Model Context Protocol) server for comprehensive video analysis — AI-powered transcription, visual frame analysis, and metadata extraction from 1000+ platforms.
Features
Full video analysis — combines transcription, frame extraction, and metadata in a single call
AI vision analysis — describes frames and extracts on-screen text (OCR) using GPT-4o, Claude, or Gemini
Audio transcription — Whisper-based transcription with timestamps and language detection
Auto-tuning — automatically adjusts frame extraction density, interval, and detail level based on video duration
Smart frame extraction — scene-change detection, interval sampling, or combined strategy
Deduplication — perceptual hashing removes near-duplicate frames before analysis
Metadata extraction — title, duration, chapters, tags, view count, and more without full download
Multi-provider — OpenAI, Anthropic, and Google vision providers with per-request override
Caching — persistent cache for downloads, frames, and results to minimize repeat costs
1000+ platforms — powered by yt-dlp (YouTube, Vimeo, Twitter/X, TikTok, and more)
Related MCP server: YOLO-FFMPEG-MCP
Installation
pip install videoscan-mcpSystem dependencies
VideoScan requires ffmpeg for video processing and yt-dlp for downloading from URLs.
# macOS
brew install ffmpeg yt-dlp
# Ubuntu/Debian
apt install ffmpeg
pip install yt-dlp
# Windows — install ffmpeg from https://ffmpeg.org/download.html, then:
pip install yt-dlpConfiguration
Copy .env.example to .env and fill in at minimum one API key:
# Vision provider (frame analysis)
VISION_PROVIDER=openai # openai | anthropic | google
VISION_MODEL= # optional — defaults: gpt-4o / claude-sonnet-4-20250514 / gemini-2.0-flash
# Transcription provider
TRANSCRIPTION_PROVIDER=openai # openai only for now
TRANSCRIPTION_MODEL=whisper-1
# Concurrency
VISION_CONCURRENCY=5 # max parallel vision API calls
# API keys — only need the key for your chosen provider
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
GOOGLE_API_KEY=AIza...
# Cache
CACHE_ENABLED=true
CACHE_DIR=~/.videoscan/cache
CACHE_MAX_SIZE_GB=5
CACHE_DOWNLOAD_TTL=3600 # 1 hour
CACHE_FRAMES_TTL=86400 # 24 hours
CACHE_RESULTS_TTL=604800 # 7 days
# Safety limits (set to 0 for unlimited)
MAX_VIDEO_DURATION=3600 # 60 minutes in seconds
MAX_DOWNLOAD_SIZE=2147483648 # 2 GB in bytes
MAX_ANALYZED_FRAMES=100
DOWNLOAD_TIMEOUT=300
FRAME_ANALYSIS_TIMEOUT=30Quick Start — Claude Code
Add VideoScan to your Claude Code settings.json (usually at ~/.claude/settings.json):
{
"mcpServers": {
"videoscan": {
"command": "videoscan",
"env": {
"OPENAI_API_KEY": "sk-..."
}
}
}
}Or using uvx without a global install:
{
"mcpServers": {
"videoscan": {
"command": "uvx",
"args": ["videoscan-mcp"],
"env": {
"OPENAI_API_KEY": "sk-..."
}
}
}
}Once connected, you can ask Claude things like:
"Analyze this YouTube video: https://youtube.com/watch?v=..."
"Transcribe the audio from this video file"
"What's on screen at the 2:30 mark of this video?"
"Extract frames from this video and describe what you see"
Auto-Tuning
When max_frames and interval are not explicitly set, VideoScan automatically adjusts frame extraction parameters based on video duration to optimize cost and coverage:
Duration | Frames | Interval | Strategy | Detail |
< 2 min | ~1/sec (dense) | 1s | combined | detailed |
2–10 min | ~40 | 3s | combined | standard |
10–30 min | ~30 | 10s | combined | standard |
30–60 min | ~30 | 20s | combined | brief |
> 60 min | ~20 | 30s | scene only | brief |
Short videos get dense frame extraction for maximum detail, while longer videos use lighter sampling to keep costs down. You can always override by setting max_frames or interval explicitly.
Tool Reference
analyze_video
Full pipeline — transcription + AI frame analysis + metadata in one call. Uses auto-tuning by default.
Parameter | Type | Default | Description |
| string | required | URL or local file path |
| string |
| Vision level: |
| int | auto | Maximum frames to analyze — set to |
| float |
| Scene change sensitivity (0.0–1.0) |
| string |
| Frame extraction: |
| int | auto | Seconds between frames — set to |
| bool |
| Skip visual analysis (transcription only) |
| bool |
| Skip transcription (frames only) |
| string |
| Transcription language or |
| string |
| Override vision provider |
| bool |
| Bypass cache |
transcribe
Transcribe video or audio to text with timestamps.
Parameter | Type | Default | Description |
| string | required | URL or local file path |
| string |
| Preferred language or |
extract_frames
Extract and AI-analyze frames from a video.
Parameter | Type | Default | Description |
| string | required | URL or local file path |
| int |
| Maximum frames to extract (1–100) |
| float |
| Scene change sensitivity (0.0–1.0) |
| string |
|
|
| int |
| Seconds between frames in interval mode |
| string |
| Vision analysis level |
| bool |
| Remove near-duplicate frames via dHash |
| string |
| Override vision provider |
| bool |
| Bypass cache |
analyze_moment
Deep-dive analysis on a specific time range.
Parameter | Type | Default | Description |
| string | required | URL or local file path |
| float | required | Start time in seconds |
| float | required | End time in seconds |
| bool |
| Extract 1 frame per second in the range |
| string |
| Vision analysis level |
| string |
| Override vision provider |
| bool |
| Bypass cache |
get_frame_at
Get a single frame at a specific timestamp, optionally analyzed by AI.
Parameter | Type | Default | Description |
| string | required | URL or local file path |
| float | required | Time in seconds |
| bool |
| Run AI vision analysis |
| string |
| Override vision provider |
| bool |
| Bypass cache |
get_metadata
Fetch video metadata without downloading the full video.
Parameter | Type | Default | Description |
| string | required | URL or local file path |
| list |
| Specific fields to return — |
Supported Platforms
VideoScan uses yt-dlp under the hood, which supports 1000+ video platforms including:
YouTube, YouTube Shorts, YouTube Live
Vimeo, Dailymotion, Twitch
Twitter/X, Instagram, TikTok, Facebook
Reddit, LinkedIn, Pinterest
BBC iPlayer, CNN, NBC, CBS
SoundCloud, Bandcamp (audio)
And hundreds more — see the yt-dlp supported sites list
Local files in any format supported by ffmpeg (mp4, mov, avi, mkv, webm, mp3, wav, etc.) are also supported.
Cost Estimates
Costs depend on your chosen provider and usage:
Operation | Provider | Approx. Cost |
Vision analysis | OpenAI GPT-4o | ~$0.015 per frame |
Vision analysis | Anthropic Claude | ~$0.024 per frame |
Vision analysis | Google Gemini | ~$0.002 per frame |
Transcription | OpenAI Whisper | ~$0.006 per minute |
A typical 10-minute video analyzed with analyze_video (30 frames + transcription) costs approximately $0.45–$0.51 with OpenAI.
Development
git clone https://github.com/guguborbh/videoscan-mcp
cd videoscan-mcp
pip install -e ".[dev]"
pytestLicense
MIT License — see LICENSE for details.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/guguborbh/videoscan-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server