Skip to main content
Glama
youtube-mcp-server

youtube-mcp-server

by BismaNwaz

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

youtube_trending

Beliebteste Videos für ein Land, optionel nach einer Kategorie gefiltert

1 Einheit

youtube_search

Stichwortsuche nach Videos, Kanälen oder Wiedergabelisten, mit angehängten Statisti ken

1 Suchaufruf + 1 Einheit

youtube_channel_videos

Die letzen Uploads eines Kanals plus dessen Abonnenten- und Aufruf-Gesamtzahlen

3 Einheiten

youtube_video_detais

Vollständige Statisti ken für bis u 50 Videos in einem Aufruf

1 Einheit

youtube_video_comments

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 start
curl 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 400

Test

npm test

Fü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

  1. Pushe dieses Repo auf GitHub.

  2. Railwway → New Project → Deploy from GitHub repo → auswählen.

  3. Variables → YOUTUBE_API_KEY hinzufügen.

  4. Settings → Networking → Generate Domain.

  5. Überprüfe, ob https://<your-domain>/health "apiKeyConfigured": true zurü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

YOUTUBE_API_KEY

ja

—

Google Cloud Console, mit aktivierter YouTube Data API v3

PORT

nein

3000

Railway setzt diese Variable

MCP_PATH

nein

/mcp

Pfad, auf dem der MCP-Endpoint lauscht

MCP_AUTH_TOKEN

nein

—

Falls gesetzt, benötigt jede Anforderung Authorization: Bearer <value>

YOUTUBE_API_BASE

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.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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.
    2
    GPL 3.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables searching and retrieving video transcripts, metadata, channel info, playlists, comments, trending videos, and engagement analytics from YouTube through natural language.
    15 npm
    -