YouTube MCP Server

Extraer metadatos y subtítulos de videos de YouTube y convertirlos a markdown.

Documentación

Servidor MCP de YouTube

Un servidor de Model Context Protocol (MCP) para interactuar con videos de YouTube. Este servidor proporciona herramientas para extraer metadatos de videos, subtítulos y convertirlos a formato markdown con varias plantillas.

Características

  • Metadatos de Video: Obtén información completa del video
  • Extracción de Subtítulos: Soporte para subtítulos automáticos y manuales
  • Múltiples Idiomas: Soporte integrado para inglés y francés
  • Sistema de Plantillas: Tres plantillas markdown integradas:
    • Básica: Formato de transcripción simple
    • Detallada: Metadatos completos con marcas de tiempo
    • Búsqueda: Resaltado de resultados con contexto
  • Funcionalidad de Búsqueda: Busca dentro de los subtítulos del video
  • Autenticación Flexible: Soporta autenticación mediante clave API y OAuth2

Requisitos Previos

  • Node.js (v16 o superior)
  • npm o yarn
  • Una clave de YouTube Data API y/o credenciales OAuth2

Instalación

  1. Clona el repositorio:
git clone [repository-url]
cd youtube-mcp
  1. Instala las dependencias:
npm install
  1. Compila el proyecto:
npm run build

Configuración

Crea un archivo .env en el directorio raíz con tus credenciales de YouTube:

YOUTUBE_API_KEY=your_api_key
YOUTUBE_CLIENT_ID=your_client_id
YOUTUBE_CLIENT_SECRET=your_client_secret
YOUTUBE_REFRESH_TOKEN=your_refresh_token  # Optional, for OAuth2

Configuración de MCP

Agrega el servidor a tu archivo de configuración de MCP (generalmente en ~/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json):

{
  "mcpServers": {
    "youtube": {
      "command": "node",
      "args": ["path/to/youtube-mcp/build/index.js"],
      "env": {
        "YOUTUBE_API_KEY": "your_api_key",
        "YOUTUBE_CLIENT_ID": "your_client_id",
        "YOUTUBE_CLIENT_SECRET": "your_client_secret"
      },
      "disabled": false,
      "alwaysAllow": []
    }
  }
}

Uso

El servidor proporciona las siguientes herramientas:

1. Obtener Información del Video

use_mcp_tool youtube get_video_info {
  "url": "https://www.youtube.com/watch?v=VIDEO_ID"
}

2. Obtener Subtítulos

use_mcp_tool youtube get_captions {
  "url": "https://www.youtube.com/watch?v=VIDEO_ID",
  "language": "en"  // Optional, defaults to "en"
}

3. Convertir a Markdown

use_mcp_tool youtube convert_to_markdown {
  "url": "https://www.youtube.com/watch?v=VIDEO_ID",
  "template_name": "detailed",  // Optional, "basic", "detailed", or "search"
  "language": "en",            // Optional
  "options": {                 // Optional
    "include_chapters": true,
    "search_term": "keyword"   // Only for search template
  }
}

4. Listar Plantillas

use_mcp_tool youtube list_templates

Dependencias

{
  "dependencies": {
    "@modelcontextprotocol/sdk": "latest",
    "googleapis": "^146.0.0",
    "google-auth-library": "^9.0.0",
    "youtube-captions-scraper": "^2.0.0",
    "express": "^4.18.2",
    "open": "^9.1.0"
  },
  "devDependencies": {
    "@types/node": "^20.0.0",
    "typescript": "^5.0.0",
    "tsx": "^4.0.0"
  }
}

Configuración de OAuth2

Para autenticación OAuth2 (requerida para acceso a videos privados):

  1. Crea un proyecto en la Consola de Google Cloud
  2. Habilita la YouTube Data API v3
  3. Crea credenciales OAuth2 (tipo aplicación web)
  4. Ejecuta el script de autenticación:
node src/get-api-key.js
  1. Sigue las indicaciones del navegador para autorizar la aplicación
  2. Copia el token de actualización a tu configuración

Personalización de Plantillas

Puedes agregar plantillas personalizadas modificando el arreglo DEFAULT_TEMPLATES en src/index.ts. Las plantillas siguen esta estructura:

interface MarkdownTemplate {
  name: string;
  description: string;
  format: {
    header?: string;
    chapter_format?: string;
    caption_block: string;
    timestamp_format?: string;
    search_result_format?: string;
  }
}

Licencia

MIT

Contribuciones

  1. Haz un fork del repositorio
  2. Crea tu rama de características (git checkout -b feature/amazing-feature)
  3. Realiza tus cambios (git commit -m 'Add some amazing feature')
  4. Sube los cambios a la rama (git push origin feature/amazing-feature)
  5. Abre una Solicitud de Extracción