YouTube MCP Server
Distraction-free YouTube for AI assistants. Get your subscribed channels, latest videos, and transcripts without algorithm recommendations.
Features
- No Distractions: Lists only your subscribed content
- Direct Links: Every video has a clickable link
- Read Mode: Get transcripts to read instead of watching
- No OAuth: Uses browser cookies - much simpler
- Caching: Fast responses for repeated queries
Available Tools
| Tool | Description |
|---|---|
get_subscribed_channels |
List all your subscribed channels |
get_latest_videos |
Get latest videos from subscriptions with direct links |
get_video_transcript |
Get transcript of a video (read instead of watching) |
search_subscribed_channels |
Search within your subscriptions |
get_channel_videos |
Get videos from a specific channel |
setup_youtube_auth |
Get authentication setup instructions |
Setup
1. Install Dependencies
cd /home/naresh/Projects/youtube-mcp-python
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
2. Export YouTube Cookies
Using Chrome:
yt-dlp --cookies-from-browser chrome --cookies auth/cookies.txt
Using Firefox:
yt-dlp --cookies-from-browser firefox --cookies auth/cookies.txt
Note: You must be logged into YouTube in your browser first.
3. Add to OpenCode
Add to ~/.config/opencode/opencode.jsonc:
{
"mcp": {
"youtube": {
"type": "local",
"command": ["/home/naresh/Projects/youtube-mcp-python/.venv/bin/python", "/home/naresh/Projects/youtube-mcp-python/main.py"],
"enabled": true
}
}
}
Usage Examples
Get latest videos:
Use get_latest_videos with max_results=15
Read a video transcript:
Use get_video_transcript with video_id="dQw4w9WgXcQ"
Search your subscriptions:
Use search_subscribed_channels with query="python tutorial"
Get a specific channel's videos:
Use get_channel_videos with channel_id="UCwX6rVkOq0"
Project Structure
youtube-mcp-python/
├── main.py # Entry point
├── mcp_server.py # MCP tool definitions
├── config.py # Configuration
├── requirements.txt # Dependencies
├── opencode-mcp-config.json
├── auth/
│ └── __init__.py # Cookie validation
├── services/
│ ├── __init__.py
│ ├── subscriptions_service.py
│ ├── videos_service.py
│ ├── transcripts_service.py
│ └── search_service.py
├── utils/
│ ├── __init__.py
│ ├── ytdlp_wrapper.py
│ ├── cache.py
│ └── retry.py
└── data/
└── cache/ # Cached data
Troubleshooting
"Cookies not found"→ Run the yt-dlp cookie export command
"401 Unauthorized"→ Re-export cookies (they expire when you log out)
"No subscriptions found"→ Make sure you're subscribed to channels on YouTube
Credits
Built with: