youtube-transcript-mcp
This server lets coding agents interact with YouTube transcripts without an API key.
Get full transcript: Fetch the entire transcript as plain text, optionally with
[mm:ss]timestamps, from any YouTube URL or video ID.Get video metadata: Retrieve title, channel name, and thumbnail via oEmbed (no upload date or description).
Search transcript: Find segments matching a keyword or phrase (case-insensitive) with timestamps.
Summarize chapters: Split the transcript into time-blocked chunks at natural pauses (heuristic) for section-by-section summarization.
Language selection: All transcript tools accept a prioritized list of language codes (defaults to
["en"]).Error handling: All tools return strings, including clear error messages for unsupported videos (e.g., no captions, private videos) without leaking exceptions.
Provides tools for retrieving YouTube video transcripts, fetching video metadata (title, channel, thumbnail), searching within transcripts with timestamps, and generating chapter summaries from transcript content.
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-transcript-mcp summarize the key points from 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.
youtube-transcript-mcp
MCP server that lets coding agents read, search and chapter-summarize YouTube transcripts. No API key needed.

Quick start
Requires Python 3.11+ and uv. Tested 2026-09-11
from a fresh clone on Windows 11 (POSIX same, minus py):
git clone https://github.com/luigimasango-dev/youtube-transcript-mcp.git
cd youtube-transcript-mcp
uv sync
uv run server.pyIt sits waiting for MCP stdio input, so it will appear to do nothing until a client connects. That is normal. Ctrl+C to exit.
Register it with an MCP client (Claude CLI example):
claude mcp add youtube-transcript -- uv --directory C:\Dev\youtube-transcript-mcp run server.pyOr in JSON config:
{
"mcpServers": {
"youtube-transcript": {
"command": "uv",
"args": ["--directory", "C:\\Dev\\youtube-transcript-mcp", "run", "server.py"]
}
}
}Related MCP server: YouTube for AI Agents
How it works
This started as a small tool for my own use. I kept hitting conversations that contained a YouTube link and needed to know what the video actually said, and re-pasting transcripts around was wasting time. It became a reusable server so that anything running on the Model Context Protocol could just ask.
Captions come through YouTube's public endpoints; metadata comes through YouTube's no-auth oEmbed endpoint. No API key, no Google account, nothing to sign up for.
Tools
Tool | Purpose | Key args |
| Full transcript as plain text. Accepts watch, youtu.be, embed, shorts, live URLs or a bare 11-char video ID |
|
| Title, channel name, channel URL and thumbnail via oEmbed (no upload date or description — those need a Data API key) |
|
| Segments matching a keyword/phrase, case-insensitive, each with a |
|
| Splits the transcript into rough time-blocked chunks at natural pauses for section-by-section summarising. A heuristic, not YouTube's real chapter data |
|
All tools return a plain string, including errors (for example "Error: captions are disabled for this video"). No exceptions surface to the calling agent, and no stack traces leak out.
Limitations
Only videos with captions (auto-generated or manual) work. Private videos, caption-less videos and live streams without captions return a clear error instead of a guess.
No upload dates or full descriptions without a YouTube Data API key, by design.
No caching. Two calls against the same video re-fetch both times. Fine for the tool's actual use; add caching if you ever need it at volume.
The language list matters.
languages=["en"]gets the English track when one exists. If a channel uploads in another language only, pass that code.
Development
uv sync
uv run --with pytest python -m pytest tests/ -vThe suite launches the real server over stdio, calls tools/list, and
asserts the four tool names are present. Pin mcp>=1.28.1 but stay below
2.0 — mcp 2.x renamed mcp.server.fastmcp and the import breaks at server
start.
License
MIT. See LICENSE.
Available Tools
4 toolsget_transcriptA
Fetch the full transcript of a YouTube video as plain text.
Args:
video_url_or_id: Full YouTube URL (watch/youtu.be/embed/shorts) or bare 11-char video ID.
languages: Preferred language codes in priority order, e.g. ["en", "en-GB"]. Defaults to ["en"].
include_timestamps: If true, prefix each line with a [mm:ss] timestamp.
Inputs: video_url_or_id (required), languages, include_timestamps. Returns: result
get_video_metadataA
Fetch title, channel name, and thumbnail for a YouTube video via the no-auth oEmbed endpoint.
Note: oEmbed does not expose upload date or full description (those require the official
Data API + an API key). This returns what's available without one.
Args:
video_url_or_id: Full YouTube URL or bare 11-char video ID.
Inputs: video_url_or_id (required). Returns: result
search_transcriptA
Search a video's transcript for a keyword/phrase and return matching segments with timestamps.
Args:
video_url_or_id: Full YouTube URL or bare 11-char video ID.
query: Keyword or phrase to search for (case-insensitive substring match).
languages: Preferred language codes in priority order. Defaults to ["en"].
Inputs: query (required), video_url_or_id (required), languages. Returns: result
summarize_chaptersA
Break a transcript into rough time-blocked chunks at natural pauses, for easier per-section summarizing.
This is a heuristic, not real chapter data: it splits wherever the gap between two consecutive
caption snippets exceeds `gap_seconds`, then merges any resulting chunk shorter than
`min_chunk_seconds` into its neighbor so chunks stay summarizable.
Args:
video_url_or_id: Full YouTube URL or bare 11-char video ID.
gap_seconds: Silence gap (seconds) between captions that triggers a new chunk boundary.
min_chunk_seconds: Minimum chunk duration; shorter chunks get merged forward.
languages: Preferred language codes in priority order. Defaults to ["en"].
Inputs: video_url_or_id (required), languages, gap_seconds, min_chunk_seconds. Returns: result
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 targets a distinct operation: fetching raw transcript text, fetching metadata, searching within a transcript, and chunking into chapters. Even though three tools operate on transcripts, their purposes are clearly separated and descriptions make the boundaries obvious.
All tool names follow a consistent verb_noun snake_case pattern: get_transcript, get_video_metadata, search_transcript, summarize_chapters. The verbs clearly indicate the action, and the nouns indicate the resource or output.
With 4 tools, the server is well-scoped for a focused YouTube transcript utility. Each tool covers a meaningful, non-redundant capability without unnecessary bloat.
The set covers the core transcript workflows: fetching, searching, chunking, and basic metadata retrieval. A minor gap is the lack of a tool to list available transcript languages or caption tracks, which could help when the default language is unavailable.
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 for AI agents: 150+ languages, AI transcription fallback, search, summaries.
YouTube transcripts, video search, chapters and extractive summaries. No YouTube API key, no LLM.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to fetch transcripts, metadata, and download videos/audio from YouTube without API keys.33MIT
- AlicenseAqualityDmaintenanceEnables AI agents to search, watch, summarize, clip, and extract transcripts from YouTube videos, all without needing an API key or leaving the chat.914 npm67Apache 2.0
- FlicenseNot gradedqualityDmaintenanceEnables LLMs to interact with YouTube videos by fetching transcripts, summarizing content, and answering questions based on video context.-
- AlicenseAqualityDmaintenanceEnables AI assistants to search YouTube, fetch transcripts, and get AI summaries of videos without API keys.36 npmMIT