youtube-whisper
Provides tools for working with YouTube videos: verbatim timestamped transcription of original audio via Groq Whisper, HD keyframe extraction at specific timestamps, video metadata retrieval, and chronological channel video listing.
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., "@youtube-whisperTranscribe https://youtu.be/dQw4w9WgXcQ verbatim with timestamps"
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.
whis-tube šļøš¹
High-Fidelity YouTube Verbatim Transcription & Rapid Visual Keyframe Intelligence MCP Server
š English | Bahasa Indonesia
whis-tube is a Python-based Model Context Protocol (MCP) server engineered specifically for AI Coding Agents (Claude Code, Cursor, Windsurf, OpenBot, Hermes). It combines lossless verbatim audio transcription via Groq Whisper Large V3 with blazing-fast HD (720p/1080p) visual keyframe extraction for ground-truth visual validation.
⨠Key Features
True Verbatim Audio Ground-Truth (No Auto-Captions): Fetches the original audio track (actively rejecting AI auto-dubbing), decodes once to FLAC 16 kHz mono using the SoX resampler, and transcribes every spoken word with timestamp accuracy.
Smart Silence-Detected Chunking (<25MB): Automatically detects pauses and silence intervals to slice long audio (1ā3+ hours) into ~10-minute segments. Requests strictly remain under Groq's 25 MB payload limit.
Multi-Key Pool & 429 Failover: Rotates across multiple Groq API keys seamlessly. When an HTTP 429 rate limit is encountered, the server reads the
retry-afterheader, flags the key for cooldown, and transparently dispatches remaining chunks to another available key without failing the task.Rapid Visual Keyframe Extraction (HLS Range-Seek): Extracts crisp native 720p/1080p frames in 4ā7 seconds on exact timestamps without downloading the entire video file.
Agent SOP Ready (
SKILL.md): Includes comprehensive research methodology guidelines for AI agents, preventing lazy summaries and mandating inline visual verification for charts, slides, and technical formulas.
Related MCP server: YouTube Insights MCP Server
š ļø System Requirements
Python:
>= 3.10yt-dlp: Available in system PATH (
yt-dlp --version)ffmpeg & ffprobe: Available in system PATH (
ffmpeg -version)Groq API Key: Free tier keys available at console.groq.com
š Quickstart (One Command via uv)
Run the MCP server directly without manual virtualenv management:
# Run the MCP server directly
uv run --directory . python -m whis_tube.serverOr install locally in editable mode:
uv pip install -e .
youtube-whisperš MCP Client Configuration
1. Claude Desktop / Claude Code / Cursor
Add the server entry to your MCP configuration file (e.g., claude_desktop_config.json or .mcp.json):
{
"mcpServers": {
"youtube-whisper": {
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/whis-tube",
"python",
"-m",
"whis_tube.server"
],
"env": {
"GROQ_API_KEY": "gsk_your_key_here"
}
}
}
}2. Multi-Key Pool (Recommended for Heavy Research)
If you maintain multiple free-tier Groq API keys to maximize hourly/daily quotas, store them in ~/.config/groq/keys.json:
{
"keys": [
"gsk_key1...",
"gsk_key2...",
"gsk_key3..."
]
}The youtube-whisper server automatically detects this pool file, manages round-robin rotation, and tracks key cooldown periods automatically.
š§° Available MCP Tools
Tool Name | Description | Arguments |
| Downloads original audio, chunks at silence (<25MB), and transcribes verbatim into timestamped |
|
| Extracts native HD frames (720p / 1080p) at exact timestamps ( |
|
| Retrieves concise metadata (title, channel, duration, live stream status). |
|
| Generates a chronological catalog of channel uploads (excluding Shorts), ordered oldest to newest. |
|
| Real-time health dashboard inspecting active Groq API keys, usage cooldowns, and pool readiness. | (none) |
š Repository Structure
whis-tube/
āāā .mcp.json # Default MCP client configuration
āāā .env.example # Environment variables template
āāā pyproject.toml # Package configuration & dependencies
āāā SKILL.md # AI Agent Research Methodology & SOP (English)
āāā SKILL.id.md # AI Agent Research Methodology & SOP (Indonesian)
āāā README.md # English Documentation
āāā README.id.md # Indonesian Documentation
āāā src/
āāā whis_tube/
āāā __init__.py # Package metadata
āāā __main__.py # Module CLI entrypoint
āāā server.py # FastMCP server & registered tool definitions
āāā audio.py # yt-dlp, SoX FLAC encoding, silence detection & chunking
āāā groq_pool.py # Multi-key Groq pool & automatic 429 failover
āāā visual.py # HLS range-seek frame grabber
āāā utils.py # Timestamp formatting & channel parserš License
Distributed under the MIT License. Free for personal and commercial agent workflows.
Available Tools
5 toolscheck_groq_quotaA
Inspect Groq API key pool status, active key counts, and cooldown timers.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It discloses the informational nature of the call and the categories of data returned (key counts, cooldown timers), implying a safe read, but it says nothing about permissions, whether cooldowns reflect per-key or global state, or how fresh the snapshot is.
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?
A single front-loaded sentence with no filler; every clause names a distinct piece of information the tool exposes. Nothing is wasted and nothing essential is buried.
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 read tool with an output schema that documents the return shape, the description covers what the tool is and roughly what it reports. Only minor operational context (e.g., why cooldowns matter, staleness) is missing.
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 takes zero parameters, so there is nothing for the description to clarify beyond the already-complete schema. Baseline 4 applies for a parameterless tool.
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 gives a specific verb ('Inspect') plus a concrete resource set: Groq API key pool status, active key counts, and cooldown timers. An agent can immediately tell this is a read-only status check and, since the sibling tools are all YouTube/video utilities, there is little risk of confusion even without explicit differentiation.
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?
Usage is only implied: an agent can infer it should call this before or when troubleshooting Groq-backed operations, but the description never says when to use it, when not to, or what to do with the result. There are no alternatives to disambiguate against, which limits the harm but also the value.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_keyframeA
Extract a native 720p or 1080p HD keyframe at an exact timecode (HH:MM:SS) via HLS m3u8 range-seek without downloading full video bytes.
Args: url: YouTube video URL. timestamp: Exact timecode string ('HH:MM:SS' or 'MM:SS', e.g. '00:15:30'). output_path: Optional output path (.jpg) or folder. Defaults to './frames/<video_id>_.jpg'. resolution: Target resolution height in pixels (720 or 1080). Defaults to 720.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| timestamp | Yes | ||
| resolution | No | ||
| output_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the burden and does well: it discloses the underlying HLS range-seek mechanism and explicitly notes that full video bytes are not downloaded, a real performance trait. Gaps remain on failure modes (live streams, unavailable resolutions, invalid timecodes) and whether existing output files are overwritten.
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?
Front-loaded with the capability and its key constraint, then a clean Args block. The mechanism clause is information-dense rather than padded; only minor redundancy in restating parameter names the schema already lists.
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 four parameters, an output schema (so return values need no explanation), and no annotations, the description supplies defaults, formats, and the not-downloading behavior an agent needs to choose this tool. Missing only edge-case behavior (invalid timecode, out-of-range timestamp, overwrite policy).
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 coverage is 0% (bare titles only), so the description must compensate and largely does: it defines timestamp formats ('HH:MM:SS' or 'MM:SS' with an example), resolution valid values (720/1080), output_path as file or folder, and the concrete default filename pattern. It misses stating that url is a YouTube-specific URL constraint beyond the word 'YouTube'.
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?
States a specific verb+resource ('Extract a native 720p or 1080p HD keyframe') plus the mechanism ('via HLS m3u8 range-seek without downloading full video bytes'), which clearly distinguishes it from siblings like transcribe_youtube and get_video_info.
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?
Usage is implied by the purpose (grab a frame at a timecode) but there is no explicit when-to-use guidance, no exclusions, and no mention of alternatives such as get_video_info for metadata-only needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_video_infoB
Fetch YouTube video metadata (title, channel, duration, upload date, live status).
Args: url: YouTube video URL.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the burden; 'Fetch ... metadata' does imply a non-destructive read, and the output schema covers the return shape. It says nothing about invalid/non-video URLs, private or age-restricted videos, live-stream edge cases, or any rate limiting or auth, which are the real failure modes for a YouTube fetch.
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 payload is one front-loaded sentence enumerating exactly what is returned, with zero filler. The trailing 'Args: url: YouTube video URL' block is slightly redundant with the schema but does add the video-vs-channel qualifier.
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 one-parameter read tool with an output schema, this is close to sufficient ā the return fields are named and the parameter is scoped. What is missing is disambiguation from the four siblings and any hint about error behavior, which an agent needs before deciding to call it.
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 0%, so the description must compensate. It does document the single parameter and usefully narrows it to a 'YouTube video URL' (ruling out channel or playlist URLs), but it gives no accepted formats (watch?v=, youtu.be, shorts) or validation behavior.
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 gives a specific verb ('Fetch') and resource ('YouTube video metadata') and even enumerates the returned fields (title, channel, duration, upload date, live status). It implicitly separates itself from siblings like transcribe_youtube and list_channel_videos by returning metadata for a single video, though it never names an alternative explicitly.
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?
There is no when-to-use guidance: nothing states that this is for a single video rather than a channel, or that transcript text requires transcribe_youtube instead. The agent must infer the selection rule from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_channel_videosA
Enumerate video uploads from a channel without downloading bytes. Excludes Shorts (<60s). Defaults to chronological oldest-to-newest order.
Args: channel_url: YouTube channel uploads URL (e.g. 'https://www.youtube.com/@channel/videos'). limit: Maximum number of videos to list (default: 30). sort_order: 'oldest_first' (recommended for research) or 'newest_first'.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| sort_order | No | oldest_first | |
| channel_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It usefully discloses that bytes are not downloaded and that Shorts under 60s are excluded, which are real behavioral traits. It says nothing about pagination, invalid-channel handling, rate limits, or whether the listing is a snapshot, which matters for a scraping-style 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 front-loaded sentences establish purpose, exclusion, and default ordering before the Args block. Every sentence carries information and nothing is padded.
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?
An output schema exists, so return-value shape needn't be explained, and the parameter block covers all three inputs for a simple read tool. Only edge-case behavior (maximum limit, malformed URLs, pagination) is left unaddressed.
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 coverage is 0%, and the Args block compensates well: channel_url gets a concrete format example, limit gets a default, and sort_order gets both valid values plus a recommendation. It omits any cap on limit and does not clarify whether other URL forms (e.g. /shorts or /playlists) are accepted.
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 opens with a specific verb and resource, 'Enumerate video uploads from a channel', and immediately scopes it with 'without downloading bytes' and the Shorts exclusion. That functionally separates it from transcribe_youtube, but no sibling is named explicitly, so it falls just short of a 5.
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?
Usage is only implied: 'oldest_first' (recommended for research) hints at the intended context and the default is stated. There is no explicit statement of when to choose this over get_video_info or transcribe_youtube, and no when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transcribe_youtubeA
Download audio, apply silence-detected chunking (<25MB), and transcribe verbatim via Groq Whisper Large V3 with timestamped segment accuracy.
Args: url: YouTube video URL (standard watch, short link, or completed livestream archive). output_path: Optional output path or directory for transcript files (.md & raw.json). Defaults to './transcripts/<video_id>.md'. language: Optional language code (e.g. 'id', 'en', 'ja'). If omitted, auto-detected.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| language | No | ||
| output_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and it does meaningful work: it discloses the processing pipeline (audio download, silence-based chunking under 25MB), the transcription backend, verbatim output with timestamps, and that two files are written. It omits operational details such as required Groq credentials, expected runtime for long videos, and failure behavior on unavailable or region-locked videos, which keeps it below a 5.
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 first sentence front-loads the whole pipeline, and the Args section is compact and scannable with one entry per parameter. It is slightly heavy in the opening clause (silence-detected chunking, <25MB, model name) but no sentence is wasted filler.
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 multi-step media tool with an output schema already documenting return values, the definition covers inputs, default locations, and output artifact types. The main remaining gaps are credential requirements and runtime/size expectations for long videos, which an agent would want before invoking a download-and-transcribe job.
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 0%, so the description must compensate, and the Args block covers all three parameters: the accepted URL forms for url, the default path pattern and emitted file types for output_path, and the auto-detect fallback for language. It stops short of naming the exact language code format beyond examples, but the added meaning is substantial versus a bare schema.
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 gives a specific verb chain and resource: download audio, chunk it, transcribe verbatim with Groq Whisper Large V3, emitting timestamped segments. That is clearly distinct from siblings like extract_keyframe, get_video_info, list_channel_videos, and check_groq_quota, so an agent can identify the right tool without opening the schema.
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?
Usage is implied by the task described (give a URL, get a transcript), but there is no explicit statement of when to reach for this versus get_video_info or list_channel_videos, and no exclusions or prerequisites such as API key or quota checks. The .md and _raw.json outputs hint at the intended scope, but a routing hint to check_groq_quota or get_video_info would push this higher.
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.
5 tool updates
v0.1.0- First observed
check_groq_quota - First observed
extract_keyframe - First observed
get_video_info - First observed
list_channel_videos - First observed
transcribe_youtube
TDQS
Scored across 5 tools
Each tool targets a distinct operation: quota inspection, keyframe extraction, metadata fetch, channel enumeration, and transcription. There is no meaningful overlap between any pair, so an agent can select confidently.
All five tools follow a clean verb_noun pattern (check_groq_quota, extract_keyframe, get_video_info, list_channel_videos, transcribe_youtube). No camelCase or style mixing.
Five tools is a tight, focused set that matches the transcription-centric purpose well. Slightly lean, with check_groq_quota acting as an auxiliary helper rather than a core domain tool, but nothing feels out of place.
The surface covers the core lifecycle: discover videos (list_channel_videos), inspect them (get_video_info), transcribe (transcribe_youtube), and grab frames (extract_keyframe), plus quota management. Minor gaps like batch processing or caption export exist but agents can work around them by iterating.
Maintenance
Related MCP Connectors
YouTube transcripts, search, channel/playlist listings and upload tracking for AI agents.
YouTube for AI agents: transcripts, comments, video stats, channel monitor, Shorts captions.
YouTube transcripts, search, channels, playlists and bulk transcript jobs for AI agents. 14 tools.
Transcripts, summaries, chapters and timestamped answers for video links, for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to extract YouTube video metadata and generate high-quality multilingual transcriptions with voice activity detection, supporting 99 languages with translation capabilities and intelligent caching.56MIT
- AlicenseBqualityCmaintenanceEnables extraction of transcripts, keyword-based video search with metadata retrieval, and channel information discovery from YouTube videos through natural language interaction.34MIT
- AlicenseAqualityCmaintenanceProvides production-grade tools for YouTube channel resolution, video metadata extraction, transcripts, and playlist management. It features a quota-aware, AI-friendly design that supports structured searching and listing of public YouTube data.72MIT
- AlicenseCqualityBmaintenanceEnables AI agents to search, analyze, and extract insights from YouTube videos including transcripts, visual frames, and benchmarks without requiring API keys. Supports semantic search across playlists, sentiment analysis, and visual content indexing with automatic fallback chains for reliable access.41207 npm34MIT