YouTube MCP Server
YouTube MCP Server
Ein Python-basierter Model Context Protocol (MCP)-Server, der Bildungsinhalte aus YouTube-Videos extrahiert — Transkripte und visuell aussagekräftige Frames — und sie KI-Assistenten wie Claude, ChatGPT und jedem MCP-kompatiblen Client zur Verfügung stellt.
Was es tut
Gib einem KI-Assistenten eine YouTube-URL, und er kann:
Transkript lesen — Vollständige Untertitel mit Zeitstempeln, bereit für Zusammenfassungen, Q&A oder Inhaltsanalysen.
Video ansehen — Eine 5-Phasen-Computer-Vision-Pipeline extrahiert die informativsten Frames, bewertet sie nach Qualität, entfernt Duplikate und gibt sie als base64-codierte JPEGs zurück, die die KI „ansehen“ kann.
Kein manuelles Herunterladen. Kein Kopieren und Einfügen. Einfach eine URL einfügen und Fragen stellen.
Werkzeuge
get_transcript
Ruft die Untertitel des Videos mit youtube-transcript-api ab.
Parameter:
url(erforderlich) — YouTube-Video-URLlanguage(optional, Standard:"en") — Bevorzugte Untertitelspracheprefer_manual(optional, Standard:true) — Manuell erstellte Untertitel gegenüber automatisch erzeugten bevorzugen
Rückgabe: Ein sauberer, mit Zeitstempeln versehener Transkriptblock:
[00:00:00] So I want to start by offering you a free ...
[00:00:15] The key insight here is that ...get_video_frames
Führt eine vollständige Videoanalyse-Pipeline aus, um die aussagekräftigsten visuellen Momente hervorzuheben.
Parameter:
url(erforderlich) — YouTube-Video-URLmax_frames(optional, Standard:20) — Maximale Anzahl zurückzugebender Frames (Obergrenze:40)scene_threshold(optional, Standard:0.25) — Empfindlichkeit der FFmpeg-Szenenerkennungoutput_width(optional, Standard:640) — Breite der zurückgegebenen JPEGs (proportionale Höhe)min_importance_score(optional, Standard:0.35) — Mindestens erforderlicher zusammengesetzter Qualitätswert
Rückgabe:
Metadaten:
video_id,duration_seconds,pipeline_stats,fallback_usedFrame-Blöcke: jeder enthält
timestamp_ms,composite_scoreund einbase64-codiertes JPEG-BildEin Index, der jeden zurückgegebenen Frame mit Zeitstempel und Bewertung auflistet
Die Frame-Pipeline (5 Phasen)
Phase | Modul | Was sie tut |
1. Download |
| Lädt das Video über |
2. Extraktion |
| Erkennt Szenenwechsel mit |
3. Bewertung |
| Bewertet jeden Frame anhand von 5 Signalen: Bewegungsstabilität, Entropie, Kantendichte, rechteckige Abdeckung und OCR-Wortanzahl |
4. Deduplizierung |
| Entfernt nahezu identische Frames mithilfe von DCT-perzeptuellem Hashing (pHash) mit einem Hamming-Distanz-Schwellenwert |
5. Laden |
| Skaliert Frames, komprimiert sie zu JPEG (Qualität 85) und codiert sie für den MCP-Transport base64 |
Schnellstart
Voraussetzungen
Python 3.11
ffmpeg — Videoverarbeitung
Tesseract OCR — Texterkennung in Frames
macOS:
brew install ffmpeg tesseractUbuntu / Linux:
sudo apt-get install ffmpeg tesseract-ocr tesseract-ocr-engWindows: Laden Sie ffmpeg und Tesseract herunter und fügen Sie beide zu Ihrem PATH hinzu.
Überprüfen:
ffmpeg -version
tesseract --versionInstallation
# Clone the repository
git clone https://github.com/Ayush-Mamgain/youtube-mcp-server.git
cd youtube-mcp-server
# Create a virtual environment
python3 -m venv venv
source venv/bin/activate # macOS / Linux
# venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements.txtKonfiguration
Erstellen Sie eine .env-Datei im Projektstammverzeichnis:
LOG_LEVEL=DEBUG
MCP_HTTP_PORT=8000Optionale Anpassung (falls nicht angegeben, werden die Standardwerte aus config.py geladen):
Variable | Standard | Beschreibung |
|
| Videos ablehnen, die länger sind als dieser Wert (Sekunden) |
|
| Absolute Obergrenze für zurückgegebene Frames |
|
| FFmpeg-Szenenwechsel-Schwellenwert |
|
| Mindestwert für zusammengesetzten Frame-Score |
|
| Breite der zurückgegebenen JPEGs |
Server starten
python server.pyDer Server startet unter http://localhost:8000.
Verbinden mit Claude.ai (lokal)
Starten Sie den Server:
python server.pyGehen Sie zu Claude.ai → Einstellungen → Integrationen → MCP-Server hinzufügen
Geben Sie ein:
http://localhost:8000/mcp
Damit das in der Cloud gehostete Claude Ihren Server erreichen kann, müssen Sie ihn öffentlich zugänglich machen (siehe Bereitstellung unten).
API-Endpunkte
Endpoint | Methode | Beschreibung |
| GET | Health-Check — prüft |
| POST | Streambarer HTTP-Endpunkt für MCP-Werkzeugaufrufe |
Projektstruktur
youtube-mcp-server/
├── server.py # MCP entry point — FastMCP + Starlette HTTP server
├── config.py # Loads and validates environment variables
├── logger.py # stderr-only logging
├── url_parser.py # Validates YouTube URLs and extracts video IDs
├── transcript.py # Fetches captions via youtube-transcript-api
├── downloader.py # Phase 1 — video download with yt-dlp
├── frame_extractor.py # Phase 2 — scene-change frame extraction via ffmpeg
├── scorer.py # Phase 3 — multi-signal frame scoring (OpenCV + Tesseract)
├── deduplicator.py # Phase 4 — perceptual-hash deduplication
├── frame_loader.py # Phase 5 — resize, JPEG encode, base64
├── video_frames.py # Orchestrates Phases 1–5 with semaphore and cleanup
├── requirements.txt # Pinned Python dependencies
└── .gitignore # Excludes .env, venv, caches, test artifactsEntwicklungsworkflow
Dieses Projekt wurde in 9 in sich abgeschlossenen Stufen entwickelt, jede mit eigener Testdatei und Verifikationsschritt:
Stufe | Schwerpunkt | Testdatei |
1 | Projektgerüst, Konfiguration, Logger |
|
2 | YouTube-URL-Parser und -Validierung |
|
3 | Transkriptabruf |
|
4 | Video-Downloader mit Dauerbegrenzung |
|
5 | Frame-Extraktion über ffmpeg |
|
6 | Multi-Signal-Bedeutungsbewertung |
|
7 | pHash-Deduplizierung + base64-Laden |
|
8 | Vollständige Pipeline-Orchestrierung |
|
9 | MCP-Server-Einstiegspunkt + Health-Checks |
|
Goldene Regel: Jede Stufe wird vor dem Fortfahren verifiziert. Führen Sie
python test_stage{N}.pyaus, um zu validieren.
Bereitstellung
Docker-Unterstützung ist geplant, aber noch nicht konfiguriert. Dieser Abschnitt wird aktualisiert, sobald die Containerisierung abgeschlossen ist.
Der Server läuft derzeit direkt auf jedem Rechner mit installiertem Python 3.11, ffmpeg und Tesseract. Empfohlene Hosting-Optionen, sobald Docker bereit ist:
Nach der Bereitstellung aktualisieren Sie die Integrations-URL in Claude.ai auf:
https://YOUR-DEPLOYMENT-URL/mcpDesign-Hinweise
Die gesamte Protokollierung erfolgt ausschließlich über stderr.
stdoutist ausschließlich für die MCP-Kommunikation reserviert.Thread-sicher: Die
get_video_frames-Pipeline verwendet einthreading.Semaphore(1), um zu verhindern, dass gleichzeitige Downloads das System überlasten.Automatische Bereinigung: Temporäre Dateien, die während der Videoverarbeitung erstellt werden, werden nach jedem Durchlauf gelöscht.
Strenge Validierung: Video-IDs werden gegen
^[A-Za-z0-9_-]{11}$validiert. Reine Playlist-URLs, Kanal-URLs und fehlerhafte Eingaben werden mit klaren Fehlermeldungen abgelehnt.Sanfte Degradierung: Falls alle Frames unter dem Mindestwert für die Wichtigkeitsschwelle liegen, weicht die Pipeline auf die besten 5 Frames aus und setzt
fallback_used: true.
Lizenz
MIT © Ayush Mamgain
Danksagungen
Erstellt mit FastMCP, Starlette, yt-dlp, youtube-transcript-api und OpenCV.
This 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.
Related MCP Connectors
Fetch transcripts, subtitles, chapters, metadata and frames from YouTube and 10+ video platforms
Provide token-optimized, structured YouTube data to enhance your LLM applications. Access efficien…
Search YouTube transcripts and read a video's frames; answers cite clickable timestamps.
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/chaitanyapandey09/YouTube-MCP-Server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server