YouTube Transcript MCP Server
Um servidor MCP de alto desempenho para buscar transcrições de vídeos do YouTube, com suporte para cache, limitação de taxa e rotação de proxy.
Documentação
YouTube Transcript MCP Server
Um servidor de alto desempenho do Model Context Protocol (MCP) para buscar transcrições de vídeos do YouTube, implementado em Go.
⚡ Início Rápido (Claude Code)
Instale o binário stdio e registre-o com o Claude Code em um único comando:
# 1. Install the stdio binary (requires Go 1.24+)
go install github.com/kyong0612/youtube-mcp/cmd/mcp@latest
mv "$(go env GOPATH)/bin/mcp" "$(go env GOPATH)/bin/youtube-mcp-stdio"
# 2. Register the server with Claude Code (one-liner)
claude mcp add youtube-transcript -- youtube-mcp-stdio
Para Claude Desktop, Cursor e configuração manual em JSON, consulte a seção Configuração de Cliente MCP abaixo.
🎬 Demonstração
GIF de demonstração em breve. Uma gravação curta de tela mostrando a busca de transcrições a partir de um cliente MCP será adicionada aqui.
📦 Registro e Distribuição MCP
- Registros: Este servidor está sendo preparado para descoberta por meio de registros MCP, como o MCP Registry e o Smithery. O manifesto do registro é adicionado em um PR separado.
- Binários pré-compilados e imagem Docker: Binários multiplataforma e uma imagem de contêiner serão publicados após a primeira release do GitHub ser marcada. Até lá, instale via
go install(acima) ou compile a partir do código-fonte (consulte a seção Instalação abaixo).
🚀 Recursos
- Compatível com o Protocolo MCP 2024-11-05: Implementação completa do Model Context Protocol
- 5 Ferramentas Poderosas:
get_transcript: Busca a transcrição de um único vídeoget_multiple_transcripts: Processa vários vídeos em lotetranslate_transcript: Busca legendas no idioma especificado (incluindo legendas com tradução automática do YouTube quando disponíveis). Isso não traduz mecanicamente texto arbitrário.format_transcript: Formata transcrições (texto simples, SRT, VTT, etc.)list_available_languages: Lista os idiomas de legenda disponíveis
- Alto Desempenho: Construído com Go para velocidade e eficiência
- Cache: Cache em memória implementado (Redis é planejado/ainda não implementado;
CACHE_TYPE=redisatualmente usa o cache em memória como fallback) - Limitação de Taxa: Proteção contra limites da API do YouTube
- Suporte a Proxy: Rotação entre vários proxies
- Pronto para Docker: Implantação fácil com Docker Compose
- Monitoramento: Verificações de saúde integradas (métricas do Prometheus são planejadas/ainda não implementadas)
📋 Requisitos
- Go 1.24 ou superior
- Docker e Docker Compose (opcional)
- Conexão com a internet
🎯 Configuração de Cliente MCP
Instalação Rápida (Recomendada)
Use o script de instalação automática:
# Clone the repository
git clone https://github.com/kyong0612/youtube-mcp.git
cd youtube-mcp
# Run the installer
./scripts/install-mcp.sh
O instalador irá:
- Compilar o binário do servidor MCP
- Configurar o Claude Desktop automaticamente
- Configurar variáveis de ambiente
Instalar via Go Install
Você pode instalar o servidor MCP diretamente usando go install:
# Install the stdio version for MCP clients
go install github.com/kyong0612/youtube-mcp/cmd/mcp@latest
# The binary will be installed to $GOPATH/bin/mcp
# Rename it for clarity
mv $GOPATH/bin/mcp $GOPATH/bin/youtube-mcp-stdio
# Or install to a specific location
GOBIN=/usr/local/bin go install github.com/kyong0612/youtube-mcp/cmd/mcp@latest
sudo mv /usr/local/bin/mcp /usr/local/bin/youtube-mcp-stdio
Em seguida, configure seu cliente MCP para usar o binário instalado:
{
"mcpServers": {
"youtube-transcript": {
"command": "youtube-mcp-stdio",
"args": [],
"env": {
"LOG_LEVEL": "info",
"CACHE_ENABLED": "true",
"YOUTUBE_DEFAULT_LANGUAGES": "en,ja"
}
}
}
}
Nota: Se você instalou em $GOPATH/bin, certifique-se de que ele esteja no seu PATH, ou use o caminho completo no campo de comando.
Configuração Manual
Claude Desktop
Para usar este servidor com o Claude Desktop, adicione ao seu claude_desktop_config.json:
{
"mcpServers": {
"youtube-transcript": {
"command": "/path/to/youtube-mcp/youtube-mcp-stdio",
"args": [],
"env": {
"LOG_LEVEL": "info",
"CACHE_ENABLED": "true",
"YOUTUBE_DEFAULT_LANGUAGES": "en,ja"
}
}
}
}
Importante: O Claude Desktop requer a versão stdio do servidor (youtube-mcp-stdio), não o servidor HTTP.
Compile o servidor stdio:
go build -o youtube-mcp-stdio ./cmd/mcp/
Claude Code (claude.ai/code)
Uma vez que youtube-mcp-stdio esteja no seu PATH (consulte Instalar via Go Install), registre-o com um único comando:
claude mcp add youtube-transcript -- youtube-mcp-stdio
Você também pode apontar o Claude Code para um caminho de binário explícito e passar variáveis de ambiente:
claude mcp add youtube-transcript \
--env YOUTUBE_DEFAULT_LANGUAGES=en,ja \
-- /path/to/youtube-mcp/youtube-mcp-stdio
Cursor
O Cursor suporta servidores MCP por meio de suas configurações. Para configurar:
- Abra as Configurações do Cursor (
Cmd+,no macOS,Ctrl+,no Windows/Linux) - Pesquise por "MCP" ou "Model Context Protocol"
- Adicione a configuração do servidor:
{
"mcp.servers": {
"youtube-transcript": {
"command": "/path/to/youtube-mcp/youtube-mcp-stdio",
"args": [],
"env": {
"LOG_LEVEL": "info",
"CACHE_ENABLED": "true",
"YOUTUBE_DEFAULT_LANGUAGES": "en,ja"
}
}
}
}
Consulte docs/mcp-client-setup.md para instruções detalhadas de configuração.
🛠️ Instalação
Usando Go
# Clone the repository
git clone https://github.com/kyong0612/youtube-mcp.git
cd youtube-mcp
# Install dependencies
make deps
# Build the application
make build
# Run the server
make run
Usando Docker
# Clone the repository
git clone https://github.com/kyong0612/youtube-mcp.git
cd youtube-mcp
# Setup environment
make env-setup
# Edit .env file with your configuration
# Start with Docker Compose
make up
⚙️ Configuração
Copie .env.example para .env e configure:
cp .env.example .env
Principais opções de configuração:
PORT: Porta do servidor (padrão: 8080)YOUTUBE_DEFAULT_LANGUAGES: Idiomas padrão para transcriçõesCACHE_TYPE: Tipo de cache (memory/redis)SECURITY_ENABLE_AUTH: Ativar autenticação da APILOG_LEVEL: Nível de registro (debug/info/warn/error)
🔧 Uso
Usando com Clientes MCP (Claude Desktop, Cursor, etc.)
O servidor MCP será iniciado automaticamente pelo seu cliente MCP. Uma vez configurado, você pode usar as ferramentas diretamente em suas conversas.
Usando como Servidor HTTP
Para desenvolvimento ou testes, você também pode executar a versão do servidor HTTP:
# Run HTTP server
make run
Em seguida, teste com:
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize"
}'
Listar Ferramentas Disponíveis
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list"
}'
Obter Transcrição
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_transcript",
"arguments": {
"video_identifier": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"languages": ["en", "ja"],
"preserve_formatting": false
}
}
}'
Obter Múltiplas Transcrições
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get_multiple_transcripts",
"arguments": {
"video_identifiers": ["dQw4w9WgXcQ", "jNQXAC9IVRw"],
"languages": ["en"],
"continue_on_error": true
}
}
}'
🧪 Desenvolvimento
Executando Testes
# Run all tests
make test
# Run with coverage
make test-coverage
# Run benchmarks
make benchmark
Qualidade de Código
# Format code
make fmt
# Run linter
make lint
# Security scan
make security
Desenvolvimento com Recarga Automática
# Install air for hot reload
go install github.com/air-verse/air@latest
# Run with hot reload
make dev
🐳 Implantação com Docker
Implantação Básica
# Build and start
make up-build
# View logs
make logs
# Stop services
make down
Com Cache Redis
# Start with Redis
make up-redis
Com Monitoramento
# Start with Prometheus & Grafana
make up-monitoring
📊 Monitoramento
Verificação de Saúde
curl http://localhost:8080/health
Verificação de Prontidão
curl http://localhost:8080/ready
Métricas
Nota: Métricas do Prometheus são planejadas/ainda não implementadas. O endpoint
/metricsatualmente retorna um placeholder (# TODO: Implement Prometheus metrics) junto com estatísticas básicas de requisições.
curl http://localhost:9090/metrics
🐛 Solução de Problemas
Problemas Comuns
Erro "Empty transcript response"
- Causa: O servidor está rodando em modo HTTP em vez de modo stdio
- Solução: Certifique-se de usar o binário
youtube-mcp-stdio, não oyoutube-transcript-mcp
Erro "Request timed out"
- Causa: Timeout do Claude Desktop ou servidor não respondendo
- Solução:
- Reinicie o Claude Desktop
- Verifique os logs do servidor:
LOG_LEVEL=debugno ambiente - Verifique a conectividade de rede
"Failed to extract player response" nas verificações de saúde
- Causa: Mudanças na estrutura da página do YouTube ou limitação de taxa
- Solução: Isso geralmente é temporário. O servidor tentará novamente automaticamente.
Servidor não conectando ao Claude Desktop
- Causa: Configuração incorreta ou caminho do binário errado
- Solução:
- Verifique se o binário existe:
ls -la /path/to/youtube-mcp-stdio - Verifique os logs do Claude Desktop: Developer → Open logs
- Certifique-se de que o arquivo de configuração é JSON válido
- Verifique se o binário existe:
Modo de Depuração
Ative o registro de depuração para ver informações detalhadas:
{
"mcpServers": {
"youtube-transcript": {
"command": "/path/to/youtube-mcp/youtube-mcp-stdio",
"args": [],
"env": {
"LOG_LEVEL": "debug",
"CACHE_ENABLED": "true",
"YOUTUBE_DEFAULT_LANGUAGES": "en,ja"
}
}
}
}
🔒 Segurança
- Autenticação por Chave de API: Defina
SECURITY_ENABLE_AUTH=truee configure as chaves de API - Limitação de Taxa: Limitação de taxa configurável por IP
- Lista de Permissões/Bloqueios por IP: Controle o acesso por endereço IP
- CORS: Políticas CORS configuráveis
🤝 Contribuindo
- Faça um fork do repositório
- Crie seu branch de recurso (
git checkout -b feature/amazing-feature) - Faça commit das suas alterações (
git commit -m 'Add amazing feature') - Envie para o branch (
git push origin feature/amazing-feature) - Abra um Pull Request
📝 Licença
Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE para detalhes.
🙏 Agradecimentos
- Inspirado por youtube-transcript-api
- Construído para o Model Context Protocol
⚠️ Aviso Legal
Esta ferramenta é para fins educacionais e de pesquisa. Por favor, respeite os Termos de Serviço do YouTube e as leis de direitos autorais ao usar transcrições.