YouTube MCP Server

Un servidor MCP para interactuar con contenido de YouTube, que permite a los modelos de IA acceder y gestionar datos de YouTube a través de su API.

Documentación

YouTube MCP Server

Servidor del Protocolo de Contexto de Modelo (MCP) que permite a los modelos de IA interactuar con el contenido de YouTube a través de una interfaz estandarizada. Este servidor proporciona un conjunto de herramientas para búsqueda de videos, análisis de contenido, procesamiento de comentarios y más.

🌟 Características

  • 🔍 Búsqueda y Descubrimiento de Videos

    • Buscar videos de YouTube
    • Obtener videos en tendencia
    • Encontrar contenido relacionado
    • Información de canales
  • 📊 Análisis de Contenido

    • Información detallada de videos
    • Estadísticas de canales
    • Transcripciones de videos
    • Resúmenes completos
  • 💬 Funciones Sociales

    • Recuperación de comentarios
    • Análisis de comentarios
    • Datos de interacción de usuarios

🚀 Inicio Rápido

Requisitos Previos

1. Instalación de Python

macOS:

# Using Homebrew (recommended)
brew install python@3.11

# Verify installation
python3 --version  # Should show Python 3.11.x

Linux (Ubuntu/Debian):

# Update package list
sudo apt update

# Install Python
sudo apt install python3.11 python3.11-venv

# Verify installation
python3 --version  # Should show Python 3.11.x

Windows:

  1. Descarga el instalador de Python desde python.org
  2. Ejecuta el instalador
  3. Marca "Agregar Python al PATH" durante la instalación
  4. Abre el Símbolo del sistema y verifica:
python --version  # Should show Python 3.11.x

2. Instalación de uv

macOS/Linux:

# Install uv using the official installer
curl -LsSf https://astral.sh/uv/install.sh | sh

# Verify installation
uv --version

Windows (PowerShell):

# Install uv using the official installer
(Invoke-WebRequest -Uri "https://astral.sh/uv/install.ps1" -UseBasicParsing).Content | pwsh -Command -

# Verify installation
uv --version

Métodos de Instalación Alternativos:

Usando pip (si lo prefieres):

# Install uv using pip
pip install uv

# Verify installation
uv --version

3. Configuración de Credenciales de Google Cloud

  1. Crea un Proyecto en Google Cloud:

    # Go to Google Cloud Console
    https://console.cloud.google.com
    
    # Click on "Select a Project" at the top
    # Click "New Project"
    # Name it (e.g., "youtube-mcp-server")
    # Click "Create"
    
  2. Habilita la API de Datos de YouTube:

    # In the Google Cloud Console:
    # 1. Go to "APIs & Services" > "Library"
    # 2. Search for "YouTube Data API v3"
    # 3. Click "Enable"
    
  3. Crea Credenciales OAuth 2.0:

    # In the Google Cloud Console:
    # 1. Go to "APIs & Services" > "Credentials"
    # 2. Click "Create Credentials" > "OAuth client ID"
    # 3. Select "Desktop app" as application type
    # 4. Name it (e.g., "YouTube MCP Client")
    # 5. Click "Create"
    
  4. Descarga y Almacena las Credenciales:

    # 1. After creating credentials, click "Download JSON"
    # 2. Rename the downloaded file to 'credentials.json'
    # 3. Move it to your project root:
    mv ~/Downloads/client_secret_*.json ./credentials.json
    
    # Verify the file exists and has correct permissions
    ls -l credentials.json  # Should show -rw------- (readable only by you)
    
  5. Autenticación por Primera Vez:

    # Run the server once to authenticate
    python mcp_videos.py
    
    # This will:
    # 1. Open your browser
    # 2. Ask you to sign in to Google
    # 3. Grant permissions to the application
    # 4. Create a token.pickle file (automatically ignored by git)
    

⚠️ Notas de Seguridad Importantes:

  • Nunca hagas commit de credentials.json o token.pickle en git
  • Mantén tus credenciales seguras y no las compartas
  • Si las credenciales se ven comprometidas:
    1. Ve a la Consola de Google Cloud
    2. Elimina las credenciales comprometidas
    3. Crea nuevas credenciales
    4. Actualiza tu credentials.json local

