YouTube Transcript MCP Server
Allows extracting, searching, and analyzing YouTube video transcripts, supporting full transcript retrieval, keyword searching with context, time-chunked summaries, and batch processing for multiple videos.
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 Serverget the transcript for https://www.youtube.com/watch?v=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 Server
An MCP (Model Context Protocol) server that extracts, searches, and analyzes YouTube video transcripts. Works with Claude Desktop, Cursor, and any MCP-compatible client.
Features
Get Transcript - Extract full transcript from any YouTube video
Search Transcript - Find specific keywords with surrounding context
Transcript Summary - Get time-chunked transcript for easier analysis
Batch Processing - Process up to 10 videos at once
Related MCP server: YouTube Insights MCP Server
Installation
pip (recommended)
pip install yt-transcript-mcpFrom source
git clone https://github.com/alex2zimmermann-ux/yt-transcript-mcp
cd yt-transcript-mcp
pip install .Configuration
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"youtube-transcript": {
"command": "yt-transcript-mcp",
"env": {
"YT_MCP_MODE": "standalone"
}
}
}
}Environment Variables
Variable | Default | Description |
|
|
|
|
| Backend service URL |
| - | API key for backend |
|
| Max cache entries |
|
| Cache TTL in seconds |
|
| Rate limit |
|
|
|
Modes
Standalone (default)
Uses youtube-transcript-api directly. Lightweight, no external dependencies. Best for marketplace deployment.
Backend
Connects to a running transcript service (FastAPI) that supports cookies, yt-dlp, and Whisper fallback. Best for premium/self-hosted usage.
Tools
get_transcript
Get the transcript of a YouTube video.
Parameters:
url(required) - YouTube URL or video IDlanguage(optional, default: "en") - Language codeformat(optional, default: "text") - "text", "segments", or "both"
search_transcript
Search for keywords in a video transcript.
Parameters:
url(required) - YouTube URL or video IDquery(required) - Search termlanguage(optional, default: "en")context_segments(optional, default: 1) - Surrounding segments to include
get_transcript_summary
Get transcript in time chunks for analysis.
Parameters:
url(required) - YouTube URL or video IDlanguage(optional, default: "en")chunk_minutes(optional, default: 5)
batch_transcripts
Process multiple videos at once.
Parameters:
urls(required) - List of YouTube URLs or IDs (max 10)language(optional, default: "en")
Docker
# Standalone
docker compose --profile standalone up
# Backend
YT_MCP_BACKEND_API_KEY=your-key docker compose --profile backend upDevelopment
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest tests/ -v --covLicense
MIT
Available Tools
4 toolsbatch_transcriptsARead-only
Get transcripts for multiple YouTube videos in a single request (max 10 videos).
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | List of YouTube video URLs or IDs to process (maximum 10 videos per batch) | |
| language | No | ISO 639-1 language code for all transcripts (e.g. en, de, es, fr) | en |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering safety and scope. The description adds useful context about the batch limit ('max 10 videos'), which is not in the annotations. However, it does not disclose other behavioral traits like error handling, rate limits, or performance implications for large batches, limiting added value.
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 ('Get transcripts for multiple YouTube videos') and includes essential constraints ('in a single request', 'max 10 videos'). Every word earns its place with no redundancy or wasted information, making it highly concise and well-structured.
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 moderate complexity (batch processing with limits), rich annotations (safety and scope covered), and existence of an output schema (reducing need to describe return values), the description is mostly complete. It covers the batch nature and limit, but could improve by mentioning prerequisites (e.g., video availability) or error scenarios, leaving minor gaps.
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%, with parameters 'urls' and 'language' well-documented in the schema. The description implies batch processing with a maximum limit, but does not add significant meaning beyond what the schema provides, such as format details for URLs or language code examples. Baseline 3 is appropriate given high 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 specific action ('Get transcripts') and resource ('for multiple YouTube videos'), distinguishing it from sibling tools like get_transcript (single video) and get_transcript_summary (summaries rather than full transcripts). It explicitly mentions the batch capability and maximum limit, making the purpose unambiguous and differentiated.
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 provides clear context for when to use this tool ('multiple YouTube videos in a single request') and includes a constraint ('max 10 videos'), which helps differentiate it from get_transcript for single videos. However, it does not explicitly state when NOT to use it or mention alternatives like search_transcript for searching within transcripts, leaving some guidance gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transcriptARead-only
Get the full transcript of a YouTube video in the specified language and format.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | YouTube video URL or video ID (e.g. https://youtube.com/watch?v=dQw4w9WgXcQ or just dQw4w9WgXcQ) | |
| language | No | ISO 639-1 language code for the transcript (e.g. en, de, es, fr, ja, ko) | en |
| format | No | Output format: text for plain text, segments for timestamped segments, both for combined output | text |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, indicating safe, non-destructive operations with open-world assumptions. The description adds value by specifying the output format options (text, segments, both), which is useful context beyond annotations. No contradictions with annotations are present.
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 efficiently conveys the tool's purpose and key parameters. It is front-loaded with essential information and avoids unnecessary elaboration, making it easy to parse.
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 moderate complexity, rich annotations (covering safety and world assumptions), and the presence of an output schema (which handles return values), the description is complete enough. It covers the core functionality and parameters without redundancy, suiting the context 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 description coverage is 100%, with detailed descriptions for each parameter (e.g., URL formats, language codes, format options). The description mentions language and format parameters but does not add significant semantic details beyond what the schema provides, aligning with the baseline for high 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 ('Get'), resource ('full transcript of a YouTube video'), and scope ('in the specified language and format'). It distinguishes from siblings like 'get_transcript_summary' (which provides summaries) and 'search_transcript' (which searches within transcripts) by emphasizing retrieval of the complete transcript.
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 for obtaining full transcripts, but does not explicitly state when to use this tool versus alternatives like 'batch_transcripts' (for multiple videos) or 'get_transcript_summary' (for summaries). It provides context through parameter specifications but lacks explicit guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transcript_summaryARead-only
Get a transcript organized into time-based chunks for easier analysis of long videos.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | YouTube video URL or video ID to summarize | |
| language | No | ISO 639-1 language code for the transcript (e.g. en, de, es, fr) | en |
| chunk_minutes | No | Size of each time chunk in minutes for grouping transcript segments |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, non-destructive, and open-world behavior, so the description adds value by specifying the time-based chunking output format and its purpose for analysis. It does not contradict annotations, and it provides useful context about the tool's output structure beyond what annotations cover.
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 efficiently conveys the tool's purpose and key feature (time-based chunks). It is front-loaded with the main action and avoids unnecessary words, making it highly concise and effective.
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 moderate complexity, rich annotations (read-only, non-destructive, open-world), high schema coverage, and presence of an output schema, the description is complete enough. It explains the output format (time-based chunks) and purpose, which complements the structured data without redundancy.
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 detail parameters. It mentions 'time-based chunks' which aligns with the 'chunk_minutes' parameter, but adds no additional semantic meaning beyond what the schema provides. Baseline 3 is appropriate given high 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 specific action ('Get a transcript organized into time-based chunks') and resource ('transcript'), distinguishing it from siblings like 'get_transcript' (likely raw transcript) and 'search_transcript' (search functionality). It explicitly mentions the purpose of easier analysis for long videos, which adds valuable context.
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 for analyzing long videos by organizing transcripts into chunks, but it does not explicitly state when to use this tool versus alternatives like 'get_transcript' or 'search_transcript'. No exclusions or prerequisites are mentioned, leaving some ambiguity about optimal use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_transcriptARead-only
Search for keywords or phrases in a YouTube video transcript and return matching segments with timestamps.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | YouTube video URL or video ID to search in | |
| query | Yes | Search query string (case-insensitive keyword or phrase to find in the transcript) | |
| language | No | ISO 639-1 language code for the transcript (e.g. en, de, es, fr) | en |
| context_segments | No | Number of surrounding transcript segments to include as context around each match |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, covering safety and scope. The description adds valuable context about case-insensitive search and timestamp returns, which aren't covered by annotations. However, it doesn't mention potential limitations like transcript availability or search performance.
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 efficiently communicates the tool's core functionality without any wasted words. It's front-loaded with the main purpose and includes essential details about the output format.
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 presence of annotations covering safety/scope, 100% schema coverage, and an output schema (which handles return values), the description provides adequate context. It could be slightly more complete by mentioning transcript availability constraints or search result formatting, but covers the essential purpose well.
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 schema fully documents all parameters. The description mentions 'keywords or phrases' which aligns with the 'query' parameter but doesn't add meaningful semantics beyond what's already in the schema descriptions. Baseline 3 is appropriate when schema does the heavy lifting.
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 ('Search for keywords or phrases'), the resource ('in a YouTube video transcript'), and the output ('return matching segments with timestamps'). It distinguishes from sibling tools like 'get_transcript' (which retrieves full transcripts) and 'get_transcript_summary' (which provides summaries) by focusing on targeted search functionality.
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 for keyword/phrase searches in transcripts, but doesn't explicitly state when to use this tool versus alternatives like 'get_transcript' for full transcripts or 'batch_transcripts' for multiple videos. It provides basic context but lacks explicit guidance on tool selection or exclusions.
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.
4 tool updates
v1.0.0- First observed
batch_transcripts - First observed
get_transcript - First observed
get_transcript_summary - First observed
search_transcript
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: batch_transcripts handles multiple videos, get_transcript retrieves a full transcript, get_transcript_summary provides chunked analysis, and search_transcript finds specific segments. There is no overlap in functionality, making tool selection straightforward for an agent.
All tool names follow a consistent verb_noun pattern (e.g., get_transcript, search_transcript) with clear, descriptive verbs. The naming is uniform across all four tools, enhancing readability and predictability.
With 4 tools, the server is well-scoped for its purpose of YouTube transcript retrieval and analysis. Each tool serves a unique and essential function, avoiding bloat while covering core operations like retrieval, summarization, and search.
The tool set provides complete coverage for the domain: it supports single and batch transcript retrieval, summarization for long videos, and search capabilities. There are no obvious gaps, as all key workflows for transcript analysis are addressed without dead ends.
Maintenance
Related MCP Connectors
YouTube transcripts, search, channel browsing, and playlists for AI agents via MCP.
An MCP server that gives any LLM or agent clean YouTube transcripts on demand: a single video, a whole channel, or a playlist, plus AI cleanup of auto-generated captions. API-key auth, credit-based, same backend as the public v1 API. Get a free API key with 25 free credits at youtubetranscriptdownload.com/account.
YouTube transcripts, search, channel/playlist listings and upload tracking for AI agents.
Extract YouTube transcripts, search what was said, and read on-screen frames with cited timestamps.
Related MCP Servers
- AlicenseAqualityDmaintenanceExtracts YouTube video metadata, titles, and descriptions along with transcripts generated from subtitles or OpenAI Whisper speech-to-text. This server enables users to retrieve and analyze detailed video content directly within MCP-compatible environments.19 npmMIT
- FlicenseBqualityDmaintenanceAn MCP server that extracts transcripts, metadata, and summaries from YouTube videos across various URL formats including Shorts and standard links. It provides comprehensive video data and insights for analysis within MCP-compatible environments.3-
- AlicenseAqualityAmaintenanceMCP server that fetches YouTube video transcripts and optionally summarizes them. Supports multiple transcript formats (text, JSON, SRT, WebVTT), multi-language retrieval, and flexible YouTube URL parsing.637 PyPI6MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that extracts YouTube video transcripts (including metadata) as Markdown, enabling AI to summarize and discuss video content without watching it.MIT