youtube-mcp-server
youtube-mcp-server
Ein Remote-MCP-Server, der die YouTube Data API v3 als Tools über Streamable HTTP bereitstellt, sodass er zu claude.ai als benutzerdefinierter Connector hinzufügen werden kann.
Keine Abhängigkeiten. Kein Build-Schritt. node src/server.js ist das Ganze.
Tools
Tool | Funktion | Kontingentkosten |
| Beliebteste Videos für ein Land, optionel nach einer Kategorie gefiltert | 1 Einheit |
| Stichwortsuche nach Videos, Kanälen oder Wiedergabelisten, mit angehängten Statisti ken | 1 Suchaufruf + 1 Einheit |
| Die letzen Uploads eines Kanals plus dessen Abonnenten- und Aufruf-Gesamtzahlen | 3 Einheiten |
| Vollständige Statisti ken für bis u 50 Videos in einem Aufruf | 1 Einheit |
| Top-Level-Kommentare mit Like- und Antwortzahlen | 1 Einheit |
Transkripte sind bewust nicht entalten. captions.download erfordert OAuth und Bearbeitungsberechtigung für das Video, sodass ei API-Schüssel Untertitel nur für Videos abrufen kann, die man besitzt. Die inoffiziellen Scraping-Bibliotheken werden Berichten zufolge von Cloud-IP-Bereichen aus blockiert – genau dort läuft dieser Server.
Related MCP server: mcp-server-youtube
Kontingent
Ein Projekt erhält 10.000 Einheiten/Tag im allgemeinen Bucket, und search.list liegt in einem separaten Bucket mit einem Maximum von 100 Aufrufen pro Tag. Das hat das Tool-Design geprägt: youtube_channel_videos läuft über channels.list → playlistItems.list → videos.list statt über search.list?channelId=, sodass das Durchsuchen eines Kanals 3 allgemeine Einheiten kostet statt eine von nur hundert täglichen Suachen.
Lokal ausführen
cp .env.example .env # add your YOUTUBE_API_KEY
export $(grep -v '^#' .env | xargs)
npm startcurl localhost:3000/health
curl -s localhost:3000/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | head -c 400Test
npm testFührt den vollständigen MCP-Handshake, be ide Transportarten, alle fünf Tools und die Fehlerpfade gegen eine simuierte YouTube-API aus. Kein API-Schlüssel und kein Netzwerk erforderlich.
Auf Railwway bereitstellen
Pushe dieses Repo auf GitHub.
Railwway → New Project → Deploy from GitHub repo → auswählen.
Variables →
YOUTUBE_API_KEYhinzufügen.Settings → Networking → Generate Domain.
Überprüfe, ob
https://<your-domain>/health"apiKeyConfigured": truezurückgibt.
Railwway legt PORT selbst fest; der Server bindet an 0.0.0.0 und liest ihn aus.
Zu claude.ai hinzufügen
Customize → Connectors → Add custom connector → https://<your-domain>/mcp
Keine OAuth-Felder notwendig – der Server ist standardmäßig ohne Authentifizierung. Um ihn abzusichern, setze MCP_AUTH_TOKEN und trage Bearer <token> unter authorization in die Request-Header des Connectors ein.
Umgebungsvariablen
Variable | Erforderlich | Standard | Hinweise |
| ja | — | Google Cloud Console, mit aktivierter YouTube Data API v3 |
| nein | 3000 | Railway setzt diese Variable |
| nein |
| Pfad, auf dem der MCP-Endpoint lauscht |
| nein | — | Falls gesetzt, benötigt jede Anforderung |
| nein | Googles Standard-API | Nur dazu da, um die Test-Suite auf einen Stub auszurichten |
Designhinweise
Zustandslos. Jeder POST ist in sich abgeschlossen – keine Mcp-Session-Id, keine Session-Map –, sodass ein Neustart oder eine zweite Replik nie "No valid session ID provided" liefert.
Die Inhaltsaushandlung entspricht dem Referenz-SDK: ein SSE-Rahmen, wenn der Client Accept: text/event-stream sendet, andernfalls ein einfacher JSON-Body.
GET und DELETE auf /mcp geben 405 zurück, was die Streamable-HTTP-Spezifikation von einem Server ohne server-initiierten Stream und ohne zu schließende Session erwartet.
Keine Validierung des Origin-Headers und kein DNS-Rebinding-Schutz. Diese Schutzmaßnahmen sind für MCP-Server gedacht, die an localhost gebunden sind; wenn sie für eine öffentliche Bereitstellung aktiviert bleiben, lehnen sie Anforderungen von Anthropic selbst ab, was eine häufige Ursache für initialize-Timeout ist.
Tool-Fehler werden als isError: true-Inhalt zurückgegeben und nicht als JSON-RPC-Fehler, sodass Claude erkennt, was schiefgelaufen ist, und sich anpassen kann, statt dass der Aufruf auf der Transportschicht abstirbt.
Ergebnisse werden auf 120k Zeichen gekürzt, unterhalb des ~150k-Zeichenlimits für Tool-Ergebnisse von claude.ai.
This server cannot be deployed
Maintenance
Related MCP Connectors
Search YouTube videos, read transcripts and get public video information in your AI assistant.
YouTube search, whole channels, video stats, comments and full transcripts with timestamps.
YouTube transcripts, search, channel/playlist listings and upload tracking for AI agents.
YouTube transcripts, comments, video details, heatmaps, search, channels and playlists.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with YouTube through the YouTube Data API, allowing users to search for videos, playlists, and channels, generate video titles using AI, and manage YouTube content through natural language commands.22ISC
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to search videos, read channels, browse playlists, fetch comments, and get transcripts from YouTube using the YouTube Data API v3 and InnerTube API for captions.2GPL 3.0
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to search videos, channels, and playlists, retrieve video metadata, transcripts, and comments via the YouTube Data API v3.59 PyPI68MIT
- FlicenseNot gradedqualityCmaintenanceEnables searching and retrieving video transcripts, metadata, channel info, playlists, comments, trending videos, and engagement analytics from YouTube through natural language.15 npm-