yt-curator-mcp
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., "@yt-curator-mcpscan my YouTube inventory for duplicates"
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.
yt-curator π¬π§Ή
YouTube playlist curation engine β inventory, deduplicate, merge, clean up, and reorganise thousands of playlists spanning 20 years.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β yt-curator β
β β
β βββββββββββ βββββββββββ ββββββββββββββββββββββ β
β β CLI β β MCP β β Python Library β β
β β (Click)β β (FastMCP)β β (import yt_curator)β β
β ββββββ¬βββββ ββββββ¬βββββ βββββββββββ¬βββββββββββ β
β β β β β
β ββββββββ¬ββββββββββββββββββββββββ β
β β β
β ββββββββββΌβββββββββ β
β β YouTube Data β β
β β API v3 + OAuthβ β
β β + Local SQLite β β
β βββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββFeatures
Full inventory β scan all your playlists and every video in them into a local SQLite database
Dead video detection β find deleted, private, and blocked videos across all playlists
Cross-playlist deduplication β find every video that appears in 2+ playlists
Intra-playlist dedup β remove duplicate copies within a single playlist
Merge playlists β move all videos from one playlist into another, then delete the source
Bulk delete β remove empty or unwanted playlists
Merge suggestions β AI-free title-similarity analysis to find consolidation candidates
Privacy audit β see which playlists are public vs private
Dry-run everything β all destructive operations preview before executing
Related MCP server: playlist-agent
Three Interfaces
1. CLI (yt-curator)
# OAuth setup (one-time)
yt-curator auth
# Full inventory scan
yt-curator inventory
# Reports
yt-curator report
yt-curator find-dupes
yt-curator find-dead
# Curation (try --dry-run first!)
yt-curator merge PL_source_id PL_target_id --dry-run
yt-curator dedup PL_playlist_id --dry-run
yt-curator delete PL_playlist_id --dry-run
# Start MCP server
yt-curator serve-mcp2. MCP Server (yt-curator-mcp)
Register as a backend for any MCP client (Claude Desktop, Hermes, Cursor, etc.).
stdio mode (default β plug-and-play with Claude Desktop):
{
"mcpServers": {
"yt-curator": {
"command": "yt-curator",
"args": ["serve-mcp"]
}
}
}SSE mode (register with the mcp-gateway):
yt-curator serve-mcp --host 0.0.0.0 --port 39401Then add to your gateway config:
backends:
- name: yt-curator
type: sse
url: http://127.0.0.1:39401Available MCP tools:
Tool | Description |
| List all playlists in the inventory DB |
| List all videos in a specific playlist with status |
| Full scan β all playlists, items, and video status |
| Summary stats from inventory |
| Cross-playlist duplicate detection |
| Dead/private/blocked videos |
| Zero-video playlists |
| Title-similarity merge candidates |
| Merge with dry-run mode |
| Delete with dry-run mode |
| Bulk dead video removal |
| Check OAuth credentials |
3. Python Library (import yt_curator)
from yt_curator.core.client import YouTubeClient
from yt_curator.core.inventory import scan_all
client = YouTubeClient()
report = scan_all(client)
print(f"Scanned {report.total_playlists} playlists")Quota Budget
YouTube Data API v3 default: 10,000 units/day (free).
Operation | Cost per call | Your 900-playlist scan |
| 1 | ~18 calls |
| 1 | ~900 calls |
| 1 | ~120 calls |
| 50 | per operation |
| 50 | per operation |
Full inventory scan | ~1,200 units β |
A full scan uses ~12% of your daily quota, leaving 8,800 units for curation writes (about 175 write operations per day).
Setup
One-time: Google Cloud + OAuth
Go to Google Cloud Console
Create a project β Enable YouTube Data API v3
APIs & Services β Credentials β Create Credentials β OAuth client ID
Application type: Desktop app
Download
client_secret.json
Save it to
~/.config/yt-curator/client_secret.jsonRun
yt-curator authβ opens a browser for Google login
Tip for headless servers: Run
yt-curator authonce on a desktop machine with a browser, then copy~/.config/yt-curator/token.jsonto the server.
NixOS Module
Add yt-curator to your flake inputs:
{
inputs.yt-curator = {
url = "github:telos-systems/yt-curator";
inputs.nixpkgs.follows = "nixpkgs";
};
}Then enable the module:
{
imports = [ yt-curator.nixosModules.default ];
services.yt-curator = {
enable = true;
mcpServer.enable = true;
mcpServer.port = 39401;
credentials.clientSecretPath = config.sops.secrets."yt-curator/client_secret".path;
};
}Or use the flake directly:
nix run github:telos-systems/yt-curator -- inventory
nix run github:telos-systems/yt-curator#mcp -- serve-mcpProject Structure
yt-curator/
βββ src/yt_curator/
β βββ __init__.py # Package entry
β βββ cli/app.py # Click CLI (11 commands)
β βββ mcp/server.py # FastMCP server (12 tools)
β βββ core/
β β βββ auth.py # OAuth 2.0 + token storage
β β βββ client.py # YouTube API client wrapper
β β βββ inventory.py # Full scan β SQLite
β β βββ curator.py # Merge, delete, dedup operations
β β βββ dedup.py # Cross-playlist dedup + suggestions
β β βββ __init__.py # Data models (dataclasses)
β βββ db/schema.py # SQLite schema
βββ nix/module.nix # NixOS module
βββ flake.nix # Nix flake
βββ pyproject.toml # Python project metadata
βββ LICENSE # MIT
βββ README.mdWhy This Exists
YouTube's web UI has no bulk operations. If you have 900+ playlists accumulated over 20 years, there's no way to:
Find which videos are dead across all playlists
See which videos appear in 10 different playlists
Merge similar playlists
Delete 50 empty playlists in one go
Existing MCP servers for YouTube are read-only analytics tools or basic CRUD wrappers. None do inventory, dedup, merge, or bulk curation. This fills that gap.
Roadmap
Core: inventory, dedup, merge, delete, dead video removal
CLI: 11 commands with --dry-run
MCP server: 12 tools (stdio + SSE)
Nix flake + NixOS module
AI-assisted reorganisation (local LLM via Ollama)
Playlist-as-code (declarative YAML β desired state)
GitHub release + PyPI publish
Scheduled inventory drift detection (weekly cron)
License
MIT Β© 2026 Telos Systems / Danny Poulson
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server for bulk Spotify operations enabling batch playlist creation, library exports, and large-scale library management with confidence scoring and human-in-the-loop for uncertain matches.Last updated332MIT
- Flicense-qualityCmaintenanceEnables natural-language creation, management, and optimization of Spotify playlists via MCP tools like search, generate, analyze, and recommend.Last updated
- Flicense-qualityBmaintenanceAn MCP server for managing YouTube Music playlists via Claude. Add and remove songs, create playlists, and ask Claude to suggest music β all through conversation.Last updated
- Flicense-qualityCmaintenanceEnables AI models to interact with YouTube content through 18 MCP tools for videos, transcripts, channels, and playlists.Last updated37
Related MCP Connectors
YouTube MCP β wraps the YouTube Data API v3 (BYO API key)
Manage SRG+ hubs, channels, content, assets, users, and workspaces from any MCP-aware AI agent.
List, share, upload, and manage Slideless HTML presentations from any MCP host.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/GeniusTechnoMystic/yt-curator'
If you have feedback or need assistance with the MCP directory API, please join our Discord server