Video Transcript MCP Server
Transcribes Bilibili videos using AI subtitles (ai-zh) when available, with Whisper fallback for offline transcription.
Transcribes Kuaishou videos via subtitle extraction and Whisper fallback.
Transcribes TikTok videos via subtitle extraction and Whisper fallback.
Provides mini-program guidance for transcribing WeChat Video (视频号) content, as direct transcription is not supported for this closed platform.
Provides mini-program guidance for transcribing Xiaohongshu content, as direct transcription is not supported for this closed platform.
Transcribes YouTube videos by extracting subtitles (zh-Hans, zh-CN, zh, en) with Whisper fallback for offline transcription.
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., "@Video Transcript MCP Server transcribe 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.
Video Transcript MCP Server
A Model Context Protocol server for video/audio transcription with multi-platform support.
Features
Three-tier transcription strategy: Subtitle extraction first (zero cost) → Whisper local transcription (offline free) → Mini-program guidance for closed platforms
1000+ platform support via yt-dlp: YouTube, Bilibili, Douyin, Kuaishou, TikTok, and more
Long video handling: Auto-split by 30-minute segments (configurable) with checkpoint resume
Chinese ASR optimization: Bilibili AI subtitles, HuggingFace mirror, SenseVoice/Paraformer ready
Sync & Async modes: Direct results for short videos, task polling for long videos
Structured output: Pydantic-validated results with timestamps, segments, and metadata
Related MCP server: Video Transcriber MCP Server
Quick Start
Install
pip install video-transcript-mcp
# With Whisper support
pip install 'video-transcript-mcp[whisper]'
# With dev tools (MCP Inspector, testing)
pip install 'video-transcript-mcp[dev]'Run
# Direct run
video-transcript-mcp
# Or with uvx (no install needed)
uvx video-transcript-mcp
# Debug with MCP Inspector
mcp dev video_transcript_mcp.server:mcpPrerequisites
The server relies on external tools for audio processing:
# Install yt-dlp (video download + subtitle extraction)
pip install yt-dlp
# Install FFmpeg (audio splitting + format conversion)
brew install ffmpeg # macOS
sudo apt install ffmpeg # Ubuntu/Debian
# Install faster-whisper (local transcription)
pip install faster-whisperMCP Client Configuration
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"video-transcript": {
"command": "uvx",
"args": ["video-transcript-mcp"]
}
}
}Cursor
Add to .cursor/mcp.json:
{
"mcpServers": {
"video-transcript": {
"command": "uvx",
"args": ["video-transcript-mcp"]
}
}
}Trae
Add to Trae MCP settings:
{
"mcpServers": {
"video-transcript": {
"command": "python3",
"args": ["-m", "video_transcript_mcp.server"]
}
}
}Claude Code
claude mcp add video-transcript -- uvx video-transcript-mcpTools
transcribe_url
Transcribe a video from URL using the three-tier strategy.
# Short video (sync mode - direct result)
transcribe_url(url="https://www.youtube.com/watch?v=xxxxx")
# Long video (async mode - returns task_id)
transcribe_url(
url="https://www.bilibili.com/video/BVxxxxx",
async_mode=True
)
# Then poll:
get_transcript_status(task_id="abc12345")Parameters:
Parameter | Type | Default | Description |
| str | required | Video URL |
| str |
| Whisper model |
| str |
| Language code |
| str? | null | Browser for cookies |
| bool | false | Skip to Whisper directly |
| int | 30 | Segment length for long video splitting. Increase for 1h+ videos |
| bool | false | Return task_id for polling |
transcribe_file
Transcribe a local audio/video file.
# Short file (sync mode)
transcribe_file(file_path="/path/to/audio.mp3")
# Long file (1h+) with larger segments
transcribe_file(
file_path="/path/to/lecture.mp4",
segment_minutes=60,
async_mode=True
)get_transcript_status
Poll the status of an async transcription task.
get_transcript_status(task_id="abc12345")
# Returns: {status: "completed", progress: 1.0, result: {...}}list_transcripts
List all completed transcripts.
list_transcripts()
# Returns: [{task_id, title, platform, method, duration, ...}]Three-Tier Transcription Strategy
URL Input
│
├─ Tier 1: Subtitle Extraction (zero cost, fastest)
│ ├─ YouTube: zh-Hans, zh-CN, zh, en
│ ├─ Bilibili: ai-zh (AI subtitles)
│ └─ Others: zh-CN, zh, en
│
├─ Tier 2: Whisper Transcription (offline, free)
│ ├─ Download audio via yt-dlp
│ ├─ Split by 30-min segments (configurable, long video)
│ ├─ Transcribe each segment with faster-whisper
│ ├─ Global timestamp concatenation
│ └─ Checkpoint resume support
│
└─ Tier 3: Mini-Program Guidance (closed platforms)
├─ Xiaohongshu (小红书)
└─ WeChat Video (视频号)Environment Variables
Variable | Default | Description |
| (unset) | Set to |
|
| Disable Xet storage (avoids download errors) |
|
| Output directory |
Supported Platforms
Platform | Subtitle Extraction | Whisper Fallback | Notes |
YouTube | ✅ | ✅ | Auto-subs + manual subs |
Bilibili | ✅ | ✅ | AI subtitle (ai-zh), requires cookies for subtitle access |
Douyin | ✅ | ✅ | |
Kuaishou | ✅ | ✅ | |
TikTok | ✅ | ✅ | |
✅ | ✅ | ||
Xiaohongshu | ❌ | ❌ | Mini-program guidance |
WeChat Video | ❌ | ❌ | Mini-program guidance |
Local files | N/A | ✅ | mp3, mp4, wav, m4a, flac |
Podcast URLs | ✅ | ✅ | Direct audio download |
Community
Join our AI Tool Monetization Circle (AI 工具变现实战圈) on Knowledge Planet (知识星球):
Weekly MCP tutorials and real-world case studies
Deep-dive source code analysis of this project
AI tool monetization strategies and playbooks
1-on-1 technical Q&A
Scan the QR code above or search "AI 工具变现实战圈" on Knowledge Planet to join.
License
MIT
Available Tools
4 toolsget_transcript_statusA
Check the status of an async transcription task.
Returns the task status, progress, and result (if completed). Poll this periodically until status is 'completed' or 'failed'.
Inputs: task_id (required).
list_transcriptsA
List all completed transcripts.
Returns a list of completed transcription tasks with metadata. Use get_transcript_status with a task_id to get full transcript text.
Inputs: no named parameters. Returns: result
transcribe_fileA
Transcribe a local audio/video file using Whisper.
Supports mp3, m4a, mp4, wav, flac, and other FFmpeg-compatible formats. For files over 30 minutes, use async_mode=true. Adjust segment_minutes for 1h+ files to reduce segment count.
Inputs: file_path (required), model, language, async_mode, +1 more.
transcribe_urlA
Transcribe a video from URL using three-tier strategy.
Tier 1: Extract platform subtitles (zero cost, fastest) Tier 2: Download audio + Whisper local transcription (offline, free) Tier 3: Return guidance for closed platforms (Xiaohongshu/WeChat)
For videos under 30 minutes, use sync mode (default) for direct results. For longer videos, set async_mode=true to get a task_id, then poll with get_transcript_status. Adjust segment_minutes for 1h+ videos.
Inputs: url (required), model, language, async_mode, +3 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: transcribe_file processes local media, transcribe_url handles remote videos, get_transcript_status polls async tasks, and list_transcripts shows completed transcripts. The descriptions explicitly differentiate these, leaving no ambiguity.
All four tools follow a consistent verb_noun pattern with snake_case (transcribe_file, transcribe_url, get_transcript_status, list_transcripts). The verbs clearly indicate the action and the nouns the resource, forming a predictable and coherent naming scheme.
Four tools is well-scoped for a video transcription server, covering the essential operations (transcribe local/remote, check status, list results) without unnecessary overlap or bloat. This is an appropriate size for the domain.
The tool set covers the full transcription workflow: synchronous and async transcription, status polling, and listing completed results. Minor gaps like cancellation or direct retrieval of a transcript by ID are missing, but these are not critical for the core use case.
Maintenance
Related MCP Connectors
Any video URL to LLM-ready transcript. ASR built in, no captions needed. TikTok, X, TED and more.
Fetch transcripts, subtitles, chapters, metadata and frames from YouTube and 10+ video platforms
Whisper speech to text for podcast, audio and video URLs, 90+ languages, timestamped output.
Transcribe and translate YouTube, TikTok, Instagram, X and 7 more social media platforms, or files.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables video text extraction using multiple speech recognition providers including local Whisper, JianYing/CapCut, and Bilibili Cut services. Supports video downloading, audio extraction, and automatic speech-to-text transcription with configurable providers.7MIT
- AlicenseAqualityCmaintenanceTranscribes videos from 1000+ platforms (YouTube, TikTok, Vimeo, etc.) and local video files using OpenAI's Whisper model, with support for 90+ languages and multiple output formats.844 npm8MIT
- AlicenseNot gradedqualityDmaintenanceEnables intelligent transcription of YouTube videos with automatic optimization for any video length, using local OpenAI Whisper processing and speaker diarization.-
- AlicenseNot gradedqualityCmaintenanceEnables link type detection, video downloading, metadata extraction, and transcript generation across 16+ platforms including YouTube, Bilibili, and WeChat Channels. Supports automatic subtitle extraction and optional Whisper speech-to-text for videos without captions.2MIT