VocalFuse is a Fuse Intelligence product.

MCP · TRANSCRIPTION · 2026

YouTube transcript MCP servers: the 2026 field, compared

YouTube is one of the most crowded MCP categories there is — 40+ servers across the directories all doing a variation of the same job: hand your agent a video's transcript. But they split into two very different architectures (stateless caption pullers vs persistent corpus builders), and nearly all of them share one silent limitation: they read caption tracks, they do not transcribe audio. This guide maps the field, the install commands, and the one upgrade that removes the ceiling.

Why your agent wants a transcript MCP, not a pasted link

Paste a YouTube link into ChatGPT or Claude and nothing happens — the chat models cannot fetch video content, so any “summary” they produce is invented from the title. An MCP server fixes this properly: you configure it once, the transcript arrives as a tool result the model can actually quote, and the same setup works in every MCP client you run — Claude Code, Claude Desktop, Cursor, OpenCode, Windsurf. The category is big enough that the MCP SDK alone now sees tens of millions of monthly downloads, and r/mcp's maintainers openly describe YouTube as one of its most crowded server categories. Crowded is good for you: the tools are free, small, and battle-tested. It is bad for one reason only — the differences that matter are never on the landing pages.

Those differences are three: what happens between sessions (nothing, or a searchable local database), what happens when a video has no captions (error, skip, or a real Whisper fallback), and where the work runs (your machine, or a hosted meter).

The 2026 field — seven servers, two architectures

