yt-feed-mcp
Allows fetching latest videos from channels, listing subscriptions, and mass unsubscribing from all channels via browser automation and InnerTube API.
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-feed-mcplist my subscriptions"
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-feed
CLI tool for YouTube: fetch latest videos from channels, list subscriptions, and mass-unsubscribe from all channels using browser automation.
Features
feed — get N latest videos from a list of YouTube channels (via yt-dlp, no API key)
list-subs — list every channel your account is subscribed to
unsub — unsubscribe from ALL channels at once via YouTube's InnerTube API
MCP server — expose unsub tools via Model Context Protocol (for AI assistants like opencode)
Related MCP server: Chrome MCP Server
Installation
python -m venv .venv
.venv\Scripts\pip install yt-dlp requests playwright mcp
.venv\Scripts\playwright install chromiumOr install in editable mode:
.venv\Scripts\pip install -e .Usage
Fetch video feed
.venv\Scripts\python -m yt_feed.cli feed channels.txt -n 5 -o out.txt
# or after pip install -e .:
yt-feed feed channels.txt -n 5channels.txt — one channel URL per line (# for comments).
List subscriptions
yt-feed list-subs --browser edgeUnsubscribe from all channels
# Preview only (no changes)
yt-feed unsub --browser edge --dry-run
# Real unsubscribe (prompts for confirmation)
yt-feed unsub --browser edge
# Skip confirmation
yt-feed unsub --browser edge --yes
# Custom profile directory
yt-feed unsub --browser chrome --profile-dir "D:\User Data" --yesNote: Close the browser before running unsub — Playwright's launch_persistent_context cannot open a profile that's already in use.
MCP server
Run the MCP server via stdio:
yt-feed-mcpThen configure in opencode.json:
{
"mcp": {
"yt-unsub": {
"type": "local",
"command": [".venv\\Scripts\\python", "-m", "yt_feed.mcp_server"],
"enabled": true
}
}
}Available tools:
Tool | Description |
| List all subscribed channels |
| Unsubscribe from all channels (requires |
| Unsubscribe from specific channel IDs |
| Close the managed browser (free resources) |
Browsers
Flag | Browser |
| Microsoft Edge (default) |
| Google Chrome |
Profile paths
The tool auto-detects the browser profile directory. Override with --profile-dir <path> (points to the User Data directory, not the Default subfolder).
Browser | Windows | macOS | Linux |
Edge |
|
|
|
Chrome |
|
|
|
How the unsubscribe works
Playwright launches the browser with your profile (
launch_persistent_context) — this gives access to your YouTube sessionThe
/feed/channelspage is loaded and scrolled to the bottom; real UC channel IDs are extracted from the DOM (el.data.channelId)For each channel, a
POSTrequest is sent to InnerTube API/subscription/unsubscribefrom within the browser contextAuthorization: the
Authorization: SAPISIDHASH <ts>_<sha1>header is computed client-side from the SAPISID cookie viacrypto.subtle.digest('SHA-1', ...)
Key details
Cookies are never exported — the browser sends them natively via
credentials: 'include'yt-dlp cannot decrypt DPAPI-encrypted Edge cookies on Windows — Playwright is required
Channel IDs must be
UCxxxxx(not@handle)300 ms delay between requests to avoid rate limiting
Requirements
Python ≥ 3.10
Edge or Chrome browser with a logged-in YouTube account
Windows, macOS, or Linux
Project structure
yt-feed/
├── yt_feed/
│ ├── __init__.py
│ ├── cli.py # CLI entry point (argparse, commands: feed, list-subs, unsub)
│ ├── feed.py # Video feed via yt-dlp
│ ├── unsub.py # Mass unsubscribe via Playwright + InnerTube API
│ └── mcp_server.py # MCP server exposing tools via Model Context Protocol
├── channels.txt # Channel list for the feed command
├── pyproject.toml # Package config
├── AGENTS.md # Agent instructions (opencode)
└── README.mdThis 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.
Latest Blog Posts
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/ashybulakstroy/youtube-unsubscribe-all-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server