Instalación

  1. Clona el repositorio:
git clone https://github.com/yourusername/youtube-mcp-server.git
cd youtube-mcp-server
  1. Crea y activa un entorno virtual:
# Create virtual environment
python -m venv .venv

# Activate virtual environment
# On macOS/Linux:
source .venv/bin/activate
# On Windows (Command Prompt):
.venv\Scripts\activate
# On Windows (PowerShell):
.venv\Scripts\Activate.ps1
  1. Instala las dependencias usando uv:
# Install project in editable mode
uv pip install -e .

# If you encounter any SSL errors on macOS, you might need to:
export SSL_CERT_FILE=/etc/ssl/cert.pem
  1. Configura las credenciales de la API de YouTube:
    • Ve a Consola de Google Cloud
    • Crea un nuevo proyecto
    • Habilita la API de Datos de YouTube v3
    • Crea credenciales (ID de Cliente OAuth 2.0)
    • Descarga las credenciales y guárdalas como client_secrets.json

Configuración de Desarrollo

Para desarrollo, es posible que quieras instalar herramientas adicionales:

# Install development dependencies
uv pip install -e ".[dev]"

# Install pre-commit hooks
pre-commit install

Configuración

  1. Crea un archivo .env en la raíz del proyecto:
# Required environment variables
YOUTUBE_API_KEY=your_api_key_here

# Optional configuration
YOUTUBE_API_QUOTA_LIMIT=10000  # Daily quota limit
YOUTUBE_API_REGION=US          # Default region
  1. Verifica tu configuración:
# Check if credentials are properly set up
ls -l credentials.json  # Should exist and be readable
ls -l .env             # Should exist and be readable
ls -l token.pickle     # Should exist after first authentication

# Test the server
python mcp_videos.py

🛠️ Uso

Iniciar el Servidor

python mcp_videos.py

Herramientas Disponibles

  1. Buscar Videos
@mcp.tool()
async def get_videos(search: str, max_results: int)
  1. Obtener Información del Video
@mcp.tool()
async def get_video_info(video_id: str)
  1. Obtener Detalles del Canal
@mcp.tool()
async def get_channel_details(channel_id: str)
  1. Obtener Comentarios del Video
@mcp.tool()
async def get_video_comments_tool(video_id: str, max_results: int = 100)
  1. Obtener Videos en Tendencia
@mcp.tool()
async def get_trending_videos_tool(region_code: str = "US", max_results: int = 50)
  1. Obtener Videos Relacionados
@mcp.tool()
async def get_related_videos_tool(video_id: str, max_results: int = 25)
  1. Resumir Video
@mcp.tool()
async def summarize_video(video_id: str, include_comments: bool = True)
  1. Generar Tarjetas de Estudio del Video
@mcp.tool()
async def generate_video_flashcards(
    video_id: str,
    max_cards: int = 10,
    categories: Optional[List[str]] = None,
    difficulty: Optional[str] = None
)

Esta herramienta genera tarjetas de estudio educativas a partir del contenido del video:

  • Crea diferentes tipos de tarjetas (Completar el espacio en blanco, Pregunta y respuesta, Definición)
  • Incluye marcas de tiempo para referencia del video
  • Clasifica las tarjetas por tipo y dificultad
  • Proporciona estadísticas de las tarjetas

Ejemplo de uso:

# Generate 15 flash cards from a video
cards = generate_video_flashcards(
    video_id="dQw4w9WgXcQ",
    max_cards=15,
    categories=["Q&A", "Definition"],
    difficulty="Medium"
)

# Generate all types of cards
cards = generate_video_flashcards(
    video_id="dQw4w9WgXcQ",
    max_cards=20
)

Tipos de Tarjetas:

  • Completar el espacio en blanco: Evalúa el recuerdo de términos o conceptos específicos
  • Pregunta y respuesta: Preguntas sobre puntos clave del video
  • Definición: Explica conceptos importantes

Niveles de Dificultad:

  • Fácil: Recuerdo básico y comprensión
  • Medio: Aplicación de conceptos
  • Difícil: Conceptos complejos y relaciones
  1. Generar Cuestionario del Video
