
YouTube Transcript MCP Server
Fetch YouTube video transcripts (plain or timestamped), metadata, and available caption languages — no API key.
Add to your client
Copy the config for your MCP client and paste it into its config file.
uvx --from git+https://github.com/jkawamoto/mcp-youtube-transcript mcp-youtube-transcriptPaste into ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"youtube-transcript-mcp-server": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/jkawamoto/mcp-youtube-transcript",
"mcp-youtube-transcript"
]
}
}
}Requires `uv` (the Python package runner). Install it from https://docs.astral.sh/uv/ if `uvx` is not found.
Step-by-step guides: Add to Claude Desktop · Add to Cursor · Add to Windsurf
Before you start
- uv installed (provides the uvx command)
- No YouTube API key or account needed
- Optional: Webshare or HTTP/HTTPS proxy credentials if your network/IP is blocked by YouTube
About YouTube Transcript MCP Server
This server does one job well: turn a YouTube URL into text an agent can work with. get_transcript returns clean prose for summarization; get_timed_transcript keeps timestamps for citation or chaptering; get_video_info adds title-level metadata; and get_available_languages lets an agent discover which caption tracks exist before requesting one.
The pagination design is the most practical detail. Transcripts beyond 50,000 characters are chunked, each response carrying a next_cursor the agent passes back to continue — so a 3-hour podcast doesn't blow the context window in one call. If your model needs smaller pieces, --response-limit 15000 (or any character count) adjusts the split.
Installation is flexible: uvx running directly from the Git repo (the README's documented config), a one-click MCPB bundle for Claude Desktop, an LM Studio deeplink, or the Docker Hub MCP-catalog image. There is no PyPI-first flow; the uvx-from-git pattern is the canonical one.
Main failure mode to know: YouTube blocks transcript scraping from many datacenter IPs, returning RequestBlocked/IpBlocked errors. The server addresses this with first-class Webshare residential proxy support plus generic HTTP(S) proxy env vars — fine for personal use, but budget for a proxy if you run it server-side. MIT licensed, maintained by Junpei Kawamoto.
Tools & capabilities (4)
get_transcriptFetch a video's transcript by URL, optional language (default en), paginated via next_cursor.
get_timed_transcriptFetch the transcript with timestamps, same URL/lang/cursor parameters.
get_video_infoFetch metadata for a video URL.
get_available_languagesList caption languages available for a video.
When to use it
- Summarize long videos or podcasts without watching them
- Quote-with-timestamp workflows: find where in a video a claim is made
- Translate or study captions by requesting specific language tracks
- Feed lecture transcripts into note-taking or RAG pipelines
Quick setup
- 1Install uv (docs.astral.sh/uv) so uvx is available
- 2Add the uvx config from the README under mcpServers in claude_desktop_config.json
- 3Restart Claude Desktop — or skip both steps by installing the mcp-youtube-transcript.mcpb bundle from Releases
- 4Optional: append --response-limit 15000 to args for smaller response chunks
- 5Optional: set WEBSHARE_PROXY_USERNAME/PASSWORD or HTTP_PROXY/HTTPS_PROXY if YouTube blocks your IP
Security notes
Read-only against public YouTube caption data with no credentials to leak. YouTube rate-limits and sometimes IP-bans automated transcript fetching (especially from cloud IPs); if you configure Webshare or HTTP proxies, those proxy credentials go in env vars, and your traffic routes through the proxy provider.
YouTube Transcript MCP Server FAQ
Is it free, and do I need a YouTube API key?
Free and no API key: it reads caption data the same way youtube-transcript-api does, without OAuth or Google Cloud setup. The only potential cost is an optional proxy subscription if YouTube blocks your IP.
What happens with very long videos?
Transcripts over 50,000 characters are split automatically; the response includes a next_cursor you pass to the next call to continue. You can shrink chunks further with the --response-limit argument.
Why do I get blocked/empty results on a server?
YouTube aggressively blocks transcript requests from datacenter IPs. The README's fix is a residential proxy — set WEBSHARE_PROXY_USERNAME/PASSWORD (Webshare) or HTTP_PROXY/HTTPS_PROXY for a generic proxy.
Alternatives to YouTube Transcript MCP Server
Compare all alternatives →Control Blender from Claude and other LLMs for prompt-assisted 3D modeling, scene creation, and asset generation.
Popular community server that feeds Figma layout data to coding agents via a Figma API token.
Generate beautiful, modern UI components from natural-language descriptions inside your IDE.
Compare YouTube Transcript MCP Server with: