YouTube Knowledge MCP
YouTube Knowledge MCP
Ein Model Context Protocol (MCP)-Server, der KI-Assistenten die Möglichkeit gibt, Wissen aus YouTube-Videos zu suchen, zu analysieren und zu extrahieren. Funktioniert mit Claude Desktop, Claude Code, Claude.ai, Cursor und jedem MCP-kompatiblen Client.
Unterstützt sowohl lokale (stdio) als auch entfernte (Streamable HTTP) Transporte.
![]()
Funktionen
Finden und lesen
Suchen Sie Videos und Kanäle per Schlüsselwort
Abrufen von Videos aus einer Wiedergabeliste oder einem Kanal
Metadaten zu Videos, Kanälen und Wiedergabelisten, Kapitel und Top-Kommentare
Transkripte mit Zeitstempeln, geschnitten nach Zeitbereich oder Kapitel und begrenzt, sodass ein dreistündiges Video Ihren Kontext nicht überflutet
Suchen Sie in einem Transkript und erhalten Sie
?t=-Links, die das Video genau an der betreffenden Stelle öffnenStapelwerkzeuge: Transkripte für viele Videos auf einmal oder eine Zusammenfassung einer gesamten Wiedergabeliste
Für die Bearbeitung extrahieren
Einen Zeitbereich ausschneiden, ohne das gesamte Video herunterzuladen – präzise oder an Keyframes schneiden, per Zeitstempel oder Kapitelname
Audioclips in MP3, M4A, WAV, FLAC oder Opus
Einzelbilderfassung zu jedem Zeitpunkt, ohne die Datei herunterzuladen
Untertitel-Export als SRT, WebVTT oder Klartext für Premiere, Resolve oder CapCut
Vollständige Downloads mit Qualitätsvoreinstellungen
Behalten Sie, was Sie lernen (lokaler Modus)
Speichern Sie Zusammenfassungen und Notizen zu Fähigkeiten in einer lokalen Bibliothek
Lesen Sie sie erneut und durchsuchen Sie alle per Volltext-Ranking
Taggen, umtaggen und löschen
Ein Gehirn für einen Kanal aufbauen (lokaler Modus)
Einen gesamten Kanal in ein durchsuchbares Korpus zeitgestempelter Passagen überführen, in jeder Untertitelsprache, fortsetzbar und gefahrlos unterbrechbar – ein zweiter Durchlauf setzt dort fort, wo er gestoppt wurde, und nimmt neue Uploads auf
Fragen, was ein Ersteller zu irgendetwas gesagt hat, in jedem Video, und erhalten Sie die Momente selbst mit Links, die das Video dort öffnen
Den Kanal vermessen: wie viel lesbar war, sein Upload-Rhythmus, seine Sprechgeschwindigkeit und die Phrasen, die er über Videos hinweg wiederholt
Ein schriftliches Profil neben dem Korpus führen, das auf Passagen basiert, die Sie zitieren können
Gebaut, um zuverlässig zu bleiben
WebVTT wird von der W3C-Referenzimplementierung geparst, nicht von einem handgeschriebenen Abgleicher
Typisierte, umsetzbare Fehler – „keine Untertitel auf Englisch, versuchen Sie: Französisch, Spanisch, Deutsch“ statt einer Wand aus yt-dlp-Fehlerausgabe
Timeouts, Wiederholungen mit Backoff und eine Begrenzung der Nebenläufigkeit bei jedem yt-dlp-Aufruf
check_healtherkennt fehlendes oder veraltetes yt-dlp und ffmpegStrukturierte Ausgabe für jedes Werkzeug sowie MCP-Ressourcen, Prompts und Vervollständigungen
Related MCP server: YouTube Translate MCP
Voraussetzungen
Node.js 22+
yt-dlp – für jedes Werkzeug erforderlich.
brew install yt-dlp(macOS) oderpip install -U yt-dlpffmpeg – erforderlich für Downloads, Clip-Extraktion und Einzelbilderfassung. Alles andere funktioniert auch ohne es.
Führen Sie das check_health-Werkzeug aus, um zu bestätigen, dass beide installiert und aktuell sind. Ein veraltetes yt-dlp ist die häufigste Ursache für unerklärliche Fehler, da sich YouTube häufig ändert; yt-dlp -U behebt die meisten davon.
Installation
Über npm (empfohlen)
npm install -g youtube-knowledge-mcpÜber npx (ohne Installation)
Direkt mit npx konfigurieren (siehe Abschnitt „Konfiguration“).
Aus dem Quellcode
git clone https://github.com/teobouancheau/youtube-knowledge-mcp.git
cd youtube-knowledge-mcp
npm install
npm run buildKonfiguration
Lokal (stdio) – Claude Desktop, Claude Code, Cursor
Schnellstart mit npx
{
"mcpServers": {
"youtube-knowledge": {
"command": "npx",
"args": ["-y", "youtube-knowledge-mcp"]
}
}
}Bei globaler Installation
npm install -g youtube-knowledge-mcp{
"mcpServers": {
"youtube-knowledge": {
"command": "youtube-knowledge-mcp"
}
}
}Speicherorte der Konfigurationsdateien
Client | Pfad |
Claude Desktop (macOS) |
|
Claude Desktop (Windows) |
|
Claude Desktop (Linux) |
|
Claude Code |
|
Cursor |
|
Starten Sie Ihren Client nach der Aktualisierung der Konfiguration neu.
Remote (HTTP) – Claude.ai, Claude Mobile, Benutzerdefinierte Connectors
Der Server unterstützt den Streamable-HTTP-Transport für den Fernzugriff über die offiziellen Connectors von Claude.
Jede Remote-Einrichtung ist Ihre eigene Bereitstellung. Es gibt bewusst keine gemeinsame Instanz, auf die ein Connector zeigen könnte: Jeder Aufruf startet einen yt-dlp-Prozess, sodass ein einzelner Host, der den Datenverkehr anderer bedient, ein Host ist, den YouTube für alle einschränkt. Mit der Schaltfläche unten stellen Sie dieses Repository in etwa zwei Minuten in Ihrem eigenen Render-Konto bereit, ohne etwas zu klonen.
Selbst gehostet
npm run build
npm run start:httpDer Server lauscht auf PORT (Standard 3000). Setzen Sie die Umgebungsvariable PORT, um den Wert zu ändern.
Docker
docker build -t youtube-knowledge-mcp .
TOKEN=$(openssl rand -hex 32) && echo "MCP_AUTH_TOKEN=$TOKEN"
docker run -p 3000:10000 -e MCP_AUTH_TOKEN="$TOKEN" youtube-knowledge-mcpDas Token wird ausgegeben, weil nichts anderes es ausgeben wird: Der Server protokolliert, dass ein Token erforderlich ist, niemals dessen Wert. Senden Sie es als Authorization: Bearer $TOKEN.
Das Image setzt PORT=10000 und macht es verfügbar; veröffentlichen Sie es auf einem beliebigen Host-Port. Der Build findet innerhalb des Images statt, daher ist kein lokales npm run build erforderlich.
Auf Render bereitstellen
Die Schaltfläche öffnet den Blueprint-Flow von Render mit render.yaml in diesem Repository, der das Docker-Image erstellt, den Health-Check auf /health ausrichtet und ein MCP_AUTH_TOKEN für Sie generiert. Kein Fork, kein Klon, keine auszufüllenden Einstellungen – der Dienst gehört Ihnen, auf Ihrem Konto.
Klicken Sie auf die Schaltfläche und bestätigen Sie. Render erstellt das Image und stellt es bereit.
Öffnen Sie den Tab Umgebung des Dienstes und kopieren Sie das generierte
MCP_AUTH_TOKEN. Der HTTP-Transport lehnt jede Anfrage ohne dieses Token ab, sodass eine durchgesickerte URL keinen offenen Server darstellt.Fügen Sie
https://<your-service>.onrender.com/mcpals benutzerdefinierten Connector hinzu, mitAuthorization: Bearer <token>.
Sobald der Dienst existiert, ist Folgendes sinnvoll: Setzen Sie MCP_ALLOWED_HOSTS auf den Hostnamen Ihres Dienstes (<your-service>.onrender.com). Er kann nicht aus dem Blueprint ausgefüllt werden, da der Hostname erst existiert, wenn der Dienst es tut, und er Anfragen ablehnt, die unter einem anderen Namen eingehen.
Ihre Instanz folgt nicht diesem Repository. Der Blueprint setzt autoDeployTrigger: off, da ein automatisches Deployment Code, der hierher geschoben wird, in Ihrem Konto unter Ihrem Token ausführen würde, ohne dass Sie ihn zuerst gelesen haben. Um eine neuere Version zu übernehmen, verwenden Sie Manuelle Bereitstellung für den Dienst.
Der kostenlose Plan wechselt nach Inaktivität in den Ruhezustand, sodass der erste Aufruf nach einer Pause auf einen Kaltstart wartet. Jeder kostenpflichtige Plan beseitigt das.
Über Claude.ai verbinden
Gehen Sie zu Einstellungen > Connectors
Klicken Sie auf Benutzerdefinierten Connector hinzufügen
Geben Sie Ihre Server-URL ein (z. B.
https://your-app.onrender.com/mcp)Fügen Sie den Header
Authorization: Bearer <token>hinzu, wenn SieMCP_AUTH_TOKENgesetzt habenKlicken Sie auf Hinzufügen
MCP-Werkzeuge
33 Werkzeuge. Die 14 schreibgeschützten funktionieren über beide Transporte; die 19, die auf Ihr Dateisystem zugreifen, sind nur im lokalen (stdio) Modus registriert, sodass eine Remote-Bereitstellung nicht auf die Festplatte des Hosts zugreifen kann.
Jedes Werkzeug gibt menschenlesbaren Text und typisierte strukturierte Ausgabe zurück und meldet Fehler als umsetzbare Meldung – [NO_CAPTIONS] No "en" captions are available for this video. Call get_transcript again with one of: fr, es, de.
Ermittlung – remote + lokal
Tool | Wichtige Parameter | Rückgabe |
|
| Passende Videos mit Dauer, Kanal und Aufrufzahlen |
|
| Passende Kanäle mit Abonnentenzahlen |
|
| Videos in einer Wiedergabeliste oder einem Kanal |
|
| Titel, Kanal, Dauer, Aufrufe, Likes, Beschreibung, Tags |
|
| Name, Handle, Abonnentenzahl, Beschreibung |
|
| Titel, Kanal, Videoanzahl, zuletzt aktualisiert |
|
| Kapiteltitel mit Start-/Endzeiten und Deep Links |
|
| Top-Kommentare nach Beliebtheit |
|
| Verfügbare Formate, gruppiert nach Video+Audio, Nur-Video, Nur-Audio |
| — | yt-dlp- und ffmpeg-Status, Versionen und Warnungen zu veralteten Versionen |
Transkripte – remote + lokal
Tool | Wichtige Parameter | Rückgabe |
|
| Transkript als Klartext, mit Zeitstempeln versehene Zeilen oder Cues |
|
| Übereinstimmungen mit Zeitstempeln und |
|
| Transkripte für viele Videos; Fehler werden pro Video gemeldet |
|
| Metadaten pro Video, Kapitel und Transkript-Statistiken |
format: "timestamped" stellt jeder Zeile [MM:SS] voran – verwenden Sie es, wenn Sie einen Moment zitieren oder verlinken müssen. maxChars mit offset liest ein langes Transkript in Teilen, statt 100.000+ Tokens auf einmal zurückzugeben.
Extraktion für die Bearbeitung – nur lokal
Tool | Wichtige Parameter | Rückgabe |
|
| Pfad zum ausgeschnittenen Video |
|
| Pfad zur Audiodatei |
|
| Eine Datei pro Bereich |
|
| Pfad zu einem PNG- oder JPG-Standbild |
|
| Pfad zur Untertiteldatei |
|
| Pfad zum heruntergeladenen Video |
Clips werden mit --download-sections geschnitten, sodass nur der Bytebereich abgerufen wird, der das Fenster abdeckt, nicht die gesamte Datei. preciseCuts (Standard true) schneidet exakt an den gewünschten Zeiten; setzen Sie es auf false, um einen schnelleren, an Keyframes ausgerichteten Schnitt zu erhalten. Alle diese Funktionen erfordern ffmpeg.
Wissensbibliothek — nur lokal
Tool | Wichtigste Parameter | Rückgabe |
|
| Pfad zur gespeicherten Notiz |
|
| Gespeicherte Einträge, neueste zuerst |
|
| Das gespeicherte Markdown und seine Metadaten |
|
| Relevante Treffer mit Auszügen |
|
| Die aktualisierten Tags |
|
| Was gelöscht wurde |
| — | Anzahl der neu indizierten Notizen |
Kanal-Gehirne — nur lokal
Tool | Wichtigste Parameter | Rückgabe |
|
| Was gelesen wurde, was ausgeschlossen wurde und die Statistiken |
|
| Passagen mit Zeitstempeln und |
| — | Jedes lokal erstellte Gehirn |
|
| Abdeckung, Statistiken und wiederkehrende Ausdrücke |
|
| Pfad zum gespeicherten Profil |
|
| Was entfernt wurde |
build_brain ist das einzige, das auf das Netzwerk zugreift. Die übrigen lösen einen Kanal aus dem bereits auf der Festplatte Vorhandenen auf, sodass sie offline arbeiten und nichts kosten.
Ein Gehirn enthält eine Untertitelsprache; übergib language, um eine andere zu lesen, und erstelle ein separates Gehirn pro Sprache.
since und minDurationSeconds beschreiben das Gehirn, nicht nur den Aufruf, der sie übergeben hat. Sie werden jedes Mal erneut angewendet. Wenn du eines einschränkst, werden die Passagen der ausgeschlossenen Videos verworfen; wenn du es erweiterst, werden sie erneut gelesen — deshalb ist build_brain als destruktiv markiert. Ob ein Video qualifiziert ist, wird anhand des bereits aufgezeichneten Datums und der Länge entschieden. Wenn du deine Meinung änderst, kostet das also keine Anfragen, bis es etwas Neues zu holen gibt. Diese Werte stammen aus den eigenen Metadaten jedes Videos, niemals aus einer Schätzung: Eine flache Kanalliste enthält überhaupt kein Veröffentlichungsdatum.
build_brain repariert außerdem. Wenn die Passagendatei verloren geht oder abgeschnitten ist, werden die Videos, für die sie nicht mehr aufkommen kann, beim nächsten Aufruf erneut gelesen, anstatt für immer als bereits erledigt übersprungen zu werden.
Prompts
Wiederverwendbare Workflows, die dein Client direkt aufrufen kann: summarize_video, extract_skill, compare_videos, research_topic, channel_deep_dive, clip_from_quote (einen Ausdruck finden und dann den Clip darum herum ausschneiden) und — nur lokal — review_library, create_brain (das Korpus eines Kanals aufbauen und daraus sein Profil schreiben) und ask_creator (eine Frage streng auf Basis eines Gehirns mit Quellenangaben beantworten).
Ressourcen
youtube://transcript/{videoId}— ein Transkript mit Zeitstempeln, das beim ersten Lesen abgerufen und zwischengespeichert wirdyoutube://library/{videoId}/{summary|skill}— eine gespeicherte Notiz (nur lokal und aufzählbar)youtube://brain/{channelId}/{manifest|profile}— was ein Kanal-Gehirn abdeckt oder das daraus geschriebene Profil (nur lokal und aufzählbar)
Fehlercodes
Fehler werden im Ergebnis gemeldet, damit das Modell sie lesen und sich davon erholen kann. Jeder ist mit einem Code versehen und enthält einen nächsten Schritt.
Code | Bedeutung |
| Das Video kann nicht abgerufen werden |
| yt-dlp meldet, dass das Video ein angemeldetes Konto benötigt |
| Keine Untertitel in der angeforderten Sprache; die Meldung listet die vorhandenen auf |
| Ein bevorstehender Stream oder einer, dessen Aufzeichnung noch verarbeitet wird |
| Vorübergehend; werden automatisch mit Backoff erneut versucht, bevor sie angezeigt werden |
| Ein Tooling-Problem; die Meldung erklärt, wie es zu beheben ist |
| Ein ungültiges Argument, das vor jedem Netzwerkaufruf abgefangen wird |
| Der Client hat die Anfrage abgebrochen |
Umgebungsvariablen
Alle optional.
Variable | Standard | Zweck |
| unset | Dieses Bearer-Token auf dem HTTP-Transport verlangen. Setze dies, wenn du den Server über localhost hinaus verfügbar machst. |
| unset | Kommagetrennte Host-Zulassungsliste; aktiviert DNS-Rebinding-Schutz |
| unset | Kommagetrennte Origin-Zulassungsliste |
|
| Zu bindende Schnittstelle |
|
| HTTP-Port. Das Docker-Image setzt |
|
| Anfragen pro Fenster, pro Client |
|
| Fenster für die Ratenbegrenzung |
|
| HTTP-Sitzungen schließen, die so lange inaktiv sind |
|
| Neue Sitzungen über diese Anzahl hinaus ablehnen |
|
| Gleichzeitige yt-dlp-Prozesse |
| 30 Tage | Lebensdauer des Transkript-Caches |
Bibliotheksspeicher
Inhalte werden unter ~/.youtube-knowledge/ gespeichert:
~/.youtube-knowledge/
├── transcripts/ # Cached timestamped transcripts
│ └── {video_id}.{lang}.json
├── library/ # Saved notes
│ └── {video_id}/
│ ├── metadata.json
│ ├── summary.md
│ └── skill.md
├── brains/ # Channel brains
│ └── {channel_id}/
│ ├── manifest.json # What the brain covers, and where a build stopped
│ ├── chunks.json # The timestamped passages
│ └── profile.md # The written account, if one was saved
├── downloads/ # Full downloads
├── clips/ # Extracted clips
├── frames/ # Captured stills
├── subtitles/ # Exported SRT / VTT / TXT
├── index.json # Library index
└── search-index.json # Full-text search indexTranskripte werden standardmäßig 30 Tage lang zwischengespeichert; übergib refresh: true an ein beliebiges Transkript-Tool, um den Cache zu umgehen, oder setze YOUTUBE_MCP_TRANSCRIPT_TTL_MS.
Jedes Tool, das Dateien schreibt, beschränkt seine Ausgabe auf dein Home-Verzeichnis, und outputDir wird abgelehnt, wenn es woandershin zeigt.
Anwendungsbeispiele
Einen Moment finden und zitieren
"Find where this video talks about rate limiting and give me the timestamp:
https://youtube.com/watch?v=..."search_transcript gibt jeden Treffer mit einem Link zurück, der das Video an dieser Sekunde öffnet, sodass die Behauptung überprüft werden kann, statt ihr zu vertrauen.
Einen Moment finden und ausschneiden
"Find where she says 'the real bottleneck was the database' and cut me a
30-second clip around it"search_transcript findet den Moment, extract_clip schneidet ihn aus. Es wird nur der Bytebereich heruntergeladen, der den Clip abdeckt.
Einen Abschnitt eines langen Videos lesen
"Summarize just the 'Benchmarks' chapter of this 3-hour podcast"get_chapters findet den Abschnitt, dann liest get_transcript mit chapter: "Benchmarks" nur diesen Teil, statt des Ganzen.
Eine Playlist kostengünstig überblicken
"What does this 40-video course cover, and which three videos should I watch?"digest_playlist liefert Metadaten und Kapitel für jedes Video in einem einzigen Aufruf.
Filmmaterial für einen Schnitt vorbereiten
"Pull these four moments as separate clips and export the subtitles as SRT"extract_clips schneidet alle vier in einem Aufruf; export_subtitles schreibt eine Datei, die dein Editor importieren kann.
Eine Wissensdatenbank aufbauen und abfragen
"Summarize this video and save it to my library tagged 'databases'"
"What have I saved about connection pooling?"save_to_library speichert es; search_library durchsucht alles Gespeicherte mit Volltextrankings.
Ein Gehirn für einen Creator aufbauen
"Build a brain for @Fireship, then tell me everything they've said about Rust"build_brain liest den Kanal in Passagen mit Zeitstempel — unterbrich es und rufe es erneut auf, um fortzufahren. ask_brain antwortet dann auf der Grundlage dessen, was tatsächlich gesagt wurde, und gibt die Momente selbst zurück, sodass jede Behauptung anhand des Videos überprüft werden kann. Führe build_brain einen Monat später erneut aus, und es liest nur die neuen Uploads.
Tests
npm test # Run all tests
npm run test:watch # Watch mode
npm run test:coverage # Coverage report, with thresholds enforcedDie Testsuite deckt die reine Logik direkt ab, treibt den echten Server über einen MCP-Client über einen In-Memory-Transport an, testet die Bibliothek gegen ein echtes temporäres Dateisystem und erstellt einen Schnappschuss des Tool-Manifests, sodass jede Änderung an der öffentlichen Oberfläche als überprüfbarer Diff erscheint.
Entwicklung
npm run dev # Watch mode
npm run build # Build for production
npm run rebuild # Clean and rebuild
npm start # Run server (stdio)
npm run start:http # Run server (HTTP)
npm run validate # Typecheck + lint + format check + testCI führt bei jedem Push und Pull-Request dieselbe Prüfung unter Node 22 und 24 aus und startet dann den gebauten Server als echten MCP-Client, um das Manifest zu verifizieren.
Mitwirken
Beiträge sind willkommen — siehe CONTRIBUTING.md für die Projektstruktur, Codierungsstandards und wie man ein Tool hinzufügt.
Sicherheit
Der HTTP-Transport ist ohne Authentifizierung, es sei denn, du setzt MCP_AUTH_TOKEN. Siehe SECURITY.md, bevor du ihn über localhost hinaus verfügbar machst, und um eine Schwachstelle zu melden.
Lizenz
MIT-Lizenz – siehe LICENSE für Details.
Danksagungen
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables AI assistants to extract transcripts from YouTube videos, allowing AI to analyze and work with video content directly.8153MIT
- AlicenseAqualityCmaintenanceA Model Context Protocol server that enables access to YouTube video content through transcripts, translations, summaries, and subtitle generation in various languages.54MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that analyzes YouTube videos, enabling users to extract transcripts, generate summaries, and query video content using Gemini AI.13MIT
- AlicenseNot gradedqualityFmaintenanceA Model Context Protocol server that enables searching YouTube videos, retrieving and storing transcripts, and performing semantic search over video content without using the official YouTube API.29MIT
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/teobouancheau/youtube-knowledge-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server