@mcp.tool()
async def generate_video_quiz(video_id: str) -> str

Esta herramienta genera un cuestionario completo a partir del contenido del video:

  • Crea preguntas de opción múltiple
  • Genera afirmaciones de verdadero/falso
  • Incluye preguntas de completar el espacio en blanco
  • Utiliza metadatos del video, transcripción y descripción
  • Proporciona respuestas y explicaciones

Ejemplo de uso:

# Generate a quiz from a video
quiz = generate_video_quiz("dQw4w9WgXcQ")

Características del Cuestionario:

  • Preguntas de Opción Múltiple

    • Basadas en el contenido del video
    • Incluyen metadatos del video
    • Evalúan la comprensión de conceptos clave
  • Preguntas de Verdadero/Falso

    • Evalúan el conocimiento factual
    • Basadas en estadísticas del video
    • Verifican la comprensión de afirmaciones
  • Completar el Espacio en Blanco

    • Evalúa el recuerdo de términos específicos
    • Utiliza el contenido de la transcripción
    • Se centra en conceptos clave

Formato del Cuestionario:

=== Video Quiz ===
Title: [Video Title]
Channel: [Channel Name]
URL: [Video URL]

Question 1 (Multiple Choice):
[Question text]
1. [Option 1]
2. [Option 2]
3. [Option 3]
4. [Option 4]

Answer: [Correct answer]
------------------

Question 2 (True/False):
[Statement]

Answer: True/False
------------------

Question 3 (Fill in the blank):
[Question with blank]

Answer: [Correct answer]
------------------

La herramienta de cuestionario:

  • Genera exactamente 10 preguntas
  • Mezcla diferentes tipos de preguntas
  • Incluye contexto del video
  • Proporciona retroalimentación inmediata
  • Utiliza metadatos del video para las preguntas
  • Incorpora contenido de la transcripción
  • Evalúa diferentes niveles de comprensión

📊 Arquitectura

El proyecto sigue una arquitectura modular:

graph TD
    A[LLM Client] --> B[MCP Client]
    B --> C[MCP Server]
    C --> D[YouTube API]
    C --> E[Tool Registry]
    C --> F[Data Formatter]

    subgraph "Tools"
        E --> E1[Video Tools]
        E --> E2[Channel Tools]
        E --> E3[Comment Tools]
        E --> E4[Analysis Tools]
    end

🔧 Desarrollo

Estructura del Proyecto

youtube-mcp-server/
├── mcp_videos.py          # Main server implementation
├── youtube_api.py         # YouTube API client
├── yt_helper.py          # Helper functions
├── requirements.txt       # Project dependencies
├── .env                  # Environment variables
├── .gitignore           # Git ignore rules
└── README.md            # This file

Agregar Nuevas Herramientas

  1. Crea una nueva función asíncrona en mcp_videos.py
  2. Decórala con @mcp.tool()
  3. Implementa la lógica de la herramienta
  4. Agrega el manejo de errores apropiado
  5. Actualiza la documentación

📝 Documentación de la API

Formatos de Respuesta

  1. Formato de Video
{
    "title": str,
    "channel_title": str,
    "duration": str,
    "description": str,
    "view_count": int,
    "like_count": int,
    "comment_count": int,
    "url": str,
    "published_at": str
}
  1. Formato de Canal
{
    "title": str,
    "subscriber_count": int,
    "video_count": int,
    "view_count": int,
    "description": str,
    "published_at": str
}
  1. Formato de Comentario
{
    "author": str,
    "text": str,
    "like_count": int,
    "published_at": str
}

🤝 Contribuciones

  1. Haz un fork del repositorio
  2. Crea una rama de características
  3. Haz commit de tus cambios
  4. Haz push a la rama
  5. Crea una Solicitud de Extracción (Pull Request)

📄 Licencia

Este proyecto está licenciado bajo la Licencia MIT: consulta el archivo LICENSE para más detalles.

🙏 Agradecimientos

📞 Soporte

Para soporte, por favor:

  1. Consulta la documentación
  2. Abre un issue
  3. Contacta a los mantenedores

🔄 Actualizaciones

Mantente al día con el proyecto:

🔒 Seguridad

Manejo de Datos Sensibles

