ytranscript-mcp
Allows retrieving transcripts for YouTube videos, supporting video URLs or IDs, language selection, plain or timestamped formats, and length limits.
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., "@ytranscript-mcpSummarize 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.
ytranscript-mcp
An MCP server that gives Claude, Cursor, VS Code, and other AI tools the transcript of any YouTube video.
Works from anywhere. Runs fine on AWS, Lambda, Vercel, n8n Cloud, and other cloud hosts. There are no proxies to buy and no IP bans to work around. YouTube blocks most cloud IPs for transcript requests; the yTranscript API handles that for you.
Handles videos without captions. If a video has no captions, it's transcribed with AI speech-to-text.
Returns the language actually spoken by default, including on auto-dubbed videos. Pass
langto pick a specific caption track.Keeps long videos manageable. Choose plain text or timestamped lines, and cap the length so a two-hour video doesn't flood the model's context.
Setup
Get a free API key at ytranscript.com/developers. The free plan includes 50 units a month, no card required.
Add the server to your client using one of the configs below.
Claude Code
claude mcp add ytranscript -e YTRANSCRIPT_API_KEY=yk_live_your_key -- npx -y ytranscript-mcpClaude Desktop
Add this to claude_desktop_config.json. Open it from Settings → Developer → Edit Config.
{
"mcpServers": {
"ytranscript": {
"command": "npx",
"args": ["-y", "ytranscript-mcp"],
"env": { "YTRANSCRIPT_API_KEY": "yk_live_your_key" }
}
}
}Cursor
Add this to ~/.cursor/mcp.json, or to .cursor/mcp.json in a project:
{
"mcpServers": {
"ytranscript": {
"command": "npx",
"args": ["-y", "ytranscript-mcp"],
"env": { "YTRANSCRIPT_API_KEY": "yk_live_your_key" }
}
}
}VS Code
Add this to .vscode/mcp.json:
{
"servers": {
"ytranscript": {
"command": "npx",
"args": ["-y", "ytranscript-mcp"],
"env": { "YTRANSCRIPT_API_KEY": "yk_live_your_key" }
}
}
}Any other MCP client that runs stdio servers works the same way: run npx -y ytranscript-mcp with YTRANSCRIPT_API_KEY set.
Related MCP server: YouTube Transcript MCP Server
Tool: get_transcript
Argument | Required | Description |
| yes | A YouTube URL ( |
| no | Language code of the caption track to fetch, such as |
| no |
|
| no | Cut the transcript at about this many characters. The response says how much was left out |
Things to ask your assistant:
"Summarize this video: https://youtu.be/..."
"What does the speaker say about pricing, and at what timestamps?"
"Pull the transcript of this Spanish video and translate it to English."
Every response ends with the units used and your monthly total, so you can keep an eye on your quota.
Pricing
A transcript from captions costs 1 unit. A video without captions, transcribed with AI, costs 15 units. Failed requests are free.
Plan | Price | Units per month |
Free | $0 | 50 |
Starter | $9/mo | 1,000 |
Developer | $29/mo | 10,000 |
Scale | $79/mo | 50,000 |
See ytranscript.com/developers for details.
Related
ytranscript-apiis the JavaScript/TypeScript client this server is built on.
License
MIT
Available Tools
1 toolget_transcriptGet YouTube transcriptARead-only
Get the transcript of a YouTube video. Accepts a video URL (watch, youtu.be, shorts, embed) or an 11-character video ID. Returns the video's spoken language by default. Videos without captions are transcribed with AI speech-to-text. Use format=timestamped when you need to cite or jump to specific moments.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language code of the caption track to fetch, e.g. 'en' or 'es'. Omit to get the video's original language. | |
| video | Yes | YouTube video URL or 11-character video ID | |
| format | No | 'text' (default): one block of plain text. 'timestamped': one line per segment with [m:ss] times. | |
| max_characters | No | Truncate the transcript to about this many characters. Useful for very long videos. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint, so the description adds meaningful behavioral context: it returns the video's spoken language by default and falls back to AI speech-to-text when captions are unavailable. This goes beyond the structured annotations and helps set expectations about the transcript source.
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?
Four short sentences with no redundant content. The core purpose is front-loaded, and each sentence adds distinct value: input formats, output default, fallback behavior, and parameter use case. Nothing could be removed without losing useful information.
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, four parameters, read-only annotations, and full schema coverage, the description covers the essential context an agent needs to call the tool correctly. It could mention edge cases like invalid IDs or how errors are surfaced, but these are minor gaps for a read-only transcript fetch 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?
Schema coverage is 100%, so the baseline is 3. The description adds extra nuance not fully captured by the schema: it clarifies accepted URL variants for the video parameter and explains the default language behavior. The format guidance ('timestamped when you need to cite or jump to specific moments') also adds practical parameter semantics.
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 a specific verb and resource: getting the transcript of a YouTube video. It enumerates accepted input formats (watch, youtu.be, shorts, embed URLs or 11-character IDs) and states the default behavior (spoken language), making the tool's purpose unambiguous even without sibling tools.
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 gives clear context for when to use the tool: whenever a YouTube transcript is needed. It also provides format-level guidance ('Use format=timestamped when you need to cite or jump to specific moments'), though it does not explicitly discuss alternatives or when not to use the tool, which is less necessary given there are no siblings.
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.
1 tool update
v0.1.0- First observed
get_transcript
TDQS
Scored across 1 tool
With only one tool, there is no possibility of overlap or confusion. The tool's purpose is clear and singular.
The single tool name follows a clear verb_noun pattern (get_transcript), consistent with common MCP conventions. No inconsistency can exist with one tool.
One tool is borderline thin for an MCP server, but for a narrowly scoped YouTube transcript service it is not unreasonable. It would benefit from additional tools like listing available languages or transcript metadata.
The tool covers the primary use case well: accepts various URL formats, detects language, falls back to AI speech-to-text, and supports timestamped output. Minor gaps exist such as no explicit language selection or list of available transcripts, but these are not critical for the core purpose.
Related MCP Connectors
YouTube transcripts, search, channel/playlist listings and upload tracking for AI agents.
YouTube transcripts, search, channels, playlists and bulk transcript jobs for AI agents. 14 tools.
Any video URL to LLM-ready transcript. ASR built in, no captions needed. TikTok, X, TED and more.
Transcripts of YouTube videos, playlists and channels in any language: text, SRT, VTT or JSON.
1
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to fetch and process YouTube video transcripts in multiple formats and languages, with built-in caching and rate limiting for efficient video content analysis.-
- AlicenseAqualityDmaintenanceRetrieves transcripts from YouTube videos with support for multiple languages, timestamp control, and language detection. Enables video content analysis, summarization, and quote extraction without manually downloading or watching videos.272 npm15MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI models to extract transcripts from YouTube videos in multiple languages with zero local setup. It supports all YouTube URL formats and features smart caching via Cloudflare Workers for fast responses.42 npm1MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to fetch YouTube video transcripts with precise timestamps, multi-language support, and time-range filtering.31MIT