Skip to main content
Glama
decsters01

MCP Gemini Notebook 2026

by decsters01
README.md
# MCP Gemini Notebook 2026

<p align="center">
  <strong>NotebookLM + Gemini → Cursor / Claude / Codex</strong><br/>
  Respostas grounded nas <em>suas</em> fontes. Sem alucinação de documentação.
</p>

<p align="center">
  <a href="#instalação-no-cursor"><img src="https://img.shields.io/badge/Cursor-MCP-black?style=for-the-badge" alt="Cursor" /></a>
  <a href="#o-que-foi-corrigido"><img src="https://img.shields.io/badge/Patch-Issue%20%2374-success?style=for-the-badge" alt="Patch #74" /></a>
  <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue?style=for-the-badge" alt="MIT" /></a>
  <img src="https://img.shields.io/badge/Node-18%2B-green?style=for-the-badge" alt="Node 18+" />
</p>

---

## Por que este fork existe?

O upstream [`notebooklm-mcp`](https://github.com/PleasePrompto/notebooklm-mcp) é excelente — mas no Gemini (2026) o NotebookLM passou a mostrar o **raciocínio interno** ("Thoughts" / "Defining the Scope…") no mesmo bloco da resposta.

Resultado: o MCP capturava o *thinking* e devolvia isso como se fosse a resposta final.

**Este repositório corrige isso.** Validado na prática: perguntas sobre MQL5 com ~200 fontes no notebook voltam com resposta real, citações e estrutura.

> Fork honesto do projeto MIT da comunidade. Créditos totais ao [PleasePrompto](https://github.com/PleasePrompto/notebooklm-mcp). Detalhes em [`NOTICE.md`](NOTICE.md).

---

## O que foi corrigido

Patch baseado no [issue #74](https://github.com/PleasePrompto/notebooklm-mcp/issues/74):

| Antes | Depois |
| --- | --- |
| Retornava "Defining the X…" / "Thoughts" | Espera a geração **terminar** |
| Aceitava texto estável cedo demais | Só aceita quando o textarea reativa |
| Misturava thinking no DOM | Esconde `thinking-chain-view` na leitura |
| Prefixo `Thoughts` vazava na resposta | Header removido no `sanitizeAnswer` |

Arquivo principal: `src/notebooklm/chat.ts`

---

## O que você consegue fazer

- Perguntar ao NotebookLM direto do Cursor (ou Claude Code / Codex)
- Respostas **só com base nas fontes** do notebook (Gemini)
- Adicionar fontes por URL ou texto
- Gerar / baixar Audio Overview
- Manter sessão (RAG conversacional) entre perguntas
- Biblioteca local de notebooks (`add_notebook`, `select_notebook`, …)

---

## Requisitos

- Node.js **18+**
- Google Chrome (canal estável)
- Conta Google com acesso ao [NotebookLM](https://notebooklm.google.com)

---

## Instalação no Cursor

### 1) Clone e build

```bash
git clone https://github.com/decsters01/mcp-gemini-notebook-2026.git
cd mcp-gemini-notebook-2026
npm install
npm run build
```

### 2) Configure o MCP

Em `~/.cursor/mcp.json` (Windows: `C:\Users\<voce>\.cursor\mcp.json`):

```json
{
  "mcpServers": {
    "notebooklm": {
      "command": "node",
      "args": [
        "C:/Users/gabde/Downloads/mcp-gemini-notebook-2026/dist/index.js"
      ]
    }
  }
}
```

> Troque o caminho pelo absoluto da sua máquina. No Windows use barras `/` ou escape `\\`.

### 3) Reinicie o Cursor

Settings → Tools & MCP → o servidor `notebooklm` deve ficar verde.

### 4) Login

No chat do Cursor:

```
Log me in to NotebookLM
```

Abre o browser → entra com Google → cookies ficam salvos no perfil local.

### 5) Registre um notebook

1. Abra o notebook no NotebookLM
2. Share → "Anyone with the link" → copie a URL
3. Peça ao agente para registrar com `add_notebook`

Pronto. Agora: *"consulta o notebook sobre X"* — e a resposta vem das suas fontes.

---

## Uso rápido (Claude Code / Codex / npx)

```bash
# Claude Code
claude mcp add notebooklm -- node /caminho/para/mcp-gemini-notebook-2026/dist/index.js

# Ou via bin local após npm link
npm link
notebooklm-mcp
```

---

## Fluxo recomendado

```text
get_health          → autenticado?
setup_auth          → login Google (1x)
add_notebook        → cola a URL pública
select_notebook     → define o padrão
ask_question        → pesquisa grounded
add_source          → url | text
```

Dica de ouro: peça respostas com `source_format: "footnotes"` quando for mostrar citação pra humano.

---

## Prompt de sistema (opcional, ~2000 chars)

No NotebookLM → personalizar instruções → cole algo assim:

```text
Você é a fonte de verdade deste notebook para um agente de IA (Cursor).
Responda SÓ com base nas fontes. Se não estiver nas fontes: "Não encontrado nas fontes."
Formato: (1) resposta direta (2) detalhamento (3) evidências com fontes (4) lacunas.
Tom: técnico, PT-BR, sem enrolação. Cite conflitos entre fontes quando existirem.
```

---

## Limites (conta free Google)

- ~50 queries/dia no NotebookLM
- ~50 fontes por notebook (free)
- Sessão MCP idle ~15 min

Pro tip: use conta secundária se for experimentar muito.

---

## Estrutura

```text
src/
  notebooklm/
    chat.ts        ← patch #74 (thinking vs resposta final)
    selectors.ts
    citations.ts
    sources.ts
    audio.ts
  session/
  tools/
dist/              ← build (o Cursor aponta aqui)
```

---

## Créditos

- Upstream: **[PleasePrompto/notebooklm-mcp](https://github.com/PleasePrompto/notebooklm-mcp)** — MIT
- Patch community 2026: correção do extended-thinking do Gemini
- Inspiração nos comentários do issue #74 (heurística + gate de geração + skip estrutural no DOM)

Se o upstream publicar o fix oficial, este fork pode ser arquivado ou rebaseado — e isso é ótimo.

---

## Licença

[MIT](LICENSE) — use, fork, melhore, compartilhe.

---

<p align="center">
  Feito pra quem quer o Cursor falando com o <strong>NotebookLM de verdade</strong> — não com o monólogo interno do modelo.
</p>