youtube-mcp
youtube-mcp
OAuth-authentifiziertes YouTube-MCP für Kanalinhaber — bearbeiten Sie Ihre Videometadaten, antworten Sie auf Kommentare und moderieren Sie diese, verwalten Sie Playlists, fragen Sie Kanalanalysen ab und generieren Sie KI-Thumbnails über eine ComfyUI-Brücke und weisen Sie diese zu. Geht weit über die schreibgeschützten Data API v3-Wrapper hinaus, die diesen Bereich dominieren.
Teil der MCP Server Series.
Das Konzept
Die meisten existierenden YouTube-MCPs verwenden einen API-Schlüssel für die Data API v3 — Videos suchen, öffentliche Metadaten abrufen, nur lesend. Dieses hier verwendet OAuth 2.0 (Authorization Code + PKCE), sodass es tatsächlich auf Ihren Kanal schreiben kann: Videotitel/Beschreibungen/Tags aktualisieren, auf Kommentare antworten, Spam moderieren, Playlists verwalten. Außerdem greift es auf die separate YouTube Analytics API für Kanalstatistiken zu und — das Highlight-Tool — generiert ein Thumbnail über ComfyUI und überträgt es in einem einzigen MCP-Aufruf an YouTube.
Claude, use generate_and_set_thumbnail on video abc123:
prompt: "cyberpunk hacker at keyboard, neon blue and pink, high contrast"→ ComfyUI rendert 1280×720 → youtube-mcp ruft die Bytes ab → POST an thumbnails.set. Fertig.
Installation
# npx — no install
npx @miller-joe/youtube-mcp --help
# Docker
docker run -p 9120:9120 \
-e YOUTUBE_CLIENT_ID=... \
-e YOUTUBE_CLIENT_SECRET=... \
-e YOUTUBE_TOKEN_FILE=/token/token.json \
-v $PWD/token:/token \
ghcr.io/miller-joe/youtube-mcp:latestEinrichtung — Einmalig Google Cloud (~10 Min.)
Google-Konto + YouTube-Kanal — verwenden Sie ein persönliches Konto, kein Workspace-Konto, das Sie möglicherweise verlieren könnten.
Google Cloud-Projekt unter https://console.cloud.google.com — nennen Sie es wie Sie möchten (z. B.
youtube-mcp).APIs aktivieren:
YouTube Data API v3
YouTube Analytics API
OAuth-Zustimmungsbildschirm — Extern, App-Name, Support-E-Mail; fügen Sie unter Scopes hinzu:
youtube.uploadyoutube.force-sslyt-analytics.readonly
Bleiben Sie im Testmodus. Fügen Sie sich selbst als Testnutzer hinzu (erforderlich). Als Projekteigentümer läuft Ihr Refresh-Token nicht ab.
OAuth-Client-ID erstellen: Anwendungstyp = Desktop-App. Laden Sie das JSON herunter.
Interaktiven Authentifizierungsfluss ausführen:
npx @miller-joe/youtube-mcp --auth --client-secret-file ./client_secret.jsonEin Browser öffnet sich → Sie melden sich bei dem Google-Konto an, das mit Ihrem YouTube-Kanal verknüpft ist → gewähren Sie die angeforderten Scopes. Bei Erfolg wird ein Refresh-Token unter
~/.config/youtube-mcp/token.jsongespeichert.Server starten:
npx @miller-joe/youtube-mcp --client-secret-file ./client_secret.jsonOder stellen Sie die Client-Anmeldeinformationen über Umgebungsvariablen bereit:
YOUTUBE_CLIENT_SECRET_FILEoderYOUTUBE_CLIENT_ID+YOUTUBE_CLIENT_SECRET.
Einen MCP-Client verbinden
claude mcp add --transport http youtube http://localhost:9120/mcpOder verweisen Sie Ihren MCP-Gateway auf den Streamable HTTP-Endpunkt.
Konfiguration
CLI-Flag | Umgebungsvariable | Standard | Hinweise |
|
| — | Pfad zum Google OAuth JSON |
|
| — | Alternative zur Secret-Datei |
|
| — | Alternative zur Secret-Datei |
|
|
| Speicherort für Refresh-Token |
|
|
| Bind-Host |
|
|
| Bind-Port |
|
| (nicht gesetzt — Brücke deaktiviert) | ComfyUI HTTP-URL für Brücken-Tools |
— |
|
| Standard-Checkpoint für Brücken-Tool |
Tools
Videos
list_my_videos— paginierte Liste der Uploads des authentifizierten Kanalsget_video— vollständige Details für ein Videoupdate_video_metadata— Titel / Beschreibung / Tags / Kategorie / Privatsphäredelete_video— ein Video dauerhaft löschen. Erfordertconfirm_video_title, um exakt mit dem aktuellen Titel übereinzustimmen, als Schutz gegen das Löschen des falschen Videos.
Untertitel
list_captions— Untertitelspuren eines Videos auflisten (Sprache, Name, Status, Entwurfs-Flag)upload_caption— eine SRT- oder WebVTT-Untertitelspur auf ein Video hochladendelete_caption— eine Untertitelspur löschen
Shorts
list_my_shorts— Shorts in aktuellen Uploads finden (filtert nach ≤60s Dauer)get_shorts_analytics— YouTube Analytics-Abfrage, beschränkt auf Shorts (creatorContentType==SHORTS)
Playlists
create_playlist— eine Playlist erstellen (standardmäßig privat)add_to_playlist— ein Video zu einer bestehenden Playlist hinzufügen
Kommentare
list_comments— Top-Level-Kommentar-Threads eines Videosreply_to_comment— auf einen Top-Level-Kommentar antwortenmoderate_comment— einen Kommentar zurückhalten / genehmigen / ablehnen
Analysen
query_channel_analytics— Metriken mit Datumsbereich, optionalen Dimensionen und Filtern
Brücke (wenn COMFYUI_URL konfiguriert ist)
generate_and_set_thumbnail— Thumbnail über ComfyUI generieren und in einem Aufruf für ein Video festlegen
Kontingent-Hinweise
Kostenloser Tarif der YouTube Data API = 10.000 Einheiten/Tag. Kosten für wichtige Vorgänge:
videos.list,commentThreads.list— je 1 Einheitvideos.update,comments.insert,thumbnails.set— je 50 Einheitenvideos.insert(Upload) — 1.600 Einheiten → ~6 Uploads/Tag im kostenlosen Tarif
Die meisten Creator-Ops-Workflows bleiben weit unter dem kostenlosen Limit.
Architektur
┌────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ MCP client │────▶│ youtube-mcp │────▶│ YouTube APIs │
│ (Claude etc.) │◀────│ (this server) │◀────│ (Data/Analytics)│
└────────────────┘ └────────┬─────────┘ └─────────────────┘
│
│ (bridge tools only)
▼
┌──────────────────┐
│ ComfyUI │
│ (txt2img) │
└──────────────────┘OAuth-Refresh-Token werden lokal zwischengespeichert und kurz vor Ablauf aktualisiert. Das Brücken-Tool lädt Bild-Bytes intern von ComfyUI herunter — ComfyUI muss nicht öffentlich erreichbar sein.
Entwicklung
git clone https://github.com/miller-joe/youtube-mcp
cd youtube-mcp
npm install
npm run dev
npm run build
npm testErfordert Node 20+.
Roadmap
[x] Video auflisten / abrufen / Metadaten aktualisieren
[x] Playlist erstellen + hinzufügen
[x] Kommentare auflisten / antworten / moderieren
[x] Kanalanalysen abfragen
[x] ComfyUI Thumbnail-Brücke (
generate_and_set_thumbnail)[x] Untertitel hochladen + auflisten + löschen (
upload_caption,list_captions,delete_caption)[x] Video löschen mit Titel-Übereinstimmungs-Schutz
[x] Shorts-Ergonomie:
list_my_shorts(Dauerfilter) +get_shorts_analytics(creatorContentType==SHORTS)[ ] Video-Upload (
video_upload) — Unterstützung für fortsetzbaren Upload[ ] Reporting-API für Massenexporte historischer Daten
Lizenz
MIT © Joe Miller
Support
Wenn Ihnen dies Zeit spart, ziehen Sie eine Unterstützung der Entwicklung in Betracht:
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.
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/miller-joe/youtube-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server