Skip to main content
Glama
gomesmr

youtube-transcript-mcp

by gomesmr
README.md
# youtube-transcript-mcp

Servidor MCP local, em stdio, que expõe uma tool `get_transcript(url, language?)` para extrair a
transcrição de um vídeo do YouTube — sem API key, sem depender de infraestrutura de terceiros.

## Por que existe

Substitui o servidor remoto de terceiros listado em mcpmarket.com (`ergut/youtube-transcript-mcp`),
cuja conexão via SSE falhava — o endpoint nunca envia o evento `endpoint` exigido pelo transporte
SSE legado do MCP, só uma notificação solta (`notifications/initialized`), travando o cliente
esperando. Este servidor roda inteiramente na sua máquina, sem cache de dados fora dela.

## Contrato da tool

```
get_transcript(url: string, language?: string)
→ {
    videoId, title, channel, url,
    language, availableLanguages,
    transcript: { start: number, text: string }[]
    // start em segundos, precisão original do YouTube (não arredondado)
    // array, não dicionário por timestamp — evita reordenação de chave
    // inteira e colisão quando duas legendas caem no mesmo segundo
  }
```

Se `language` for pedido e não existir para aquele vídeo, retorna erro listando
`availableLanguages` em vez de falhar silenciosamente. Aceita tanto o **nome de exibição** usado
pelo YouTube (ex. `"Portuguese"`, `"English (auto-generated)"`) quanto o **código ISO** (ex.
`"pt"`, `"en"`).

A tool só extrai e devolve texto/metadados — não grava nada em disco e não integra com nenhum
sistema de memória. O que fazer com o resultado (salvar, processar, indexar) é responsabilidade
de quem consome a tool.

## Stack

Node + TypeScript, [`@modelcontextprotocol/sdk`](https://github.com/modelcontextprotocol/sdk)
(transporte stdio) e [`youtubei.js`](https://github.com/LuanRT/YouTube.js) para extração sem API
key. Sem etapa de build — roda via `npx tsx src/index.ts`.

**Risco conhecido:** o endpoint interno de transcrição do YouTube já teve falhas HTTP 400
intermitentes reportadas na lib `youtubei.js` ([LuanRT/YouTube.js#1102](https://github.com/LuanRT/YouTube.js/issues/1102)),
e há discussão em aberto sobre exigência de PoToken para reduzir bloqueio por bot. Sem mitigação
implementada por enquanto — se aparecer na prática, trate então (retry, PoToken, etc.).

## Setup

```bash
git clone <url-deste-repo>
cd youtube-transcript-mcp
npm install
```

Registro no Claude Code (escopo local, só no projeto onde for usado):

```bash
claude mcp add --scope local youtube-transcript -- npx tsx /caminho/para/youtube-transcript-mcp/src/index.ts
```

Ajuste o caminho para onde você clonou o repositório.

## Origem

Extraído de [harness-engineering-scaffold](https://github.com/gomesmr/harness-engineering-scaffold) —
nasceu como parte de um projeto de harness engineering mais amplo, mas é uma ferramenta
independente e genérica: qualquer projeto que precise extrair transcrições do YouTube pode usá-la
sem depender do resto do scaffold.

## Licença

MIT — ver [LICENSE](LICENSE). Use, copie, modifique e redistribua livremente.

TDQS

B3.4/5.0

Scored across 1 tool

Disambiguation5/5

There is only one tool, so there is no possibility of confusion or overlap between tools. The single tool has a clearly distinct purpose.

Naming Consistency5/5

With only one tool named 'get_transcript', naming is trivially consistent. It follows a verb_noun pattern (get_transcript), which is clear and predictable.

Tool Count3/5

The server has only one tool, which is at the lower end of the appropriate range. While it serves a focused purpose, a single tool feels thin and may limit usefulness.

Completeness5/5

The tool fully covers its intended purpose of extracting transcripts from YouTube videos via URL or ID. No obvious gaps exist for the given domain.

Maintenance

ActivityStale
ResponsivenessNo issues