YouTube MCP Server
YouTube MCP Server
Un servidor basado en Python para el Model Context Protocol (MCP) que extrae contenido educativo de videos de YouTube (transcripciones y fotogramas visualmente significativos) y lo pone a disposición de asistentes de IA como Claude, ChatGPT y cualquier cliente compatible con MCP.
Qué Hace
Dale a un asistente de IA una URL de YouTube y podrá:
Leer la transcripción — Subtítulos completos con marcas de tiempo, listos para resumir, hacer preguntas y respuestas o analizar el contenido.
Ver el video — Un pipeline de visión por computadora de 5 fases extrae los fotogramas más informativos, los puntúa según su calidad, elimina duplicados y los devuelve como JPEG codificados en base64 que la IA puede «ver».
Sin descargas manuales. Sin copiar y pegar. Solo pega una URL y haz preguntas.
Related MCP server: YouTube Transcript MCP Server
Herramientas
get_transcript
Obtiene los subtítulos del video usando youtube-transcript-api.
Parámetros:
url(obligatorio) — URL del video de YouTubelanguage(opcional, por defecto:"en") — Idioma de subtítulos preferidoprefer_manual(opcional, por defecto:true) — Prefiere subtítulos escritos manualmente sobre los generados automáticamente
Devuelve: Un bloque de transcripción limpio y con marcas de tiempo:
[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
Ejecuta un pipeline completo de análisis de video para sacar a la luz los momentos visuales más significativos.
Parámetros:
url(obligatorio) — URL del video de YouTubemax_frames(opcional, por defecto:20) — Número máximo de fotogramas a devolver (límite máximo:40)scene_threshold(opcional, por defecto:0.25) — Sensibilidad de detección de escenas de FFmpegoutput_width(opcional, por defecto:640) — Ancho de los JPEG devueltos (altura proporcional)min_importance_score(opcional, por defecto:0.35) — Puntuación mínima de calidad compuesta
Devuelve:
Metadatos:
video_id,duration_seconds,pipeline_stats,fallback_usedBloques de fotogramas: cada uno incluye
timestamp_ms,composite_scorey una imagen JPEG codificada enbase64Un índice que enumera cada fotograma devuelto con su marca de tiempo y puntuación
El Pipeline de Fotogramas (5 Fases)
Fase | Módulo | Qué Hace |
1. Descarga |
| Descarga el video mediante |
2. Extracción |
| Detecta cambios de escena con |
3. Puntuación |
| Puntúa cada fotograma según 5 señales: estabilidad de movimiento, entropía, densidad de bordes, cobertura rectangular y recuento de palabras por OCR |
4. Deduplicación |
| Elimina fotogramas casi idénticos mediante hash perceptual DCT (pHash) con un umbral de distancia de Hamming |
5. Carga |
| Redimensiona los fotogramas, los comprime a JPEG (calidad 85) y los codifica en base64 para el transporte por MCP |
Inicio Rápido
Requisitos Previos
Python 3.11
ffmpeg — procesamiento de video
Tesseract OCR — detección de texto en fotogramas
macOS:
brew install ffmpeg tesseractUbuntu / Linux:
sudo apt-get install ffmpeg tesseract-ocr tesseract-ocr-engWindows: Descarga ffmpeg y Tesseract y añádelos a tu PATH.
Verifica:
ffmpeg -version
tesseract --versionInstalación
# 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.txtConfiguración
Crea un archivo .env en la raíz del proyecto:
LOG_LEVEL=DEBUG
MCP_HTTP_PORT=8000Ajuste opcional (se cargan los valores predeterminados de config.py si se omiten):
Variable | Por defecto | Descripción |
|
| Rechaza videos más largos que este valor (segundos) |
|
| Límite absoluto de fotogramas devueltos |
|
| Umbral de cambio de escena de FFmpeg |
|
| Puntuación mínima compuesta del fotograma |
|
| Ancho de los JPEG devueltos |
Iniciar el Servidor
python server.pyEl servidor se inicia en http://localhost:8000.
Conexión con Claude.ai (Local)
Inicia el servidor:
python server.pyVe a Claude.ai → Configuración → Integraciones → Añadir servidor MCP
Introduce:
http://localhost:8000/mcp
Para que Claude alojado en la nube pueda acceder a tu servidor, tendrás que exponerlo públicamente (consulta Despliegue más abajo).
Endpoints de la API
Endpoint | Método | Descripción |
| GET | Comprobación de estado: verifica |
| POST | Endpoint HTTP transmisible para llamadas a herramientas MCP |
Estructura del Proyecto
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 artifactsFlujo de Trabajo de Desarrollo
Este proyecto se ha construido en 9 fases independientes, cada una con su propio archivo de prueba y paso de verificación:
Fase | Enfoque | Archivo de Prueba |
1 | Andamiaje del proyecto, configuración, registro |
|
2 | Analizador y validación de URL de YouTube |
|
3 | Obtención de transcripciones |
|
4 | Descargador de video con protección de duración |
|
5 | Extracción de fotogramas mediante ffmpeg |
|
6 | Puntuación de importancia multiseñal |
|
7 | Deduplicación por pHash + carga base64 |
|
8 | Orquestación completa del pipeline |
|
9 | Punto de entrada del servidor MCP + comprobaciones de estado |
|
Regla de oro: Cada fase se verifica antes de continuar. Ejecuta
python test_stage{N}.pypara validar.
Despliegue
El soporte de Docker está planificado pero aún no está configurado. Esta sección se actualizará cuando se complete la contenedorización.
Por ahora, el servidor se ejecuta directamente en cualquier máquina con Python 3.11, ffmpeg y Tesseract instalados. Opciones de alojamiento recomendadas cuando Docker esté listo:
Una vez desplegado, actualiza la URL de integración de Claude.ai a:
https://YOUR-DEPLOYMENT-URL/mcpNotas de Diseño
Todo el registro de eventos va solo a stderr.
stdoutestá reservado exclusivamente para la comunicación MCP.Seguro para subprocesos: El pipeline
get_video_framesutiliza unthreading.Semaphore(1)para evitar que las descargas simultáneas saturen el sistema.Limpieza automática: Los archivos temporales creados durante el procesamiento de video se eliminan después de cada ejecución.
Validación estricta: Los ID de video se validan con
^[A-Za-z0-9_-]{11}$. Las URL de solo listas de reproducción, las URL de canales y las entradas mal formadas se rechazan con mensajes de error claros.Degradación elegante: Si todos los fotogramas puntúan por debajo del umbral mínimo de importancia, el pipeline recurre a los 5 mejores fotogramas y marca
fallback_used: true.
Licencia
MIT © Ayush Mamgain
Agradecimientos
Construido con FastMCP, Starlette, yt-dlp, youtube-transcript-api y OpenCV.
This server cannot be deployed
Maintenance
Related MCP Connectors
Extract YouTube transcripts, search what was said, and read on-screen frames with cited timestamps.
YouTube for AI agents: transcripts, comments, video stats, channel monitor, Shorts captions.
1YouTube transcripts, search, channel/playlist listings and upload tracking for AI agents.
Search YouTube videos, read transcripts and get public video information in your AI assistant.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI assistants to analyze and summarize YouTube videos by extracting captions, subtitles, and comprehensive metadata including title, description, and duration in multiple languages.124 npm62MIT
- FlicenseDqualityDmaintenanceEnables AI assistants to fetch and analyze transcripts from YouTube videos using video IDs or URLs, with support for multiple language preferences.1-
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to watch YouTube videos by extracting frames at scene changes and visual references, pairing each frame with the exact words spoken at that timestamp. Provides dense frame-transcript interleaving for any model.19 npm5MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to fetch YouTube video transcripts with precise timestamps, multi-language support, and time-range filtering.31MIT