Youtube MCP
Fast, minimal, and reliable YouTube MCP for AI agents.
Install
Claude Code
claude mcp add youtube -- uvx youtube-watch-mcp
Before publish (local dev): point
uvxat the checkout instead:claude mcp add youtube -- uvx --from /path/to/youtube-mcp youtube-watch-mcp
Claude Desktop / Codex / other MCP clients
Add to the client's MCP config:
{
"mcpServers": {
"youtube": {
"command": "uvx",
"args": ["youtube-watch-mcp"]
}
}
}
CLI only
uvx --from youtube-watch-mcp youtube-watch-mcp-cli info "https://youtu.be/VIDEO_ID"
That's it. uvx pulls youtube-watch-mcp, yt-dlp, and dependencies into an isolated environment automatically. Nothing to install globally.
Optional:
ffmpegon PATH is required only for--asr(speech-to-text on caption-less videos). Core transcript extraction needs nothing.
Optional API key
A YouTube Data API key is not needed to read videos. Add one only to enable cross-YouTube search:
claude mcp add youtube -e YOUTUBE_API_KEY=your_key -- uvx youtube-watch-mcp
Transcript extraction never uses the key (YouTube only allows caption download for video owners).
Tools
| Tool | Returns | Purpose |
|---|---|---|
get_info(url) |
title, duration, chapters, has_captions | Cheap probe before fetching. |
get_transcript(url, asr=False) |
file path + word count + preview | Clean transcript to disk. Returns path, not full text. |
search_transcript(url, query) |
timestamped snippets | Grep a long video without loading it all. |
get_segment(url, start, end) |
text slice | Read one time range. |
Design principle: pull, don't dump. Transcripts write to a local cache file; tools return a path and a short preview. The agent reads or searches on demand — long videos never flood the context.
/get_info $url
/get_transcript $url
/search_transcript $url
/get_segment $url
Architecture
Adapters (thin): cli.py mcp_server.py skill
│ call
Core (all logic): fetch → clean → chunk → cache
│ uses
Backends: youtube-transcript-api · yt-dlp · faster-whisper
Fetch fallback chain:
youtube-transcript-api— fastest, no downloadyt-dlpauto-captionsyt-dlpmanual captions--asr: audio → localfaster-whisper
On yt-dlp failure the engine self-updates yt-dlp and retries once — most breakage is a stale yt-dlp.
Caching: results are keyed by video ID under ~/.cache/youtube-mcp/<id>/. Repeat calls are instant.
Cleaning: auto-captions are de-duplicated (rolling-caption overlap removed), stripped of timestamps and [Music] noise, and whitespace-collapsed before the agent ever sees them.
Requirements
- Python 3.11+ (managed automatically by
uvx) ffmpeg— optional, only for--asr
Docs
- FAQ — keyless? no-caption videos?
--fromgotcha? long-video handling? - Architecture — core/adapter split, fetch chain, the cleaning moat, cache.
License
MIT
Metadata
Release files for youtube-watch-mcp 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| youtube_watch_mcp-0.1.4.tar.gz | 1.3 MB | Without provenance | Details for youtube_watch_mcp-0.1.4.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| youtube_watch_mcp-0.1.4-py3-none-any.whl | Python 3 | none | any | Details for youtube_watch_mcp-0.1.4-py3-none-any.whl |
Total release size: 1.3 MB
Release files / youtube_watch_mcp-0.1.4.tar.gz
| Download URL | youtube_watch_mcp-0.1.4.tar.gz |
|---|---|
| Size | 1.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c431a2c90edcb79b178b37967bedebcf312060e968f8eee6041bc9d0dac07da4
|
|
BLAKE2b-256 checksum How to use checksums |
c60ba4da51531e0269a722611357ef31a58d2d18aca61b672996290e67798456
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Release files / youtube_watch_mcp-0.1.4-py3-none-any.whl
| Download URL | youtube_watch_mcp-0.1.4-py3-none-any.whl |
|---|---|
| Size | 14.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
90c09dcc1f7256982c3695a4a247bdb38c6690709459f7749ef6844357be5393
|
|
BLAKE2b-256 checksum How to use checksums |
4d3308759869830f2e6087cac77bac13178c441534382384e9c732f346da560b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Security for youtube-watch-mcp 0.1.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.