Stop Wasting Hours on YouTube Notes: mcp-youtube-transcript Is the Secret Weapon
What if every YouTube video became instantly searchable, quotable, and analyzable—without you lifting a finger?
Picture this: You're deep in research mode, juggling three tutorial tabs, two conference talks, and that elusive debugging video everyone swears has the answer. You've paused, rewound, and scribbled half-legible notes for forty minutes. Then the presenter mumbles. You miss the critical line. Back to the timeline scrubber you go.
Sound painfully familiar?
For developers, content creators, and researchers, YouTube is an irreplaceable knowledge vault—but accessing that knowledge efficiently is a nightmare. Manual transcription services cost a fortune. Browser extensions break constantly. And copy-pasting from YouTube's auto-captions? That's a formatting disaster waiting to happen.
Here's the kicker: What if your AI assistant could pull any YouTube transcript on demand, complete with timestamps and metadata, as naturally as asking for the weather?
Enter mcp-youtube-transcript—the open-source MCP server that's quietly becoming the most powerful YouTube automation tool you've never heard of. Built by developer Junpei Kawamoto, this unassuming Python package transforms how AI agents interact with YouTube content. No APIs to wrestle with. No rate limits to panic about. Just clean, structured transcript data served through the Model Context Protocol.
Ready to reclaim hours of your life? Let's expose exactly how this tool works—and why developers are racing to integrate it.
What Is mcp-youtube-transcript?
mcp-youtube-transcript is a Model Context Protocol (MCP) server that retrieves transcripts, timed captions, video metadata, and available language information from YouTube videos. Created by Junpei Kawamoto, it bridges the gap between YouTube's vast video ecosystem and AI-powered applications that need structured text data.
The MCP Revolution
The Model Context Protocol, developed by Anthropic, is rapidly becoming the USB-C for AI applications—a universal standard that lets any AI client connect to any data source or tool. Instead of building custom integrations for every platform, developers can now plug into MCP servers like this one and instantly gain capabilities.
Think about what this means: Your Claude Desktop instance, your Goose workflow, your LM Studio setup—all of them can now read YouTube content as easily as they read local files.
Why It's Trending Now
The explosion of AI coding assistants and research agents has created insatiable demand for structured data from unstructured sources. YouTube hosts an estimated 500+ hours of video uploaded every minute, yet most of that knowledge remains locked behind playback interfaces. mcp-youtube-transcript cracks that vault open.
Key factors driving its adoption:
- Zero API keys required — unlike YouTube's Data API with its quota limits and OAuth complexity
- Multi-client support — works with Claude, Goose, LM Studio, and any MCP-compatible client
- Docker deployment — containerized for enterprise environments
- Proxy support — bypasses regional restrictions and IP blocks
- Pagination intelligence — automatically handles massive transcripts without overwhelming LLM context windows
The repository has earned badges from Glama's MCP server directory, signaling growing community validation. With CI/CD via GitHub Actions, pre-commit hooks for code quality, and MIT licensing for unrestricted use, this isn't a weekend experiment—it's production-ready infrastructure.
Key Features That Make It Irresistible
1. Four Precision-Tuned Tools
The server exposes four distinct capabilities, each solving a specific developer pain point:
| Tool | Purpose | Superpower |
|---|---|---|
get_transcript |
Raw transcript text | Bulk content extraction for summarization |
get_timed_transcript |
Timestamped captions | Precise citation and video navigation |
get_video_info |
Metadata retrieval | Context-aware processing |
get_available_languages |
Language detection | Multi-language workflow support |
2. Intelligent Response Pagination
Here's where it gets clever. Long-form content—think 3-hour conference keynotes or deep-dive tutorials—can generate transcripts exceeding 50,000 characters. Most LLMs hit token limits far below that threshold.
mcp-youtube-transcript automatically chunks oversized transcripts and returns a next_cursor for sequential retrieval. It's streaming for text, essentially. You can even tune the chunk size with --response-limit for your specific LLM's constraints.
3. Bulletproof Proxy Support
Working behind corporate firewalls or in regions with YouTube restrictions? The server supports:
- Webshare Residential Proxies with dedicated username/password authentication
- Generic HTTP/HTTPS proxies via standard environment variables or CLI arguments
This isn't an afterthought—it's based on the battle-tested youtube-transcript-api library's IP ban mitigation strategies.
4. Polyglot by Design
Language defaults to English (en), but the server can retrieve transcripts in any available language that YouTube supports. The get_available_languages tool lets you discover options before requesting, eliminating guesswork.
5. Multiple Deployment Paths
Whether you're a uv enthusiast, Docker devotee, or Claude Desktop power user, there's an installation path tailored to your workflow. No lock-in, no friction.
Real-World Use Cases Where It Dominates
Use Case 1: AI-Powered Research Synthesis
You're building a literature review across 50 technical talks from PyCon and RustConf. Instead of watching 100+ hours, your AI agent:
- Pulls transcripts via
get_transcript - Identifies key themes with your LLM
- Uses
get_timed_transcriptto generate timestamped citations - Exports a structured report with verifiable references
Time saved: 40+ hours. Accuracy: higher than human note-taking.
Use Case 2: Educational Content Platforms
Building a learning management system? Students paste YouTube URLs, and your backend:
- Validates content with
get_video_info - Generates searchable transcripts with
get_transcript - Creates interactive study guides linking to specific moments via
get_timed_transcript
No manual transcription costs. No copyright ambiguity from full video downloads.
Use Case 3: Accessibility Enhancement Pipelines
Your organization needs WCAG-compliant alternatives for video content. mcp-youtube-transcript feeds into:
- Screen reader optimization workflows
- Multi-language subtitle generation
- Content summarization for cognitive accessibility
Use Case 4: Competitive Intelligence & Monitoring
Track competitor product launches, CEO interviews, or technical announcements:
- Automated transcript retrieval on new uploads
- Sentiment analysis on spoken content
- Trend detection across video metadata
The get_video_info tool exposes title, description, and channel data for correlation analysis.
Use Case 5: Developer Documentation from Screencasts
That 45-minute Django deployment tutorial? Transcribe it, chunk it, and transform it into:
- Step-by-step written guides
- Copy-pasteable command blocks
- Troubleshooting decision trees
Your future self—and your team—will thank you.
Step-by-Step Installation & Setup Guide
Prerequisites
You'll need uv installed—a blazing-fast Python package manager and runner from Astral. If you haven't switched from pip yet, this is your excuse.
# Install uv (macOS/Linux)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Or via Homebrew
brew install uv
Option A: Claude Desktop (Recommended for Most Users)
The one-click method: Download mcp-youtube-transcript.mcpb from the Releases page, then double-click or drag into Claude Desktop's Settings window.
The manual configuration (for customization):
Edit your claude_desktop_config.json:
{
"mcpServers": {
"youtube-transcript": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/jkawamoto/mcp-youtube-transcript",
"mcp-youtube-transcript"
]
}
}
}
Restart Claude Desktop. Done.
Option B: Goose Integration
Follow Block's official tutorial: YouTube Transcript Extension. Goose handles the plumbing automatically.
Option C: LM Studio
Click the deep-link badge on the repository—or use this direct install URL:
https://lmstudio.ai/install-mcp?name=youtube-transcript&config=eyJjb21tYW5kIjoidXZ4IiwiYXJncyI6WyItLWZyb20iLCJnaXQraHR0cHM6Ly9naXRodWIuY29tL2prYXdhbW90by9tY3AteW91dHViZS10cmFuc2NyaXB0IiwibWNwLXlvdXR1YmUtdHJhbnNjcmlwdCJdfQ%3D%3D
Option D: Docker Deployment
For production environments or isolated deployments:
# Pull the official image
docker pull mcp/server/youtube_transcript
# Run with environment variables for proxy support
docker run -e HTTP_PROXY=http://proxy.company.com:8080 \
-e HTTPS_PROXY=https://proxy.company.com:8080 \
mcp/server/youtube_transcript
Customizing Response Limits
For smaller LLM context windows, add --response-limit:
{
"mcpServers": {
"youtube-transcript": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/jkawamoto/mcp-youtube-transcript",
"mcp-youtube-transcript",
"--response-limit",
"15000"
]
}
}
}
This caps each response at 15,000 characters—perfect for constrained environments.
Proxy Configuration
Webshare Residential Proxy:
export WEBSHARE_PROXY_USERNAME=your_username
export WEBSHARE_PROXY_PASSWORD=your_password
Generic proxy:
export HTTP_PROXY=http://proxy.example.com:3128
export HTTPS_PROXY=https://proxy.example.com:3128
Or pass as CLI arguments: --http-proxy, --https-proxy, --webshare-proxy-username, --webshare-proxy-password.
REAL Code Examples from the Repository
Let's examine the actual implementation patterns from mcp-youtube-transcript and understand how to leverage them effectively.
Example 1: Basic Claude Desktop Configuration
The foundation of any integration starts with the MCP server declaration. Here's the exact configuration from the repository's documentation:
{
"mcpServers": {
"youtube-transcript": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/jkawamoto/mcp-youtube-transcript",
"mcp-youtube-transcript"
]
}
}
}
What's happening here? The uvx command executes Python packages without permanent installation—think of it as npx for Python. The --from flag specifies the source repository, and the final argument names the entry point. This ephemeral execution keeps your system clean while ensuring you always run the latest version. The mcpServers key registers this capability under the identifier youtube-transcript, which Claude uses to route tool calls.
Example 2: Custom Response Limit Configuration
For production deployments with token-constrained models, the repository provides this tuned configuration:
{
"mcpServers": {
"youtube-transcript": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/jkawamoto/mcp-youtube-transcript",
"mcp-youtube-transcript",
"--response-limit",
"15000"
]
}
}
}
The critical addition: --response-limit 15000 overrides the default 50,000-character threshold. This is essential when working with models like GPT-3.5-turbo (16K context) or local quantized models with severely restricted windows. The server now paginates any transcript exceeding 15,000 characters, returning next_cursor tokens for sequential retrieval. Your client code must handle pagination loops—this isn't automatic streaming, but structured chunking with continuation tokens.
Example 3: Docker Deployment with Proxy Environment
For enterprise environments requiring proxy traversal, the Docker Hub integration supports standard environment variables. While the repository references Docker Hub for full documentation, the pattern follows container best practices:
# Example Docker run with proxy configuration
docker run \
-e HTTP_PROXY=http://corporate-proxy.internal:8080 \
-e HTTPS_PROXY=https://corporate-proxy.internal:8080 \
-e WEBSHARE_PROXY_USERNAME=residential_user \
-e WEBSHARE_PROXY_PASSWORD=residential_pass \
mcp/server/youtube_transcript
Why this matters: YouTube aggressively rate-limits and IP-blocks automated requests. The youtube-transcript-api dependency implements multiple fallback strategies, and proxy support extends these mitigations. The WEBSHARE_* variables activate residential proxy rotation—critical for high-volume applications where datacenter IPs trigger immediate blocks. The HTTP_PROXY/HTTPS_PROXY variables handle standard corporate egress requirements.
Example 4: Simulated Tool Invocation Pattern
While the repository doesn't expose direct Python API calls (it's strictly an MCP server), understanding the tool schema enables client-side implementation. Based on the documented parameters, here's how you'd structure a get_timed_transcript request in an MCP client:
# Conceptual client-side invocation using the mcp SDK
from mcp import ClientSession, StdioServerParameters
# Configure server launch parameters
server_params = StdioServerParameters(
command="uvx",
args=[
"--from",
"git+https://github.com/jkawamoto/mcp-youtube-transcript",
"mcp-youtube-transcript",
"--response-limit", "15000" # Custom limit for safety
]
)
async with ClientSession(server_params) as session:
# Initialize the connection
await session.initialize()
# Call get_timed_transcript with full parameter set
result = await session.call_tool(
"get_timed_transcript",
arguments={
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"lang": "en", # Explicit language selection
"next_cursor": None # Initial request has no cursor
}
)
# Handle pagination if present
if result.next_cursor:
continuation = await session.call_tool(
"get_timed_transcript",
arguments={
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"lang": "en",
"next_cursor": result.next_cursor # Pass cursor for next chunk
}
)
Key implementation detail: The next_cursor parameter enables stateful pagination across multiple LLM turns. If a transcript exceeds your --response-limit, the first response contains a cursor string. Your application must persist this cursor and provide it in subsequent requests—either automatically in a loop, or by prompting the user to continue. This design prevents context window overflow while maintaining conversational flow.
Advanced Usage & Best Practices
Pagination Handling Strategies
Automatic loop approach:
async def get_full_transcript(session, url, lang="en"):
"""Retrieve complete transcript handling all pagination."""
chunks = []
cursor = None
while True:
result = await session.call_tool(
"get_transcript",
{"url": url, "lang": lang, "next_cursor": cursor}
)
chunks.append(result.content)
if not result.next_cursor:
break
cursor = result.next_cursor
return "\n".join(chunks)
Language Discovery Pattern
Always call get_available_languages before assuming transcript availability:
# Verify language support before main request
lang_check = await session.call_tool(
"get_available_languages",
{"url": video_url}
)
preferred = "de" if "de" in lang_check.languages else "en"
Metadata-First Architecture
Use get_video_info to validate URLs and extract context before transcript retrieval. This prevents wasted calls on private, deleted, or non-transcribed videos.
Caching Strategy
Transcripts are immutable post-upload. Implement aggressive caching—Redis, SQLite, or even filesystem storage keyed by video ID—to eliminate redundant API calls and dramatically improve response times.
Comparison with Alternatives
| Feature | mcp-youtube-transcript | YouTube Data API | Browser Extensions | Manual Services |
|---|---|---|---|---|
| Cost | Free | Quota-limited, paid tiers | Often free/paid | $0.25-2.00/min |
| Setup Complexity | Low (uvx install) | High (OAuth, API keys) | Medium | N/A |
| AI Integration | Native (MCP) | Requires custom wrapper | None | None |
| Batch Processing | Excellent | Rate limited | Manual only | Expensive |
| Timestamp Accuracy | Precise | Varies | Varies | High |
| Proxy Support | Built-in | Limited | None | N/A |
| Language Detection | Automatic | Manual | Manual | Manual |
| Pagination | Intelligent | None | N/A | N/A |
The verdict: For AI-augmented workflows, mcp-youtube-transcript eliminates friction that competitors can't address. The YouTube Data API demands OAuth dance and quota management. Browser extensions trap you in manual clicking. Professional transcription services bankrupt you at scale. Only this MCP server delivers programmatic, AI-native, cost-free transcript access with enterprise-grade reliability features.
FAQ: Your Burning Questions Answered
Does mcp-youtube-transcript require a YouTube API key?
No. It uses the youtube-transcript-api library to extract captions directly, bypassing Google's API infrastructure entirely. No quota limits. No OAuth. No billing surprises.
What videos work with this tool?
Any YouTube video with manually uploaded or auto-generated captions that's publicly accessible. Private videos, livestreams without VOD, and creator-disabled captioning will return errors—use get_video_info to validate first.
Can I use this with OpenAI's ChatGPT or other non-MCP clients?
Not directly—MCP is a specific protocol. However, you can bridge via middleware: run the server with an MCP-to-HTTP proxy, or use a framework like FastMCP to expose REST endpoints.
How does pagination affect my LLM's context window?
Pagination protects your context window. Instead of crashing with a 100K-character transcript, you receive manageable chunks. Design your agent to summarize each chunk iteratively, or store them for later retrieval via RAG.
Is this legal for commercial use?
The tool operates under MIT License. Transcript extraction falls under YouTube's Terms of Service for personal, non-commercial use. For commercial applications, consult legal counsel regarding data usage rights and consider YouTube's API Terms for compliance frameworks.
What happens if YouTube blocks my IP?
The proxy support has you covered. Rotate through residential proxies via Webshare, or route through corporate HTTP/HTTPS proxies. The underlying library implements multiple fallback strategies including cookie-based session persistence.
Can I extract transcripts in bulk?
Yes, but implement rate limiting and caching. The tool itself doesn't throttle, but YouTube's servers will. Respectful automation—1-2 requests per second with caching—ensures sustainable operation.
Conclusion: Your Transcript Workflow Will Never Be the Same
mcp-youtube-transcript isn't just another utility—it's a fundamental shift in how AI systems consume video knowledge. By collapsing the friction between YouTube's visual medium and LLM-native text processing, Junpei Kawamoto has created infrastructure that amplifies every downstream application.
The combination of zero-cost operation, intelligent pagination, multi-client compatibility, and battle-tested proxy support makes this the definitive solution for developers serious about video content automation. Whether you're building research agents, educational platforms, or accessibility pipelines, this MCP server belongs in your toolkit.
The painful era of manual transcription, broken browser extensions, and API quota anxiety is over.
Ready to transform how your AI interacts with YouTube? Head to github.com/jkawamoto/mcp-youtube-transcript now—star the repository, try the installation, and join the growing community of developers who've stopped wasting hours on video notes. Your future productive self is already thanking you.
What's the first video you'll transcribe? Drop your answer in the comments—and don't forget to share this with that colleague still copy-pasting from YouTube captions.