Server What it does Install / access
mcp/youtube-transcript (jkawamoto) The Docker-catalog standard: 4 tools — transcript, timed transcript, available languages, video info. Stateless caption pull, MIT. docker run -i --rm mcp/youtube-transcript
yt-transcript-mcp (alialfredji) Dual extraction with auto-fallback: yt-dlp first (great locally), youtubei.js second (reliable on cloud servers where YouTube's bot detection eats yt-dlp). stdio locally, HTTP/SSE remotely, Docker Compose for mobile clients. claude mcp add yt-transcript -- npx -y yt-transcript-mcp
yt-subs-mcp (jvsteiner) VTT → SRT → deduplicated plain text via yt-dlp + ffmpeg; optionally saves each transcript as VIDEO_ID.txt. No API keys; English caption tracks; needs yt-dlp and ffmpeg in PATH. npx -y yt-subs-mcp
yttranscript-mcp / YTT (AndrewCTF) Captions-first with a real local Whisper fallback, clean format that strips rolling auto-caption duplication, SQLite cache, BM25 semantic search over an indexed library, YouTube keyword search. No YouTube Data API key anywhere. pip install "yttranscript-mcp[mcp,whisper]"
ytbrain (Eli-xir) Turns a whole channel or playlist into a queryable SQLite/FTS5 knowledge base: BM25 search, answers quoted from transcripts with timestamped deep links, honest by construction (no-caption videos reported and skipped). ~35 MB per 1,000 talking-hours. pip install -e . then ytbrain mcp
VidLens The persistence maximalist: 41 tools, imported playlists build SQLite + vector indexes that survive across chats, plus comment and creator-intelligence modules. Works with no API keys; Gemini/YouTube keys optional. npx vidlens-mcp setup
YouTubeTranscript.dev (hosted) Remote MCP (mcp.youtubetranscript.dev) with transcript history: list, search, paginate, stats, delete. API key per connection, OAuth-capable clients sign in once. The metered-exception in an otherwise free field. claude mcp add --transport http youtubetranscript https://mcp.youtubetranscript.dev

One honorable mention that is not an MCP server at all: ytsubs ships as an agent skill compliant with the agent-skills specification — npx skills add bguiz/ytsubs --skill youtube-transcript-extract puts it where Claude Code or Kimi-CLI can find it, invoked as /youtube-transcript-extract youtu.be/VIDEO_ID. The same job, delivered as a skill instead of a protocol server — and a live demonstration of why skills and MCP are complements, not competitors (skills encode the procedure; MCP provides the tool surface).

Stateless pullers vs corpus builders — pick by job, not hype

Every server in the table does one of two jobs. Stateless pullers (Docker's mcp/youtube-transcript, yt-transcript-mcp, yt-subs-mcp) take a URL, return a transcript, and remember nothing — the right shape for “summarize this talk” one-off asks. Corpus builders (ytbrain, VidLens, yttranscript-mcp's ytt index) persist everything you ingest into a local SQLite file with full-text or vector search — the tenth query against an indexed playlist is instant and richer than the first, and nothing re-fetches. If you routinely work through lecture series, conference channels, or a competitor's back catalog, the corpus shape is worth ten stateless pulls; the r/mcp author behind VidLens built the whole argument around it.

The corpus builders share a property worth naming: everything stays on your disk. One SQLite file, no accounts, no API keys on the core path, and deep links that jump to the exact timestamp in the source video. That is also exactly where a hosted remote MCP differs — convenient across devices, but every transcript request flows through someone else's server and their rate limits.

The caption ceiling — what no server in the field advertises

Nearly every YouTube transcript MCP server reads caption tracks. That is fast, free, and audio-free (ytbrain's ingest is ~2-4 seconds per video precisely because nothing is downloaded) — but it means the tool fails exactly when captions fail: videos with captions disabled, auto-captions still processing, region-locked tracks, or no track in your language. Field behavior splits three ways:

Error out

The basic pullers surface TranscriptsDisabled-class errors and the agent moves on. Fine — if you know to try another route.

Report and skip

ytbrain's “honest by construction” stance: no-caption videos are named and skipped, unanswerable questions say so, nothing is invented. The right default for corpus building, where silent gaps rot search results.

Fall back to local Whisper

The real upgrade. yttranscript-mcp installs it as a pip extra: pip install "yttranscript-mcp[whisper]" (needs ffmpeg), and caption-less videos get downloaded as audio and transcribed on your machine — real speech recognition, unlimited, nothing uploaded. The same pipeline as any local video workflow, just wired behind a tool call.

Know the quality floor of the caption path itself: YouTube auto-captions land around 85-95% word accuracy with essentially no punctuation — roughly one line in five arrives with no sentence break at all. Good servers (YTT's clean format) strip the rolling auto-caption duplication so you are not paying tokens for repeated lines; verify proper nouns either way. And mind the rate wall: YouTube's internal endpoint throttles hard per IP (~5 requests per 10 seconds is the commonly hit ceiling), which is why cloud-deployed pullers reach for the youtubei.js fallback and why local, slower ingest is the polite default.

The turnkey route: transcripts where your agents already live

Wiring servers one by one is the hobbyist tax. VibeFuse treats the same job as part of the harness: agents run as live widgets on a desktop canvas, MCP servers plug in at canvas level, skills sit beside them, and transcripts — YouTube or any local file — land in the same local pipeline that powers VocalFuse: local Whisper-class engine on Windows, timestamped punctuated output with speaker labels, TXT/SRT/VTT export, nothing uploads. It is the first free widget-based AI harness, and its open-source marketplace means the transcript widgets, skills, and styling packs you build are yours to sell — with 80% revenue share to creators, not a platform meter.

One-off asks

A stateless puller, free and forgettable.

YouTube to text routes

Recurring corpus

Index the channel once; query it forever, locally.

Skills vs MCP decision

No captions at all

The Whisper fallback, or the turnkey app.

Transcribe a YouTube video

Explore related AI note taking guides

YouTube transcript MCP — FAQ

What is a YouTube transcript MCP server?

A small server that speaks the Model Context Protocol and exposes YouTube transcript fetching as a tool your AI client can call. Configure it once (one line in Claude Code, Claude Desktop, Cursor, or OpenCode) and any agent you run can ask for a video's transcript by URL — it arrives as a tool result the model can quote, summarize, search, and cite. Without one, chat models cannot fetch YouTube content at all: paste a link into ChatGPT or Claude and any "summary" is invented from the title.

Which YouTube transcript MCP server should I use?

Pick by job. One-off asks: mcp/youtube-transcript (the Docker-catalog standard, 4 tools, one docker run command) or yt-transcript-mcp (yt-dlp first with a youtubei.js auto-fallback that survives cloud bot detection). A recurring research corpus: ytbrain or VidLens — both persist every video you ingest into a local SQLite/FTS5 index with BM25 search and timestamped deep links, so the tenth query against an indexed playlist is instant. Caption-less videos in the mix: yttranscript-mcp (YTT), the only mainstream server with a real local Whisper fallback behind a pip extra.

Do these MCP servers work when a video has no captions?

Usually not — and that is the category's silent limitation. Nearly every server reads caption tracks rather than transcribing audio, so captions-disabled, still-processing, region-locked, or missing-language videos fail. Behavior splits three ways: error out (basic pullers), report-and-skip (ytbrain, deliberately honest so corpus gaps never rot search results silently), or fall back to real local Whisper transcription (yttranscript-mcp via pip install "yttranscript-mcp[whisper]" — downloads the audio and transcribes it on your machine, nothing uploaded).

How do I install a YouTube transcript MCP server in Claude Code?

One command per server. Docker catalog standard: configure mcp/youtube-transcript with "docker run -i --rm mcp/youtube-transcript" as the command. npm route: claude mcp add yt-transcript -- npx -y yt-transcript-mcp (needs Python 3 for the yt-dlp path; the youtubei.js fallback is pure JavaScript). Python route with Whisper fallback: pip install "yttranscript-mcp[mcp,whisper]" (ffmpeg required for the Whisper path). Hosted remote: claude mcp add --transport http youtubetranscript https://mcp.youtubetranscript.dev (API key or OAuth, transcript history included, metered).

Is there an MCP server that searches YouTube videos I already fetched?

Yes — the corpus-builder family. ytbrain turns a channel or playlist into a local SQLite/FTS5 knowledge base (~35 MB per 1,000 talking-hours), answers questions with sentences quoted from transcripts and timestamped deep links, and reports no-caption videos instead of inventing around them. VidLens goes wider: 41 tools, playlists build SQLite + vector indexes that survive across chats, plus comment-sentiment and creator-intelligence modules. yttranscript-mcp's ytt index + ytt find gives the same shape from a pip install. All three keep everything in one local file with no accounts.

YouTube MCP server or an agent skill — which is better?

They are complements, not competitors. A skill (ytsubs ships one: npx skills add bguiz/ytsubs --skill youtube-transcript-extract) encodes the procedure — the agent reads Markdown instructions and runs yt-dlp itself, no server process, works in any skill-aware harness. An MCP server gives the client a stable typed tool surface that any MCP-compatible app can call without re-reading instructions. If you work in one harness, either works; if you want the same capability across every MCP client you run, the server wins; if you want zero processes, the skill wins.

Are YouTube transcript MCP servers free?

The self-hosted field is free and MIT/Apache-licensed (mcp/youtube-transcript, yt-transcript-mcp, yt-subs-mcp, yttranscript-mcp, ytbrain, VidLens) — you run them locally and the only costs are your own bandwidth and compute. The exception is the hosted remote pattern (YouTubeTranscript.dev and similar): free tiers with API keys, paid plans for history and volume. The trade is convenience versus meter — hosted servers process every request on someone else's infrastructure, self-hosted ones never send your URLs anywhere but YouTube.

How accurate are transcripts from these MCP servers?

They inherit YouTube's caption quality: manual tracks are human-quality, auto-captions land around 85-95% word accuracy with no punctuation — roughly one line in five has no sentence break — and proper nouns are the dominant error class. Good servers clean the path: yttranscript-mcp's clean format strips the rolling auto-caption duplication that otherwise wastes tokens, and yt-subs-mcp deduplicates VTT lines. For quote-verified work, scan proper nouns against the video or run the audio through a local Whisper-class engine (Parakeet 6.34% vs Whisper large-v3 7.44% published WER) before citing.