youtube-transcript-mcp
Extract full transcripts from YouTube videos and search for keywords with timestamps.
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-mcpget the transcript of 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 Server
An MCP server that gives Claude access to YouTube video transcripts. Extract full transcripts, search for keywords with timestamps, and get direct YouTube links to matching moments.
Tools
get_transcript
Extract the full timestamped transcript from any YouTube video.
Title: Rick Astley - Never Gonna Give You Up (Official Video)
Channel: Rick Astley
Duration: 3:33
Source: captions | Language: en | Segments: 60
---
[0:01] [♪♪♪]
[0:18] ♪ We're no strangers to love ♪
[0:22] ♪ You know the rules and so do I ♪
...search_transcript
Keyword search across a video's transcript. Matches are grouped, marked with >>>, and include a YouTube link to jump to that moment.
Search: "give you up" in Rick Astley - Never Gonna Give You Up
Matches: 9 hits in 2 group(s)
--- Group 1 (1 hit(s)) — https://www.youtube.com/watch?v=dQw4w9WgXcQ&t=43 ---
[0:40] ♪ Gotta make you understand ♪
>>> [0:43] ♪ Never gonna give you up ♪
[0:45] ♪ Never gonna let you down ♪Related MCP server: YouTube Ultimate Toolkit MCP
Install
git clone https://github.com/yunlinwu/youtube-transcript-mcp.git
cd youtube-transcript-mcp
pip install -e .For Whisper fallback (transcribes videos without captions):
pip install -e ".[whisper]"Setup
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"youtube-transcript": {
"command": "/path/to/youtube-transcript-mcp/.venv/bin/youtube-transcript-mcp"
}
}
}Claude Code
Add to .claude/settings.json:
{
"mcpServers": {
"youtube-transcript": {
"command": "/path/to/youtube-transcript-mcp/.venv/bin/youtube-transcript-mcp"
}
}
}Then restart Claude Desktop or Claude Code to pick up the server.
How it works
You ask Claude about a YouTube video
Claude calls
get_transcriptorsearch_transcriptvia MCPThe server uses yt-dlp to fetch captions (or Whisper to transcribe audio as a fallback)
Claude gets back a compact, readable transcript and can summarize, search, or analyze it
Requirements
Development
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytestLicense
MIT
Available Tools
2 toolsget_transcript_toolA
Get the full transcript of a YouTube video with timestamps.
Args: url: YouTube video URL or video ID lang: Language code for captions (default: "en") use_whisper_fallback: If True, use Whisper when captions unavailable
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| lang | No | en | |
| use_whisper_fallback | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behavior: obtaining transcript with timestamps and optional Whisper fallback. However, it omits details about authentication, rate limits, or error handling when captions are unavailable (e.g., falls back to Whisper only if flag is true). With no annotations, the description could be more explicit about edge cases.
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 exceptionally concise with no redundant information. The main purpose is stated upfront, followed by a clear parameters list. Every sentence serves a purpose.
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 an output schema (which likely documents return format), the description covers the essential inputs and fallback behavior. It could mention that the result includes timestamps inline, but overall it is sufficiently complete for a simple retrieval tool.
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?
The description compensates for zero schema coverage by explaining each parameter's purpose, defaults, and usage. For example, 'url' is described as 'YouTube video URL or video ID', and the fallback parameter's behavior is clarified. Adding example values could improve it further.
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 tool retrieves the full transcript with timestamps from YouTube. While it distinguishes itself from the sibling 'search_transcript' by focusing on full retrieval, it does not explicitly differentiate use cases.
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?
No guidance is provided on when to use this tool versus the sibling 'search_transcript'. The description only explains parameters but lacks context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_transcriptB
Search a YouTube video's transcript for matching segments.
Args: url: YouTube video URL or video ID query: Search term to find in the transcript lang: Language code for captions (default: "en") context_seconds: Seconds of context around each match (default: 30)
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| lang | No | en | |
| query | Yes | ||
| context_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It mentions context_seconds but omits details about output format, timestamps, rate limits, or authentication needs. The minimal description leaves significant behavioral gaps.
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 very concise: one sentence summary followed by a bulleted list of arguments. Every sentence adds value with no redundancy. Structure is clear and scannable.
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 has 4 parameters, no annotations, and an output schema exists, the description covers basic requirements. However, it does not address error conditions, prerequisites (e.g., video must have captions), or the structure of returned segments, leaving some 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 coverage is 0%, so the description must compensate. It provides brief explanations for all four parameters (url, query, lang, context_seconds) that add meaning beyond property names, but the explanations are minimal and lack format constraints or examples.
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 tool searches a YouTube video's transcript for matching segments, using specific verb and resource. It distinguishes from the sibling get_transcript_tool by implication (search vs. full retrieval), but does not explicitly contrast them.
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?
No guidance is provided on when to use this tool versus the sibling get_transcript_tool or any alternatives. The description simply states what it does without usage context.
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.
2 tool updates
v0.1.0- First observed
get_transcript_tool - First observed
search_transcript
TDQS
Scored across 2 tools
Each tool has a clear, distinct purpose: one fetches the full transcript, the other searches within it. No functional overlap.
Both use snake_case but the naming pattern is inconsistent: 'get_transcript_tool' includes a redundant '_tool' suffix while 'search_transcript' does not.
Two tools are well-scoped for the server's focused purpose of YouTube transcript access and search. No unnecessary tools.
The tool surface covers the core operations (full transcript retrieval and search) but lacks auxiliary features like language detection or transcript availability checking.
Maintenance
Related MCP Connectors
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 browsing, and playlists for AI agents via MCP.
MCP server for RiverScript, an AI transcription platform - fetches transcripts shared via a link.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that allows Claude and other AI assistants to interact with the YouTube API, providing tools to search videos/channels and retrieve detailed information about them.17 npm1MIT
- AlicenseAqualityCmaintenanceA comprehensive MCP server that provides Claude AI with full access to YouTube content, including searchable transcripts, metadata, comments, and playlists. It uniquely supports capturing video screenshots and extracting audio clips for analysis across both local and remote platforms.513 npm3MIT
- FlicenseNot gradedqualityDmaintenanceThis MCP server fetches and extracts transcripts from YouTube videos, enabling AI language models to access and analyze video content.1-
- AlicenseNot gradedqualityDmaintenanceMCP server that extracts YouTube video transcripts (including metadata) as Markdown, enabling AI to summarize and discuss video content without watching it.MIT