⚠️ IMPORTANTE: Nunca hagas commit de archivos sensibles al repositorio:

  • token.pickle
  • client_secrets.json
  • Archivos .env
  • Cualquier otro archivo de credenciales

Estos archivos se ignoran automáticamente mediante .gitignore, pero si accidentalmente haces commit de ellos:

  1. Elimínalos del seguimiento de git:
git rm --cached token.pickle
git rm --cached client_secrets.json
  1. Revoca y regenera cualquier credencial expuesta
  2. Actualiza tu archivo .env local con las nuevas credenciales
  3. Nunca compartas ni expongas estos archivos públicamente

Mejores Prácticas

  1. Usa siempre variables de entorno para datos sensibles
  2. Mantén las credenciales en el archivo .env (ya está en .gitignore)
  3. Rota regularmente las claves de API y los tokens
  4. Usa OAuth 2.0 para la autenticación
  5. Supervisa las alertas de escaneo de secretos de GitHub

🖥️ Configuración de Claude Desktop

1. Instalar Claude Desktop

  1. Descargar Claude Desktop:

    • Visita Claude Desktop
    • Descarga la versión apropiada para tu sistema operativo:
      • macOS: archivo .dmg
      • Windows: instalador .exe
      • Linux: paquete .AppImage o .deb
  2. Instalar la Aplicación:

    # macOS
    # 1. Open the .dmg file
    # 2. Drag Claude to Applications folder
    # 3. Open from Applications
    
    # Windows
    # 1. Run the .exe installer
    # 2. Follow the installation wizard
    # 3. Launch from Start Menu
    
    # Linux (Ubuntu/Debian)
    sudo dpkg -i claude-desktop_*.deb  # For .deb package
    # OR
    chmod +x Claude-*.AppImage         # For AppImage
    ./Claude-*.AppImage
    

2. Configurar el Cliente MCP

  1. Abrir la Configuración de Claude Desktop:

    • Haz clic en el ícono de engranaje (⚙️) o
    • Usa el atajo de teclado:
      • macOS: Cmd + ,
      • Windows/Linux: Ctrl + ,
  2. Agregar la Configuración MCP:

    • Navega a "Configuración MCP" o "Configuración Avanzada"
    • Agrega la siguiente configuración:
    {
      "mcpServers": {
        "youtube_videos": {
          "command": "uv",
          "args": [
            "--directory",
            "<your base directory>/youtube-mcp-server",
            "run",
            "mcp_videos.py"
          ]
        }
      }
    }
    
  3. Reemplazar la Ruta:

    • Reemplaza <your base directory> con la ruta real de tu proyecto

    • Ejemplo para diferentes sistemas operativos:

      // macOS/Linux
      "/Users/username/Documents/youtube-mcp-server"
      
      // Windows
      "C:\\Users\\username\\Documents\\youtube-mcp-server"
      
  4. Verificar la Configuración:

    # Test the MCP server path
    cd "<your base directory>/youtube-mcp-server"
    uv run mcp_videos.py
    

3. Usar Claude con MCP

  1. Inicia Claude Desktop

  2. Conéctate al Servidor MCP:

    • El servidor debería iniciarse automáticamente
    • Verás un indicador de estado de conexión
    • Las herramientas disponibles se listarán en la interfaz
  3. Prueba la Conexión:

    # Try a simple command
    get_videos("python programming", max_results=5)
    

Solución de Problemas de Conexión MCP

  1. El Servidor No Inicia:

    # Check if the path is correct
    pwd  # Should show your project directory
    
    # Verify Python environment
    which python  # Should point to your virtual environment
    
    # Check uv installation
    uv --version
    
  2. Problemas de Conexión:

    • Verifica que el servidor esté en ejecución
    • Comprueba la ruta de configuración
    • Asegúrate de que todas las dependencias estén instaladas
    • Revisa los registros en Claude Desktop
  3. Errores Comunes:

    # Path not found
    # Solution: Use absolute path in configuration
    
    # Permission denied
    # Solution: Check file permissions
    chmod +x mcp_videos.py
    
    # Module not found
    # Solution: Verify virtual environment
    source .venv/bin/activate  # or appropriate activation command