mcp-youtube-transcript
This MCP server provides tools to access YouTube video transcripts. You can:
List available transcript languages for a YouTube video (accepts common URL formats or video ID), showing language code, name, and whether manually created or auto-generated.
Retrieve the full transcript text as plain text without timestamps by specifying a language code. If the requested language is unavailable, it automatically falls back to English; if no transcript exists at all, it returns the list of available languages so you can choose and retry.
Use flexible URL input: accepts
watch?v=,youtu.be/,/shorts/,/embed/,/live/forms or bare 11‑character video IDs.
Provides tools to retrieve YouTube video transcripts, including listing available subtitle tracks and fetching transcript text in a specified language.
Click on "Install 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., "@mcp-youtube-transcriptGet the transcript of https://www.youtube.com/watch?v=9bZkp7q19f0"
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.
mcp-youtube-transcript
An MCP server that takes a YouTube video URL and returns the transcript text to your agent.
Tools
list_transcript_languages(url)— which subtitle tracks the video hasget_transcript(url, language)— the transcript text in the given language
language is required. If the requested language is unavailable, English is used
as a fallback; if neither exists, the tool returns the list of languages the video
does have so the agent can retry.
URLs are accepted in every common form: watch?v=, youtu.be/, /shorts/,
/embed/, /live/, or a bare 11-character video ID.
Related MCP server: YouTube Insights MCP Server
Installation
No Python needed. The only requirement is uv — a single binary that installs without administrator rights and downloads a suitable Python for you.
Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"macOS / Linux:
curl -LsSf https://astral.sh/uv/install.sh | shThen add the server to Claude Code with a single command:
claude mcp add youtube-transcript -- uvx --from git+https://github.com/gridivit/mcp-youtube-transcript mcp-youtube-transcriptFor Claude Desktop, add this to claude_desktop_config.json
(%APPDATA%\Claude\ on Windows, ~/Library/Application Support/Claude/ on macOS):
{
"mcpServers": {
"youtube-transcript": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/gridivit/mcp-youtube-transcript",
"mcp-youtube-transcript"
]
}
}
}For Antigravity, use the same JSON in ~/.gemini/config/mcp_config.json
(global) or .agents/mcp_config.json (per project).
The first launch takes about a minute while uv downloads Python and the dependencies. Every launch after that is instant.
Windows notes
Escape backslashes in JSON paths:
C:\\Users\\..., or just use forward slashes. A single backslash silently breaks config parsing.If the client cannot find
uv, restart the application completely so it picks up the updatedPATH. If that does not help, use the full path to the binary:C:\\Users\\<name>\\.local\\bin\\uvx.exe.
Updating
uvx caches the cloned repository and will not pick up new commits on its own.
To pull the latest version:
uvx --refresh --from git+https://github.com/gridivit/mcp-youtube-transcript mcp-youtube-transcriptDevelopment
Do not install your own checkout through uvx — it pulls the code from git, so
you would not see local changes. Point the client at the working copy instead:
claude mcp add youtube-transcript-dev -- uv --directory <path-to-clone> run mcp-youtube-transcriptRun the test client to inspect the protocol directly:
npx @modelcontextprotocol/inspector uv run mcp-youtube-transcriptAvailable Tools
2 toolsget_transcriptA
Get the full transcript text of a YouTube video.
Returns the whole transcript as plain text without timestamps. Long videos produce long text: a two-hour video is roughly 20-30 thousand words.
If the requested language is unavailable, English is used as a fallback. If neither exists, this fails and lists the languages the video does have - pick one of them and call again.
Args: url: YouTube video URL (watch, youtu.be, shorts or embed form), or the bare 11-character video id. language: Language code of the wanted transcript, e.g. "en", "ru", "de".
Returns: The transcript as a single plain-text string.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| language | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals important traits: returns only plain text without timestamps, long videos produce very long text, fallback language behavior, and failure mode (lists available languages). It does not mention authentication, rate limits, or whether transcripts must be manually uploaded, but the disclosed details go well beyond the schema and give the agent realistic expectations.
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 moderately long but every sentence earns its place. It is well-structured with a clear purpose statement, a practical note on output length, fallback behavior, error handling, and labeled Args/Returns sections. No redundancy or fluff, and the format is easily parsable by an agent.
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 (two required parameters, an output schema exists, sibling tool present), the description covers all critical aspects: what it does, what inputs it accepts, what output to expect, fallback logic, and what happens on error with actionable next steps. The output schema can handle return-type detail, so the description need not repeat it. The only minor omission is a direct pointer to list_transcript_languages, but the failure-path guidance compensates.
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 input schema has 0% description coverage, so the description must fully explain both parameters. It does this thoroughly: url accepts multiple URL forms (watch, youtu.be, shorts, embed) or a bare 11-character ID, and language takes a language code such as 'en', 'ru', 'de'. This directly compensates for the missing schema descriptions and leaves no ambiguity about input formats.
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 opens with a specific verb and resource: 'Get the full transcript text of a YouTube video.' This clearly distinguishes the tool from the sibling list_transcript_languages by focusing on retrieving transcript text rather than enumerating available languages. It also notes the output is plain text without timestamps, adding precision.
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 on when to use the tool and how to handle failures: if the requested language is unavailable, English is used as a fallback; if neither exists, the tool lists available languages and advises calling again with one of them. It does not explicitly name the sibling tool or state when to prefer list_transcript_languages, so it stops short of a 5, but the fallback and retry guidance is valuable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_transcript_languagesA
List the subtitle tracks available for a YouTube video.
Call this when you do not know which languages a video has, or after get_transcript reported that the requested language is unavailable.
Args: url: YouTube video URL (watch, youtu.be, shorts or embed form), or the bare 11-character video id.
Returns: One line per track: " - (manual|auto-generated)".
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
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 the full burden. It discloses the return format ('<code> - <name> (manual|auto-generated)') and accepted URL forms, which is substantial behavioral context. However, it doesn't mention potential side effects or errors, though as a listing operation these are likely negligible.
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 compact and well-structured: a one-sentence purpose, a usage note, an Args section, and a Returns line. Every sentence adds value, and the purpose is front-loaded.
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 simplicity (one parameter, no annotations), the description covers all necessary aspects: what it does, when to use it, parameter semantics, and return format. It is fully complete within its scope.
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 input schema has no descriptions for the 'url' parameter, but the description fully compensates by explaining accepted URL forms (watch, youtu.be, shorts, embed) and the bare 11-character video ID. This goes well beyond the schema's bare parameter name.
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 opens with a specific verb+resource: 'List the subtitle tracks available for a YouTube video.' This clearly distinguishes it from the sibling tool get_transcript, which fetches the transcript itself, while list_transcript_languages focuses on language availability.
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?
Explicitly provides two scenarios for when to use this tool: when you don't know which languages are available, or after get_transcript reports a language is unavailable. This directly references the sibling tool and gives actionable context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The two tools have distinct purposes: one lists available subtitle tracks, the other retrieves a transcript in a specified language. There is no overlap in functionality, and the descriptions clarify when to use each.
Both tool names follow a consistent verb_noun pattern: 'list_transcript_languages' and 'get_transcript'. This creates a predictable and readable convention.
Two tools is slightly below the typical 3-15 range, but it is well-scoped for a focused YouTube transcript server. The count feels appropriate rather than thin, covering the core use cases.
The tool surface covers the essential lifecycle: discovering available languages and fetching the transcript. The fallback to English and error messaging that suggests other languages complement the workflow, leaving no obvious gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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.
MCP server for RiverScript, an AI transcription platform - fetches transcripts shared via a link.
💯 The fastest YouTube transcript + YouTube search MCP for AI agents. Try for free.
MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server designed to fetch transcripts for YouTube videos. It enables AI tools to access video text content for tasks like summarization, analysis, and key takeaway extraction.173MIT
- 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.64MIT
- FlicenseNot gradedqualityDmaintenanceThis MCP server fetches and extracts transcripts from YouTube videos, enabling AI language models to access and analyze video content.1
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/gridivit/mcp-youtube-transcript'
If you have feedback or need assistance with the MCP directory API, please join our Discord server