Skip to main content
Glama

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: MCP Video Extraction Plus

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:mcp

Prerequisites

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-whisper

MCP 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-mcp

Tools

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

url

str

required

Video URL

model

str

large-v3-turbo

Whisper model

language

str

zh

Language code

cookies_browser

str?

null

Browser for cookies

skip_subtitles

bool

false

Skip to Whisper directly

segment_minutes

int

30

Segment length for long video splitting. Increase for 1h+ videos

async_mode

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

HF_ENDPOINT

(unset)

Set to https://hf-mirror.com for China network optimization

HF_HUB_DISABLE_XET

1

Disable Xet storage (avoids download errors)

TRANSCRIPT_OUTPUT_DIR

~/.video-transcript-mcp/output

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

Weibo

Xiaohongshu

Mini-program guidance

WeChat Video

Mini-program guidance

Local files

N/A

mp3, mp4, wav, m4a, flac

Podcast URLs

Direct audio download

License

MIT

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Transcripts from YouTube, TikTok, Instagram and podcasts (Spotify, Apple, RSS), as clean JSON.

  • Transform video, audio and images, and generate media from prompts. FFmpeg, captions, models.

  • YouTube transcripts, subtitles, and video metadata as structured JSON via an Apify Actor.

View all MCP Connectors

Latest Blog Posts

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/shawnwei512/video-transcript-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server