YouTube MCP Server

Extraia metadados e legendas de vídeos do YouTube e converta-os para markdown.

Documentação

YouTube MCP Server

Um servidor Model Context Protocol (MCP) para interagir com vídeos do YouTube. Este servidor fornece ferramentas para extrair metadados de vídeo, legendas e convertê-los para o formato markdown com vários modelos.

Recursos

  • Metadados de Vídeo: Obter informações abrangentes do vídeo
  • Extração de Legendas: Suporte para legendas automáticas e manuais
  • Múltiplos Idiomas: Suporte integrado para inglês e francês
  • Sistema de Modelos: Três modelos markdown integrados:
    • Básico: Formato simples de transcrição
    • Detalhado: Metadados completos com timestamps
    • Pesquisa: Destaque de resultados com contexto
  • Funcionalidade de Pesquisa: Pesquisar dentro das legendas do vídeo
  • Autenticação Flexível: Suporta autenticação por chave de API e OAuth2

Pré-requisitos

  • Node.js (v16 ou superior)
  • npm ou yarn
  • Uma chave da API de Dados do YouTube e/ou credenciais OAuth2

Instalação

  1. Clone o repositório:
git clone [repository-url]
cd youtube-mcp
  1. Instale as dependências:
npm install
  1. Compile o projeto:
npm run build

Configuração

Crie um arquivo .env no diretório raiz com suas credenciais do 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

Configuração do MCP

Adicione o servidor ao seu arquivo de configurações do MCP (geralmente em ~/.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

O servidor fornece as seguintes ferramentas:

1. Obter Informações do Vídeo

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

2. Obter Legendas

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

3. Converter para 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 Modelos

use_mcp_tool youtube list_templates

Dependências

{
  "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"
  }
}

Configuração OAuth2

Para autenticação OAuth2 (necessária para acesso a vídeos privados):

  1. Crie um projeto no Google Cloud Console
  2. Ative a API de Dados do YouTube v3
  3. Crie credenciais OAuth2 (tipo Aplicativo Web)
  4. Execute o script de autenticação:
node src/get-api-key.js
  1. Siga as instruções do navegador para autorizar o aplicativo
  2. Copie o token de atualização para sua configuração

Personalizando Modelos

Você pode adicionar modelos personalizados modificando o array DEFAULT_TEMPLATES em src/index.ts. Os modelos seguem esta estrutura:

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

Licença

MIT

Contribuindo

  1. Faça um fork do repositório
  2. Crie sua branch de funcionalidade (git checkout -b feature/amazing-feature)
  3. Faça commit das suas alterações (git commit -m 'Add some amazing feature')
  4. Envie para a branch (git push origin feature/amazing-feature)
  5. Abra um Pull Request