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.
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 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