Content
# notebooklm-mcp
An MCP (Model Context Protocol) server that exposes [Google NotebookLM](https://notebooklm.google.com) as a tool surface for Claude Desktop, Claude Code, and any other MCP-compatible client.
Built on top of [notebooklm-py](https://github.com/teng-lin/notebooklm-py), an unofficial Python API for NotebookLM.
> **Warning — Unofficial / Undocumented APIs**
>
> `notebooklm-py` drives Google's internal NotebookLM endpoints, which are
> **undocumented and subject to change without notice**. Google is not
> affiliated with this project. API breakage can happen at any time.
>
> **Recommended: use a throwaway Google account** for this integration
> rather than your primary account. Rate limits and terms-of-service
> restrictions apply.
---
## Available Tools
| Tool | Description |
|------|-------------|
| `notebooklm_list_notebooks` | List all notebooks in the account |
| `notebooklm_create_notebook` | Create a new notebook |
| `notebooklm_add_source` | Add a URL, YouTube link, or pasted text as a source |
| `notebooklm_ask` | Ask a question against a notebook's sources |
| `notebooklm_generate_audio_overview` | Generate an Audio Overview (podcast deep dive) |
| `notebooklm_list_artifacts` | List all generated artifacts in a notebook |
| `notebooklm_download_artifact` | Download an artifact to a local file |
---
## Installation & Setup
### 1. Install the package
**Option A — uvx (recommended, no persistent install needed):**
```bash
# No install step required; uvx downloads and runs on demand.
# Just make sure uv is installed: https://docs.astral.sh/uv/
```
**Option B — pip into a dedicated environment:**
```bash
pip install "notebooklm-mcp"
```
**Option C — from source (this repo):**
```bash
git clone https://github.com/deji-adesoga/notebooklm-mcp
cd notebooklm-mcp
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # macOS/Linux
pip install -e .
```
### 2. Install the Chromium browser (required for login)
```bash
playwright install chromium
```
If you see `TypeError: onExit is not a function` on Linux, see the
[notebooklm-py troubleshooting guide](https://github.com/teng-lin/notebooklm-py/blob/main/docs/troubleshooting.md#linux).
### 3. Authenticate (one-time)
```bash
notebooklm login
```
This opens a Chromium browser window. Log in with your (throwaway) Google
account. Credentials are saved to `~/.notebooklm/profiles/default/storage_state.json`.
You only need to do this once — the MCP server reads the stored cookies automatically.
To verify authentication worked:
```bash
notebooklm auth check --test
```
---
## Claude Desktop Configuration (Windows MSIX)
The MSIX edition of Claude Desktop reads its MCP config from:
```
%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude_desktop_config.json
```
Open that file (create it if it doesn't exist) and add the `notebooklm` entry
to the `mcpServers` object.
### Option A — uvx (no persistent install)
```json
{
"mcpServers": {
"notebooklm": {
"command": "uvx",
"args": ["notebooklm-mcp"]
}
}
}
```
### Option B — local venv (from-source install)
```json
{
"mcpServers": {
"notebooklm": {
"command": "C:\\Users\\Diggity\\Documents\\Local Repositories\\notebooklm-mcp\\.venv\\Scripts\\python.exe",
"args": ["-m", "notebooklm_mcp.server"]
}
}
}
```
Restart Claude Desktop after editing the config.
---
## Quickstart (once configured)
Once the server is running, Claude can use natural language to drive NotebookLM:
```
List my notebooks.
Create a notebook called "AI Safety Reading List".
Add https://arxiv.org/abs/2301.13379 as a source and wait for it to index.
Ask "What are the key findings?" in that notebook.
Generate an audio overview for the notebook.
Download the audio to C:/Users/Diggity/Downloads/podcast.mp3.
```
---
## Artifact Type Reference
When calling `notebooklm_download_artifact`, use these `artifact_type` values:
| artifact_type | Output format |
|---------------|---------------|
| `audio` | MP3/MP4 |
| `video` | MP4 |
| `report` | Markdown (.md) |
| `quiz` | JSON |
| `flashcards` | JSON |
| `infographic` | PNG |
| `slide_deck` | PDF |
| `data_table` | CSV |
| `mind_map` | JSON |
---
## Development
```bash
git clone https://github.com/deji-adesoga/notebooklm-mcp
cd notebooklm-mcp
python -m venv .venv
.venv\Scripts\activate
pip install -e ".[dev]"
# Verify tools enumerate cleanly (no Google login needed)
python -c "from notebooklm_mcp.server import mcp; print([t.name for t in mcp.get_tools().values()])"
# Test with MCP Inspector
npx @modelcontextprotocol/inspector python -m notebooklm_mcp.server
```
---
## License
MIT — see [LICENSE](LICENSE).
Underlying library: [notebooklm-py](https://github.com/teng-lin/notebooklm-py) (MIT).