Video Transcriber MCP Server
The Video Transcriber MCP Server transcribes audio from online videos (1000+ platforms) or local files using Whisper-based speech recognition, and provides tools to manage the resulting transcripts.
Transcription
Online videos: Provide a URL from YouTube, Vimeo, TikTok, Twitter/X, Facebook, Instagram, Twitch, educational sites (Coursera, Udemy, Khan Academy), and 1000+ other platforms.
Local video files: Point to a local file (mp4, avi, mov, mkv, etc.) to transcribe without a URL.
Configurable models: Choose from
tiny,base,small,medium, orlargeWhisper models to balance speed vs. accuracy.Multi-language support: Specify a language code (e.g.
en,es,fr) or useautofor automatic detection across 90+ languages.Multiple output formats: Transcripts are saved as
.txt,.json(with metadata), and.md(Markdown).
Transcript Management
List transcripts: View all previously generated transcripts, sorted by modification time, with an optional limit.
Retrieve latest transcript: Get the most recently created or modified transcript.
Delete transcripts: Remove specific transcripts by video ID, clean up old ones by age, or delete all transcripts.
Utilities
Check dependencies: Verify that yt-dlp, Whisper (whisper.cpp), ffmpeg, and required models are installed.
List supported platforms: Browse all 1000+ video platforms supported by yt-dlp.
Advanced Features
Automatic retries with exponential backoff for network failures.
Cookie-based authentication for age-restricted or members-only videos.
Option to offload transcription to a remote GPU service.
Enables downloading and transcribing news videos from CNN using yt-dlp and OpenAI Whisper, with support for multiple output formats and transcription models.
Enables downloading and transcribing educational videos from Coursera using yt-dlp and OpenAI Whisper, with support for multiple output formats and transcription models.
Enables downloading and transcribing videos from Dailymotion using yt-dlp and OpenAI Whisper, with support for multiple output formats and language detection.
Enables downloading and transcribing educational videos from edX using yt-dlp and OpenAI Whisper, with support for multiple output formats and language detection.
Enables downloading and transcribing videos from Facebook using yt-dlp and OpenAI Whisper, with support for multiple output formats and language detection.
Enables downloading and transcribing videos from Instagram using yt-dlp and OpenAI Whisper, with support for multiple output formats and transcription models.
Enables downloading and transcribing educational videos from Khan Academy using yt-dlp and OpenAI Whisper, with support for multiple output formats and configurable transcription settings.
Enables downloading and transcribing news videos from NBC using yt-dlp and OpenAI Whisper, with support for multiple output formats and language options.
Enables downloading and transcribing videos from Reddit using yt-dlp and OpenAI Whisper, with support for multiple output formats and configurable transcription settings.
Enables downloading and transcribing videos from TikTok using yt-dlp and OpenAI Whisper, with support for multiple output formats and configurable transcription settings.
Enables downloading and transcribing videos from Twitch using yt-dlp and OpenAI Whisper, with support for multiple output formats and language options.
Enables downloading and transcribing educational videos from Udemy using yt-dlp and OpenAI Whisper, with support for multiple output formats and language options.
Enables downloading and transcribing videos from Vimeo using yt-dlp and OpenAI Whisper, with support for multiple output formats and language options.
Enables downloading and transcribing videos from YouTube using yt-dlp and OpenAI Whisper, with support for multiple output formats (TXT, JSON, Markdown) and configurable transcription models.
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., "@Video Transcriber MCP Servertranscribe this YouTube tutorial video in Spanish"
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 Transcriber MCP Server
A Model Context Protocol (MCP) server that transcribes videos from 1000+ platforms using whisper.cpp โ 4-10x faster than Python Whisper. Built with TypeScript for type safety and available via npx for easy installation.
๐ฆ Prefer a standalone binary? Check out the Rust version, which embeds whisper.cpp directly (no external CLI needed) and adds an optional HTTP/REST API. Available on crates.io with
cargo install video-transcriber-mcp.
โจ What's New
v2.0.0
โก whisper.cpp engine: switched from Python
openai-whisperto whisper.cpp (via thewhisper-clibinary) for 4-10x faster transcription with lower memory usage. โ ๏ธ Breaking: installwhisper-cppand download models (see Prerequisites).๐ฐ๏ธ Remote whisper worker: offload transcription to a GPU service with
REMOTE_WHISPER_URL.๐ช yt-dlp cookies: authenticate for age-restricted / members-only videos and bypass YouTube's bot check via
YT_DLP_COOKIESorYT_DLP_COOKIES_FROM_BROWSER.๐งน Transcript management tools:
get_latest_transcript,delete_transcript,cleanup_old_transcripts,delete_all_transcripts.๐ Smarter listing:
list_transcriptsnow sorts newest-first and supports alimit.
Earlier
๐ Multi-Platform Support: 1000+ video platforms (YouTube, Vimeo, TikTok, Twitter/X, Facebook, Instagram, Twitch, educational sites, and more) via yt-dlp
๐ป Cross-Platform: Works on macOS, Linux, and Windows
๐๏ธ Configurable Whisper Models: Choose from tiny, base, small, medium, or large models
๐ Language Support: Transcribe in 90+ languages or use auto-detection
๐ Automatic Retries: Network failures are handled automatically with exponential backoff
๐ฏ Platform Detection: Automatically detects the video platform
Related MCP server: Video to Text MCP Server
โ ๏ธ Legal Notice
This tool is intended for educational, accessibility, and research purposes only.
Before using this tool, please understand:
Most platforms' Terms of Service generally prohibit downloading content
You are responsible for ensuring your use complies with applicable laws
This tool should primarily be used for:
โ Your own content
โ Creating accessibility features (captions for deaf/hard of hearing)
โ Educational and research purposes (where permitted)
โ Content you have explicit permission to download
Please read LEGAL.md for detailed legal information before using this tool.
We do not encourage or endorse violation of any platform's Terms of Service or copyright infringement. Use responsibly and ethically.
Features
๐ฅ Download audio from 1000+ video platforms (powered by yt-dlp)
๐ Transcribe local video files (mp4, avi, mov, mkv, and more)
โก Transcribe using whisper.cpp locally (no API key needed) โ 4-10x faster than Python Whisper
๐ฐ๏ธ Optional remote whisper worker for GPU offload (
REMOTE_WHISPER_URL)๐ช yt-dlp cookie support for age-restricted / bot-checked videos
๐๏ธ Configurable Whisper models (tiny, base, small, medium, large)
๐ Support for 90+ languages with auto-detection
๐ Generate transcripts in multiple formats (TXT, JSON, Markdown)
๐ List, read, and manage previous transcripts (list/latest/delete/cleanup)
๐ Integrate seamlessly with Claude Code or any MCP client
๐ Full type safety with TypeScript
๐ Automatic dependency checking
๐ Automatic retry logic for network failures
๐ฏ Platform detection (shows which platform you're transcribing from)
Supported Platforms
Thanks to yt-dlp, this tool supports 1000+ video platforms including:
Social Media: YouTube, TikTok, Twitter/X, Facebook, Instagram, Reddit, LinkedIn
Video Hosting: Vimeo, Dailymotion, Twitch
Educational: Coursera, Udemy, Khan Academy, LinkedIn Learning, edX
News: BBC, CNN, NBC, PBS
Conference/Tech: YouTube (tech talks), Vimeo (conferences)
And many, many more!
Run the list_supported_sites tool to see the complete list of 1000+ supported platforms.
Prerequisites
You need these tools installed: yt-dlp (video downloader), whisper.cpp (the whisper-cli binary), and ffmpeg (audio processing), plus at least one whisper.cpp model (see Whisper Models). Deno is optional but recommended for rock-solid YouTube downloads โ see the note below.
๐ก YouTube reliability โ Deno (recommended, not required). This tool passes yt-dlp the
androidextractor client, which serves most YouTube videos without a JavaScript runtime. For the occasional video the android client can't serve, yt-dlp needs a JS runtime to solve YouTube's signature / "n" challenge โ otherwise that specific video fails with errors that look like bot-detection (No supported JavaScript runtime could be found,Signature solving failed, HTTP 403). Installing Deno โฅ 2.3.0 (yt-dlp auto-detects it) makes YouTube downloads robust across all videos. If you already have Deno, make sure it's โฅ 2.3.0 (deno --version, thendeno upgrade) โ an older one is detected but can't solve the challenge. Non-YouTube sites don't need it. Also keep yt-dlp current (yt-dlp -U) โ an outdated yt-dlp is the more common cause of YouTube failures.
If you set
REMOTE_WHISPER_URLto offload transcription to a remote worker, you can skip installingwhisper-cppand downloading models locally.
macOS
brew install yt-dlp # Video downloader (supports 1000+ sites)
brew install whisper-cpp # whisper.cpp transcription (installs `whisper-cli`)
brew install ffmpeg # Audio processing
brew install deno # JS runtime โ optional, recommended for YouTube reliabilityLinux
# Ubuntu/Debian
sudo apt update
sudo apt install ffmpeg
pip install yt-dlp
curl -fsSL https://deno.land/install.sh | sh # JS runtime โ optional, recommended for YouTube reliability
# whisper.cpp: build from source, then put `whisper-cli` on your PATH
git clone https://github.com/ggerganov/whisper.cpp && cd whisper.cpp && make
# copy build/bin/whisper-cli to /usr/local/bin, or set WHISPER_CPP_BINARY to its pathWindows
# Install Python from python.org first
pip install yt-dlp
# Install ffmpeg (required) + deno (optional, recommended for YouTube) via Chocolatey
choco install ffmpeg
choco install deno # JS runtime โ optional, recommended for YouTube reliability
# whisper.cpp: download a prebuilt release from
# https://github.com/ggerganov/whisper.cpp/releases and put whisper-cli.exe on PATH,
# or set WHISPER_CPP_BINARY to its full path.Deno not on PATH? If you installed Deno but yt-dlp still reports "No supported JavaScript runtime" (common when the installer drops it in
~/.deno/bin), symlink it somewhere already on PATH โ e.g.ln -sf ~/.deno/bin/deno ~/.local/bin/denoโ or add~/.deno/binto your PATH.
Verify installations (all platforms)
yt-dlp --version
whisper-cli --help
ffmpeg -version
deno --versionWhisper Models
whisper.cpp uses ggml model files stored in ~/.cache/video-transcriber-mcp/models/. Download them with the bundled script:
# Download a single model (recommended: start with base)
bash scripts/download-models.sh base
# Or download everything
bash scripts/download-models.sh allWindows:
download-models.shis a Bash script โ run it from Git Bash or WSL. Or download the model manually: grabggml-base.bin(or another size) from https://huggingface.co/ggerganov/whisper.cpp/tree/main and drop it into%USERPROFILE%\.cache\video-transcriber-mcp\models\.
Model | Size | Notes |
tiny | ~75 MB | fastest, lowest accuracy |
base | ~142 MB | recommended default |
small | ~466 MB | good balance |
medium | ~1.5 GB | high accuracy |
large | ~2.9 GB | best accuracy, slowest |
Run the check_dependencies tool at any time to see which models are installed.
Quick Start
For End Users (Using npx)
Add to your Claude Code config (~/.claude/settings.json):
{
"mcpServers": {
"video-transcriber": {
"command": "npx",
"args": ["-y", "video-transcriber-mcp"]
}
}
}Or use directly from GitHub:
{
"mcpServers": {
"video-transcriber": {
"command": "npx",
"args": [
"-y",
"github:nhatvu148/video-transcriber-mcp"
]
}
}
}That's it! No installation needed. npx will automatically download and run the package.
For Local Development
# Clone the repository
git clone https://github.com/nhatvu148/video-transcriber-mcp.git
cd video-transcriber-mcp
# Install dependencies
npm install
# or
bun install
# Build the project
npm run build
# Use in Claude Code with local path
{
"mcpServers": {
"video-transcriber": {
"command": "npx",
"args": ["-y", "/path/to/video-transcriber-mcp"]
}
}
}Usage
From Claude Code
Once configured, you can use these tools in Claude Code:
Transcribe a video from any platform
Please transcribe this YouTube video: https://www.youtube.com/watch?v=VIDEO_IDTranscribe this TikTok video: https://www.tiktok.com/@user/video/123456789Get the transcript from this Vimeo video with high accuracy: https://vimeo.com/123456789
(use model: large)Transcribe this Spanish tutorial video: https://youtube.com/watch?v=VIDEO_ID
(language: es)Transcribe a local video file
Transcribe this local video file: /Users/myname/Videos/meeting.mp4Transcribe ~/Downloads/lecture.mov with high accuracy
(use model: medium)Claude will use the transcribe_video tool automatically with optional parameters for model and language.
List all supported platforms
What platforms can you transcribe videos from?List available transcripts
List all my video transcriptsCheck dependencies
Check if my video transcriber dependencies are installedRead a transcript
Show me the transcript for [video name]Programmatic Usage
If you install the package:
npm install video-transcriber-mcpYou can import and use it programmatically:
import { transcribeVideo, checkDependencies, WhisperModel } from 'video-transcriber-mcp';
// Check dependencies โ returns a human-readable status string
console.log(checkDependencies());
// Transcribe a video from URL with custom options
const result = await transcribeVideo({
url: 'https://www.youtube.com/watch?v=VIDEO_ID',
outputDir: '/path/to/output',
model: 'medium', // tiny, base, small, medium, large
language: 'en', // or 'auto' for auto-detection
onProgress: (progress) => console.log(progress)
});
// Or transcribe a local video file
const localResult = await transcribeVideo({
url: '/path/to/video.mp4', // Local file path instead of URL
outputDir: '/path/to/output',
model: 'base',
language: 'auto',
onProgress: (progress) => console.log(progress)
});
console.log('Title:', result.metadata.title);
console.log('Platform:', result.metadata.platform);
console.log('Words:', result.wordCount);
console.log('Model:', result.modelUsed);
console.log('Files:', result.files);Output
Transcripts are saved to ~/Downloads/video-transcripts/ by default.
For each video, three files are generated:
.txt- Plain text transcript.json- JSON with video metadata, the transcript, and the model used.md- Markdown with video metadata and formatted transcript
Example
~/Downloads/video-transcripts/
โโโ 7JBuA1GHAjQ-From-AI-skeptic-to-UNFAIR-advantage.txt
โโโ 7JBuA1GHAjQ-From-AI-skeptic-to-UNFAIR-advantage.json
โโโ 7JBuA1GHAjQ-From-AI-skeptic-to-UNFAIR-advantage.mdMCP Tools
transcribe_video
Transcribe videos from 1000+ platforms or local video files to text.
Parameters:
url(required): Video URL from any supported platform OR path to a local video file (mp4, avi, mov, mkv, etc.)output_dir(optional): Output directory pathmodel(optional): Whisper model - "tiny", "base" (default), "small", "medium", "large"language(optional): Language code (ISO 639-1: "en", "es", "fr", etc.) or "auto" (default)
Model Comparison:
Model | Speed | Accuracy | Use Case |
tiny | โกโกโกโกโก | โญโญ | Quick drafts, testing |
base | โกโกโกโก | โญโญโญ | General use (default) |
small | โกโกโก | โญโญโญโญ | Better accuracy |
medium | โกโก | โญโญโญโญโญ | High accuracy |
large | โก | โญโญโญโญโญโญ | Best accuracy, slow |
list_transcripts
List all available transcripts with metadata, sorted by modification time (newest first).
Parameters:
output_dir(optional): Directory to listlimit(optional): Return only the N most recent transcripts
get_latest_transcript
Get the path and details of the most recently created/modified transcript. Useful to avoid accidentally reading an old transcript.
Parameters:
output_dir(optional): Directory to search
delete_transcript
Delete a specific transcript by video ID (removes all associated .txt, .json, .md files).
Parameters:
video_id(required): The video ID to delete (e.g.dQw4w9WgXcQ)output_dir(optional): Directory to delete from
cleanup_old_transcripts
Delete transcripts older than a given number of days.
Parameters:
days(required): Delete files older than this many daysoutput_dir(optional): Directory to clean
delete_all_transcripts
Delete ALL transcripts in the output directory. Cannot be undone.
Parameters:
confirm(required): Must betrueto actually deleteoutput_dir(optional): Directory to clear
check_dependencies
Verify that all required dependencies (yt-dlp, ffmpeg, whisper.cpp) and models are installed.
list_supported_sites
List all 1000+ supported video platforms.
Environment Variables
All are optional. See .env.example for details. When using the MCP server, set these in your client's env block.
Variable | Description |
| Path to a Netscape-format cookies file ( |
| Browser to read cookies from ( |
| Offload transcription to a remote HTTP worker instead of running whisper.cpp locally. |
| Override the whisper.cpp CLI name/path (default |
Example Claude Code config with cookies:
{
"mcpServers": {
"video-transcriber": {
"command": "npx",
"args": ["-y", "video-transcriber-mcp"],
"env": {
"YT_DLP_COOKIES_FROM_BROWSER": "chrome"
}
}
}
}Configuration Examples
Claude Code (Recommended)
{
"mcpServers": {
"video-transcriber": {
"command": "npx",
"args": ["-y", "video-transcriber-mcp"]
}
}
}From GitHub (Latest)
{
"mcpServers": {
"video-transcriber": {
"command": "npx",
"args": ["-y", "github:nhatvu148/video-transcriber-mcp"]
}
}
}Local Development
{
"mcpServers": {
"video-transcriber": {
"command": "npx",
"args": ["-y", "/absolute/path/to/video-transcriber-mcp"]
}
}
}Development
Setup
# Install dependencies
npm install
# Build the project
npm run build
# Type check
npm run check
# Development mode (requires Bun)
bun run dev
# Clean build artifacts
npm run cleanProject Structure
video-transcriber-mcp/
โโโ src/
โ โโโ index.ts # MCP server implementation (8 tools)
โ โโโ transcriber.ts # Core transcription logic (whisper.cpp)
โโโ scripts/
โ โโโ download-models.sh # Download whisper.cpp ggml models
โโโ dist/ # Built JavaScript (generated)
โโโ package.json # Package configuration
โโโ tsconfig.json # TypeScript configuration
โโโ .env.example # Documented environment variables
โโโ LICENSE # MIT License
โโโ README.md # This fileScripts
Command | Description |
| Compile TypeScript to JavaScript |
| Development mode with hot reload (Bun) |
| TypeScript type checking |
| Remove dist/ directory |
| Pre-publish build (automatic) |
Publishing
# Build the project
npm run build
# Test locally first
npx . --help
# Publish to npm (bump version first)
npm version patch # or minor, major
npm publish
# Or publish from GitHub
# Push to GitHub and users can use:
# npx github:username/video-transcriber-mcpTroubleshooting
Dependencies not installed
See the Prerequisites section above for platform-specific installation instructions.
npx can't find the package
Make sure the package is:
Published to npm, OR
Available on GitHub with proper package.json
TypeScript errors
npm run checkPermission denied
The build process automatically makes dist/index.js executable via the fix-shebang script.
"Unsupported URL" error
The platform might not be supported by yt-dlp. Run list_supported_sites to see all supported platforms.
"Whisper model not found"
Download the model you're requesting: bash scripts/download-models.sh base (or all). Models live in ~/.cache/video-transcriber-mcp/models/. Run check_dependencies to see what's installed.
"whisper.cpp CLI ('whisper-cli') not found"
Install whisper.cpp (brew install whisper-cpp on macOS) or set WHISPER_CPP_BINARY to the full path of your whisper-cli (or legacy main) binary.
YouTube fails: "No supported JavaScript runtime" / "Signature solving failed" / HTTP 403
yt-dlp needs a JavaScript runtime to download from YouTube. Install Deno โฅ 2.3.0 (brew install deno, choco install deno, or curl -fsSL https://deno.land/install.sh | sh) โ yt-dlp auto-detects it. Two common gotchas:
Deno not found even though it's installed โ it landed in
~/.deno/bin, which isn't on PATH. Symlink it:ln -sf ~/.deno/bin/deno ~/.local/bin/deno.n challenge solving failedpersists with Deno installed โ your Deno is older than 2.3.0. Rundeno --version, thendeno upgrade. (This is the sneaky one โ an old Deno is detected but silently can't solve the challenge.)
Verify with deno --version. See Prerequisites.
These errors often masquerade as bot-detection, but the fix is a JS runtime, not cookies. Also keep yt-dlp current (
yt-dlp -Uorbrew upgrade yt-dlp) โ an outdated yt-dlp makes YouTube failures worse.
YouTube "Sign in to confirm you're not a bot"
First confirm you have Deno installed (see above) and yt-dlp is up to date โ that resolves most cases. For genuinely gated content (age-restricted / members-only), set YT_DLP_COOKIES (path to a cookies file) or YT_DLP_COOKIES_FROM_BROWSER (e.g. chrome). See Environment Variables.
Performance
whisper.cpp is roughly 4-10x faster than Python openai-whisper on the same hardware, using less memory. Actual processing time depends on your CPU (P-core count on Apple Silicon), the selected model, and the video length.
Tip: start with the base model and move up to medium/large only when you need more accuracy.
Advanced Configuration
Custom Whisper Model
Specify in the tool call parameters:
{
"url": "https://youtube.com/watch?v=...",
"model": "large"
}Custom Language
Specify the language code:
{
"url": "https://youtube.com/watch?v=...",
"language": "es"
}Custom Output Directory
Specify in the tool call:
{
"url": "https://youtube.com/watch?v=...",
"output_dir": "/custom/path"
}Contributing
Contributions welcome! Please:
Fork the repository
Create a feature branch
Make your changes
Add tests if applicable
Submit a pull request
License
MIT License - see LICENSE file for details
TypeScript vs Rust Version
Project scope: The Rust version is the source of truth. This TypeScript package is intentionally kept small and stable โ a lean local stdio MCP server for the npm/
npxaudience. Advanced/SaaS features (HTTP transport, auth, credits/billing, LLM summaries) live only in the Rust version and are not ported here. New capabilities land in Rust first; this package only tracks the shared MCP tool contract.
Both versions use whisper.cpp for transcription and expose the same MCP tools.
Pick the TypeScript version (this one) for:
โ Quick setup with npx (no compilation)
โ Node.js ecosystem familiarity
โน๏ธ Calls the
whisper-clibinary (installwhisper-cppseparately)
Pick the Rust version for:
๐ฆ Standalone binary โ whisper.cpp is embedded, no external CLI to install
๐พ Lower memory usage and native startup
๐ HTTP/REST API transport, auth, credits, and other SaaS features
Both support the same MCP protocol and work identically with Claude Code!
Links
๐ฆ Rust Version โ For better performance
Acknowledgments
whisper.cpp for fast local transcription
OpenAI Whisper for the underlying models
yt-dlp for multi-platform video downloading (1000+ sites)
Model Context Protocol SDK
Claude by Anthropic
Made with โค๏ธ for the MCP community
Available Tools
8 toolscheck_dependenciesA
Check if all required dependencies (yt-dlp, ffmpeg, whisper models) are installed
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral aspects. It only says 'check if all required dependencies are installed' but does not disclose the return format (e.g., boolean, list of missing modules) or potential side effects. This lack of detail could hinder an agent's understanding of how to interpret the result.
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, 12-word sentence that immediately conveys the tool's purpose. No redundant or extraneous information is present.
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?
While the tool is simple with no parameters or output schema, the description omits any indication of the output format or how the agent should interpret the results. Given the absence of annotations, this is a moderate gap; however, the tool's simplicity partially mitigates the need for extensive detail.
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 zero parameters, and the schema coverage is 100% (none needed). The description does not need to elaborate on parameters. With zero parameters, the baseline score is 4.
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 'check' and identifies the resource as 'required dependencies', listing yt-dlp, ffmpeg, and whisper models. It is unambiguous and distinguishes itself from sibling tools that perform transcription or cleanup operations.
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 this tool should be used before transcription tasks to verify dependency availability. However, it does not provide explicit guidance on when to avoid using it or mention alternatives, but given its straightforward nature, the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cleanup_old_transcriptsC
Delete transcripts older than a specified number of days. Helps manage disk space.
| Name | Required | Description | Default |
|---|---|---|---|
| days | Yes | Delete transcripts older than this many days (e.g., 30 for month-old transcripts) | |
| output_dir | No | Optional output directory path. Defaults to /root/Downloads/video-transcripts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It only states that transcripts older than a given number of days are deleted, but does not mention permanence, undoability, effects on directories, or permission requirements. This is minimal for a delete operation.
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, consisting of two short sentences that convey the core purpose and a hint of benefit. 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 deletion tool with no output schema and no annotations, the description lacks important details such as whether deletions are permanent, what the default behavior is for output_dir, and how it interacts with sibling tools. While schema covers parameters, overall context for safe usage is insufficient.
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% description coverage, so the description adds no new parameter semantics beyond what the schema provides. The description's mention of 'days' does not enhance understanding of the parameter's format or behavior beyond the schema's example.
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 deletes transcripts older than a specified number of days, with a clear verb and resource. It implicitly distinguishes from sibling tools like delete_all_transcripts and delete_transcript by focusing on age-based deletion, but does not explicitly differentiate.
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 explicit guidance on when to use this tool vs alternatives like delete_all_transcripts or delete_transcript. The phrase 'helps manage disk space' provides some context, but without exclusion criteria or usage conditions, the agent has no decision framework.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_all_transcriptsA
Delete ALL transcripts in the output directory. Use with caution - this cannot be undone!
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | Yes | Must be set to true to confirm deletion of all transcripts | |
| output_dir | No | Optional output directory path. Defaults to /root/Downloads/video-transcripts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully bears the burden of disclosure. It clearly indicates destructive behavior ('Delete ALL') and irreversibility ('cannot be undone'). While it does not detail permissions or other side effects, the core behavioral trait is well communicated.
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 sentences: the first states the action, the second adds a caution. No redundant words, front-loaded with key information, and every sentence serves a 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 destructive tool with two parameters and no output schema, the description covers all essential aspects: the action, confirmation requirement, and optional directory. It could elaborate on what files are affected (e.g., 'transcript files'), but the context is generally complete.
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%, so baseline is 3. The description restates the schema's description for both parameters without adding new semantically meaningful information beyond what the schema already provides.
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 uses the verb 'Delete' with the specific resource 'ALL transcripts in the output directory', clearly distinguishing it from sibling tools like delete_transcript (single transcript) and cleanup_old_transcripts (older transcripts).
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 warns 'Use with caution' and states irreversibility, implying when to use (only when certain of deletion). However, it does not explicitly state when not to use or provide alternatives, such as using delete_transcript for selective removal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_transcriptA
Delete a specific transcript by video ID. This removes all associated files (txt, json, md).
| Name | Required | Description | Default |
|---|---|---|---|
| video_id | Yes | The video ID of the transcript to delete (e.g., 'dQw4w9WgXcQ') | |
| output_dir | No | Optional output directory path. Defaults to /root/Downloads/video-transcripts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond the schema by revealing that deletion removes associated files (txt, json, md). No annotations exist, so description carries full burden. It doesn't discuss reversibility or permissions, but the behavior is clear.
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 sentences, front-loaded with action and scope. No wasted words; every sentence provides necessary information.
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 deletion tool with two parameters and no output schema, the description is largely complete. It covers the main effect (file removal) but omits mention of return values or error handling. Still adequate.
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%, so the description does not need to elaborate on parameters. It reinforces the video_id purpose indirectly. The description adds no extra param details, but that is acceptable given full schema coverage.
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 action (delete), the resource (specific transcript by video ID), and the scope (removes associated files). It distinguishes from siblings like delete_all_transcripts and cleanup_old_transcripts.
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 when to use (delete a specific transcript) but does not explicitly state when not to use or mention alternatives like delete_all_transcripts. Context from sibling names helps, but lacks direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_latest_transcriptA
Get the path and details of the most recently created/modified transcript. Useful to avoid accidentally reading old transcripts.
| Name | Required | Description | Default |
|---|---|---|---|
| output_dir | No | Optional output directory path. Defaults to /root/Downloads/video-transcripts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions returning 'path and details' but does not specify read-only behavior, error handling for missing transcripts, or that it is non-destructive. The hint 'avoid old transcripts' is helpful but insufficient.
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 sentences, no redundancy, front-loaded with the core action. Every word 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?
For a simple tool with one optional parameter and no output schema, the description provides adequate context. However, it lacks details on what 'details' are returned, and no output schema exists to compensate.
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% for the single optional parameter 'output_dir', so the schema already explains it. The description adds no additional meaning beyond what the schema provides, meeting the baseline.
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 uses a specific verb 'Get' and resource 'transcript', and clearly indicates 'most recently created/modified', distinguishing it from siblings like 'list_transcripts' (all transcripts) and 'transcribe_video' (creation).
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 phrase 'Useful to avoid accidentally reading old transcripts' implies when to use it, but it does not explicitly state when not to use it or provide alternatives like list_transcripts for selecting a specific version.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_supported_sitesA
List all video platforms supported by yt-dlp (1000+ sites including YouTube, Vimeo, TikTok, Twitter, Facebook, Instagram, educational platforms, and more)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the output includes '1000+ sites' and examples, but does not describe how the list is formatted, if it's paginated, or any performance characteristics. This is a significant gap for a tool with zero annotation coverage.
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, efficient sentence that front-loads the core purpose ('List all video platforms supported by yt-dlp') and adds useful context without waste. Every element (e.g., '1000+ sites', examples) earns its place by clarifying scope.
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 (0 parameters, no output schema), the description is adequate but has gaps. It explains what the tool does but lacks details on output format or behavioral traits, which are important for an AI agent to use it correctly. This meets minimum viability with clear room for improvement.
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 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately adds no parameter details, maintaining focus on the tool's purpose. Baseline is 4 for zero parameters, as it avoids unnecessary repetition.
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 specific action ('List all video platforms') and resource ('supported by yt-dlp'), with explicit examples that distinguish it from sibling tools like 'check_dependencies' or 'transcribe_video'. It goes beyond a tautology by specifying scope and providing concrete examples.
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 by mentioning 'yt-dlp' and listing examples, suggesting this tool is for discovering supported platforms before using other video-related tools. However, it lacks explicit guidance on when to use this versus alternatives or any exclusions, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_transcriptsA
List all available transcripts in the output directory, sorted by modification time (newest first)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Optional limit on number of transcripts to return (newest first). If not specified, returns all transcripts. | |
| output_dir | No | Optional output directory path. Defaults to /root/Downloads/video-transcripts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the sorting order and that it lists files from the output directory. It does not mention edge cases (e.g., missing directory) or confirm it is a read-only operation, but the name and action are self-evident.
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, well-structured sentence that front-loads the core action and includes key details (sorting order). No redundant or unnecessary information.
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?
There is no output schema, and the description does not specify what the return value contains (e.g., filenames, full paths, or metadata). For a list operation, the agent would benefit from knowing the format of the results, especially when no output schema is provided.
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 100% โ both parameters have descriptions that adequately explain their purpose and defaults. The description does not add additional semantic value beyond what the schema provides (e.g., no further detail on how 'limit' truncates the list).
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 action ('list'), the resource ('all available transcripts in the output directory'), and the sorting behavior ('sorted by modification time, newest first'). This distinguishes it from sibling tools like 'get_latest_transcript' (returns one) and delete tools.
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 the tool is for browsing all transcripts in order, but does not explicitly state when not to use it or mention alternatives like 'get_latest_transcript' for a single result. However, the context is clear enough for differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transcribe_videoA
Transcribe videos from 1000+ platforms (YouTube, Vimeo, TikTok, Twitter, etc.) or local video files using whisper.cpp (4-10x faster than Python whisper!). Downloads/extracts audio and generates transcript in TXT, JSON, and Markdown formats.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Video URL from any supported platform OR absolute/relative path to a local video file (mp4, avi, mov, mkv, etc.) | |
| model | No | Whisper model to use. Larger models are more accurate but slower. Default: 'base' | |
| language | No | Language code (ISO 639-1: en, es, fr, de, etc.) or 'auto' for automatic detection. Default: 'auto' | |
| output_dir | No | Optional output directory path. Defaults to /root/Downloads/video-transcripts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that it downloads/extracts audio and uses whisper.cpp, but no annotations provided. Missing information on file size implications, time costs, or whether it overwrites existing files. Moderate transparency.
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?
Very concise two sentences, front-loaded with core function. Every sentence provides essential information without redundancy.
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?
Covers main functionality but lacks details on output structure, error handling, and prerequisites. Given no output schema and no annotations, description is moderately complete.
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 has 100% coverage; description adds speed and format details but does not explain parameter-specific behavior beyond schema. Baseline is adequate.
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?
Clearly states it transcribes videos from a wide range of platforms and local files. Uses specific verb 'Transcribe' and describes output formats. Distinguishes from sibling tools like delete/list.
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 vs alternatives. Does not mention when not to use or provide context for selection among siblings. The description mentions speed advantage but lacks clear usage directives.
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. Dates show when Glama detected each change.
6 tool updates
v2.0.0- Added
cleanup_old_transcripts - Added
delete_all_transcripts - Added
delete_transcript - Added
get_latest_transcript - Changed
list_transcripts2 fields changed- added
Input schema / properties / limitAdded value: +{ + "description": "Optional limit on number of transcripts to return (newest first). If not specified, returns all transcripts.", + "type": "number" +} - changed
Input schema / properties / output_dir / descriptionPrevious value: -"Optional directory path to list. Defaults to /root/Downloads/video-transcripts"New value: +"Optional output directory path. Defaults to /root/Downloads/video-transcripts"
- Changed
transcribe_video1 field changed- changed
Input schema / properties / url / descriptionPrevious value: -"Video URL from any supported platform (YouTube, Vimeo, TikTok, Twitter, Facebook, Instagram, Twitch, conference sites, and 1000+ more) OR absolute/relative path to a local video file (mp4, avi, mov, mkv, etc.)"New value: +"Video URL from any supported platform OR absolute/relative path to a local video file (mp4, avi, mov, mkv, etc.)"
4 tool updates
v1.0.0- First observed
check_dependencies - First observed
list_supported_sites - First observed
list_transcripts - First observed
transcribe_video
TDQS
Each tool has a clearly distinct purpose with no overlap: checking dependencies, listing supported sites, listing existing transcripts, and transcribing videos. The descriptions are specific and unambiguous, making it easy for an agent to select the correct tool for each task.
All tool names follow a consistent verb_noun pattern (e.g., check_dependencies, list_supported_sites, list_transcripts, transcribe_video). This uniformity enhances readability and predictability, making the tool set easy to navigate and understand.
With 4 tools, the server is well-scoped for its purpose of video transcription. Each tool serves a distinct and necessary function in the workflow, from setup to execution and management, without being overly sparse or bloated.
The tool set covers the core video transcription workflow effectively, including dependency checks, site support listing, transcript listing, and transcription itself. A minor gap is the lack of tools for managing or deleting transcripts, but agents can work around this using the list_transcripts tool and external operations.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Transcribe public videos & audio (YouTube, TikTok, IG) into accurate, timestamped text via API.
Get transcripts from YouTube, TikTok, X, Instagram and more - even when captions are off.
AI transcription from URLs or files. 119 languages, diarization, SRT/VTT/text export.
Any video URL to LLM-ready transcript. ASR built in, no captions needed. TikTok, X, TED and more.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA service that extracts and transcribes audio content from videos across 1000+ streaming websites including YouTube, Bilibili, TikTok, and Twitter, supporting multiple transcription providers like Deepgram, Gladia, Speechmatics, and AssemblyAI.29MIT
- AlicenseBqualityDmaintenanceEnables downloading videos from platforms like YouTube and converting them to text using OpenAI Whisper and ffmpeg. It supports multiple output formats including TXT, JSON, SRT, and VTT for transcriptions.214ISC
- AlicenseNot gradedqualityCmaintenanceTranscribes YouTube videos or audio files to Markdown, plain-text, and Word documents.MIT
- AlicenseAqualityAmaintenanceEnables transcription of videos and audio from 1000+ platforms (YouTube, Bilibili, TikTok, etc.) using subtitle extraction first, then local Whisper transcription, with support for long videos, async tasks, and Chinese ASR optimization.42MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/nhatvu148/video-transcriber-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server