notebooklm-mcp
by rinaldops
README.md
<div align="center">
# π notebooklm-mcp
**MCP (Model Context Protocol) server for Google NotebookLM** β source-grounded,
citation-backed answers from your own documents, inside Claude Code and any MCP client.
[](CHANGELOG.md)
[](https://marketplace.visualstudio.com/items?itemName=RinaldoPS.notebooklm-mcp-vscode)
[](LICENSE)
[](package.json)
[](https://www.typescriptlang.org/)
[](https://modelcontextprotocol.io)
π¬π§ English Β· π§π· [PortuguΓͺs](README.pt-br.md)
</div>
> β οΈ **Notice.** Unofficial project, not affiliated with Google. Automating a logged-in
> session may be considered automated access under NotebookLM's Terms, with risk to your
> account. Use at your own risk. Subject to usage limits (e.g. ~50 questions/day on the free plan).
---
## β¨ Highlights
- **Source-grounded answers** β every reply comes from your uploaded documents (Gemini), drastically reducing hallucinations.
- **Any MCP client** β works with Claude Code, Cursor, and anything that speaks the Model Context Protocol over stdio.
- **No official API** β browser automation with [Patchright](https://github.com/Kaliiiiiiiiii-Vinyzu/patchright), reusing a logged-in Google session.
- **Smart Add** β NotebookLM itself describes a notebook's name, content, and topics so your library stays accurate.
- **Zero Python friction** β pure TypeScript/Node, distributed via `npx`. No interpreter, venv, or pip.
## π Prerequisites
| Requirement | Notes |
|-------------|-------|
| **Node.js β₯ 20** | Runtime for the server and CLI. |
| **Google account** | With access to your NotebookLM notebooks. |
| **Chromium-based browser** | System Google Chrome by default; Patchright's Chromium can be installed on demand. |
## π Installation & usage
```bash
# 1. Interactive login (once; opens the browser for you to log in to Google)
npx @rinaldops/notebooklm-mcp login
# 2. Register with Claude Code (consumed over stdio)
claude mcp add notebooklm -- npx -y @rinaldops/notebooklm-mcp
# Library management (optional; equivalent MCP tools also exist)
npx @rinaldops/notebooklm-mcp notebooks add "<url>" "My Notebook" "Description" "topic1,topic2"
npx @rinaldops/notebooklm-mcp notebooks list # local library
npx @rinaldops/notebooklm-mcp notebooks remote # all notebooks in the account
npx @rinaldops/notebooklm-mcp notebooks describe <url> # Smart Add: discovers the notebook's metadata
```
> π‘ Prefer the editor experience? Install the **VS Code extension** in
> [packages/extension](packages/extension) β it registers the server and auto-configures
> Claude Code / Cursor in your workspace.
### Smart Add (catalog with automatic metadata)
Recommended flow to populate the library without making up descriptions:
1. `notebooks remote` (or the `notebooklm_list_remote_notebooks` tool) β get the URL.
2. `notebooks describe <url>` (or `notebooklm_describe_notebook`) β NotebookLM itself
describes the name, content, and topics.
3. `notebooks add <url> <name> <description> <topics>` based on step 2.
## π§° Exposed tools
| Tool | Purpose |
|------|---------|
| `notebooklm_ask` | Ask a notebook (active, by id, or by URL) |
| `notebooklm_list_notebooks` | List the local library |
| `notebooklm_list_remote_notebooks` | Discover **all** notebooks in the account (scrapes the panel) |
| `notebooklm_describe_notebook` | Smart Add: ask the notebook what it contains (name/description/topics) |
| `notebooklm_add_notebook` | Add a notebook |
| `notebooklm_activate_notebook` | Set the active notebook |
| `notebooklm_remove_notebook` | Remove a notebook |
| `notebooklm_auth_status` | Session status |
## βοΈ Configuration (env)
| Variable | Default | Description |
|----------|---------|-------------|
| `NOTEBOOKLM_CONFIG_DIR` | `~/.notebooklm-mcp` | Data/session directory |
| `NOTEBOOKLM_HEADLESS` | `true` | Headless browser for questions |
| `NOTEBOOKLM_BROWSER_CHANNEL` | `chrome` | Chromium channel (`chrome`/`msedge`/...) |
| `NOTEBOOKLM_DEFAULT_NOTEBOOK_URL` | β | Default notebook when none is active |
## π οΈ Development
Monorepo with npm workspaces:
- [packages/mcp-server](packages/mcp-server) β the MCP server (publishable via `npx`).
- [packages/extension](packages/extension) β the VS Code extension (registers/auto-configures
the server). Built with `tsup`; debug with **F5** (Extension Development Host).
```bash
npm install # install all workspaces (from the root)
npm run build # build all packages
npm run typecheck
# Server commands (run inside the package):
cd packages/mcp-server
npm run dev -- login # login via tsx, no build
npm start # node dist/cli.js (after build)
```
See [PLAN.md](./PLAN.md) for the development plan and the status of each part, and
[CHANGELOG.md](./CHANGELOG.md) for release history.
## π License
[MIT](LICENSE) Β© 2026 Rinaldo Paulino de Souza. Unofficial project, not affiliated with
Google β use at your own risk; see the notice at the top.
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues