yt-curator-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_playlistsA | List all playlists in the inventory database. Run |
| get_playlist_contentsB | List all videos in a specific playlist. |
| scan_inventoryA | Run a full inventory scan: list all playlists, all items, check video status. This is the primary data-collection command. Run this first before any curation operations. Uses the YouTube Data API — consumes ~1,200 quota units for a typical 900-playlist account. |
| curation_reportA | Generate a summary report from the inventory database. Shows playlist/video counts, dead videos, duplicates, and empty playlists.
Requires that |
| find_duplicatesA | Find videos that appear in multiple playlists. Args: min_appearances: Minimum number of playlists a video must appear in (default: 2, meaning any duplication at all). |
| find_dead_videosB | Find deleted, private, or blocked videos across all playlists. |
| find_empty_playlistsB | Find playlists with 0 videos. |
| suggest_mergesA | Suggest playlist merge candidates based on title similarity. Useful for consolidating fragmented playlists (e.g. "Tech 2020" + "Tech 2021"). |
| merge_playlistsA | Move all videos from the SOURCE playlist into the TARGET, then delete SOURCE. Skips videos already present in the target. By default runs in dry_run mode — set dry_run=False to actually execute. Args: source_id: Playlist ID to move videos from (e.g. PL...) target_id: Playlist ID to move videos into dry_run: If True (default), only preview; set False to execute |
| delete_playlistA | Delete a playlist and all its contents. By default runs in dry_run mode — set dry_run=False to actually delete. Args: playlist_id: The YouTube playlist ID to delete (e.g. PL...) dry_run: If True (default), only preview; set False to execute |
| remove_dead_videosA | Remove all dead/private/blocked videos from their playlists. By default runs in dry_run mode — set dry_run=False to actually remove. Args: dry_run: If True (default), only preview; set False to execute |
| auth_statusA | Check whether OAuth credentials are configured and valid. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 12 tools
Most tools target distinct resources/actions, but list_playlists and scan_inventory overlap slightly since both return playlist lists; the descriptions clarify that scan_inventory is the primary data-collection command. Overall, boundaries are clear.
The set mostly follows a verb_noun pattern (list_*, get_*, find_*, merge_*, delete_*, remove_*). Exceptions like 'curation_report' and 'auth_status' are minor and still readable, so consistency is good but not perfect.
With 12 tools, the server is well-scoped for a playlist curation domain. Each tool earns its place, covering inventory scanning, analysis, and actionable curation without unnecessary bloat.
The surface covers the full curation workflow: scan, analyze, merge, delete, and remove dead videos. Minor gaps exist (e.g., no playlist creation/renaming or single-video moves), but these are peripheral to the core purpose.