YouTube MCP Server
by Nareshtt
README.md
# 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
```bash
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:**
```bash
yt-dlp --cookies-from-browser chrome --cookies auth/cookies.txt
```
**Using Firefox:**
```bash
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`:
```json
{
"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:
- [yt-dlp](https://github.com/yt-dlp/yt-dlp) - YouTube extraction
- [MCP](https://github.com/modelcontextprotocol/python-sdk) - Model Context Protocol
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues