Provides tools for downloading YouTube videos and playlists, retrieving rich video metadata, and managing a local library with asynchronous job tracking and status monitoring.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@YouTube Video Downloader MCPdownload the video at https://www.youtube.com/watch?v=dQw4w9WgXcQ"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
YouTube Video Downloader
A comprehensive collection of Python tools for downloading YouTube content using yt-dlp, including both simple scripts and an advanced MCP server.
Tools
1. Simple Scripts
Single Video Downloader (youtube_downloader.py)
Downloads individual YouTube videos with progress tracking.
Playlist Downloader (playlist_downloader.py)
Downloads entire YouTube playlists with organization.
2. MCP Server (youtube_mcp_server_fastmcp.py)
An advanced MCP (Model Context Protocol) server using FastMCP that provides:
Asynchronous video and playlist downloads
Job tracking and status monitoring
SQLite database for metadata storage
Comprehensive library management
Claude Desktop integration
Features
Simple Scripts
Single Video Downloader
✅ Prompts user for YouTube URL
✅ Downloads the best quality video available
✅ Creates a
downloadsfolder for saved videos✅ Shows download progress
✅ Handles errors gracefully
✅ Auto-installs yt-dlp if not present
✅ No pytube dependency (as requested)
Playlist Downloader
✅ Prompts user for YouTube playlist URL
✅ Downloads entire playlists (up to 50 videos by default)
✅ Creates organized folders for each playlist
✅ Shows playlist information before downloading
✅ Downloads videos with playlist index numbers
✅ Auto-installs yt-dlp if not present
✅ Confirmation prompt before downloading large playlists
MCP Server Features
✅ Asynchronous Downloads: Start downloads and get job IDs for tracking
✅ Job Status Monitoring: Check download progress and status
✅ Metadata Database: SQLite database with video/playlists info
✅ Library Management: Browse all downloaded content
✅ Error Handling: Comprehensive error tracking and reporting
✅ Concurrent Downloads: Multiple downloads can run simultaneously
✅ Rich Metadata: Stores titles, descriptions, duration, file paths, etc.
Requirements
Python 3.11+
yt-dlp (automatically installed if missing)
MCP SDK (automatically installed if missing)
Usage
Single Video Download
Run the single video downloader:
python3 youtube_downloader.pyEnter a YouTube URL when prompted
The video will be downloaded to the
downloadsfolder
Playlist Download
Run the playlist downloader:
python3 playlist_downloader.pyEnter a YouTube playlist URL when prompted
Review playlist information and confirm download
All videos will be downloaded to a playlist-specific folder
MCP Server Usage
The MCP server provides four main tools for asynchronous downloading and library management.
Using with uv (Recommended)
Install dependencies and run:
cd /Users/granludo/code/testing/youtube_download uv sync uv run python start_server.py
Direct Python Usage
python3 youtube_mcp_server_fastmcp.pyAvailable MCP Tools
download_video - Start async video download
download_playlist - Start async playlist download
get_download_status - Monitor download progress
cancel_download - Cancel running downloads
list_downloads - Browse all download jobs
get_video_metadata - Get video info without downloading
Examples
Single Video Example
$ python3 youtube_downloader.py
==================================================
YouTube Video Downloader
==================================================
Enter YouTube URL: https://www.youtube.com/watch?v=dQw4w9WgXcQ
📥 Downloading video from: https://www.youtube.com/watch?v=dQw4w9WgXcQ
✓ Download completed!
📁 Files saved to: /path/to/downloadsPlaylist Example
$ python3 playlist_downloader.py
==================================================
YouTube Playlist Downloader
==================================================
Enter YouTube Playlist URL: https://www.youtube.com/playlist?list=PLrAXtmRdnEQy5rhxJj7aKre_2qO5yQ5nI
📊 Analyzing playlist...
📋 Playlist name: My Music Playlist
🎥 Number of videos: 25
🔄 Download 25 videos? (y/N): y
📥 Downloading playlist: My Music Playlist
✓ Playlist download completed!
📁 All videos saved to: /path/to/playlists/My Music PlaylistMCP Server Examples
Using with uv
Install and run the server:
cd /Users/granludo/code/testing/youtube_download uv sync # Install dependencies uv run python start_server.py # Start serverThe server will start silently (no stdout output, as required by MCP protocol)
MCP Tool Examples
Tool 1: Download Single Video
{
"name": "download_video",
"arguments": {
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"output_dir": "downloads"
}
}Response: "Download started successfully. Job ID: abc123-def456-ghi789"
Tool 2: Download Playlist
{
"name": "download_playlist",
"arguments": {
"url": "https://www.youtube.com/playlist?list=PLrAXtmRdnEQy5rhxJj7aKre_2qO5yQ5nI",
"output_dir": "playlists"
}
}Response: "Playlist download started successfully. Job ID: def456-ghi789-jkl012"
Tool 3: Check Download Status
{
"name": "get_download_status",
"arguments": {
"job_id": "abc123-def456-ghi789"
}
}Response: JSON object with job status, progress, and metadata
Tool 4: List Downloads
{
"name": "list_downloads",
"arguments": {}
}Response:
📹 VIDEOS:
- Never Gonna Give You Up (ID: video-uuid-123)
Path: /downloads/Never Gonna Give You Up.mp4
Duration: 213s
📁 PLAYLISTS:
- Music Collection (ID: playlist-uuid-456)
Videos: 25
Path: /playlists/Music CollectionComplete Workflow Example
Configure Claude Desktop - Add the MCP server to your
claude_desktop_config.json:{ "mcpServers": { "youtube-mcp-tools": { "command": "/opt/homebrew/bin/uv", "args": [ "--directory", "/Users/granludo/code/testing/youtube_download", "run", "start_server.py" ] } } }Download a video in Claude:
"Download this YouTube video: https://www.youtube.com/watch?v=jNQXAC9IVRw"The server will start the download and return a job ID immediately.
Check download status:
"What's the status of that download?"List all downloads:
"Show me all my download jobs"
Notes
Simple Scripts
Both scripts will automatically install yt-dlp if it's not found
Videos are saved with their original titles
Playlist videos are numbered by their position in the playlist
The playlist downloader limits downloads to 50 videos by default (adjustable)
Both scripts handle keyboard interrupts gracefully
Downloads are organized in separate folders for videos vs playlists
MCP Server
Uses FastMCP for simplified MCP server implementation
Creates
youtube_library.dbSQLite database for metadataSupports up to 3 concurrent downloads
Job tracking with unique UUIDs for each download
Rich metadata storage including titles, descriptions, duration, file paths
Asynchronous downloads that return immediately with job IDs
Comprehensive error handling and logging
Compatible with Claude Desktop and other MCP clients
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.