NotebookLM MCP
by sprmdta
README.md
# NotebookLM MCP for Claude Desktop
  
Gives Claude Desktop full control over Google NotebookLM via 56 MCP tools — manage notebooks, sources, chat, artifacts, notes, sharing, research, and export.
| Category | Example tools |
|---|---|
| Notebooks | list, create, get, rename, delete, summary, description |
| Sources | list, add (URL/text/file/Drive), get, fulltext, guide, delete, refresh, rename |
| Chat | ask (with citations), configure, set mode, history |
| Artifacts | generate audio, video, slides, quiz, flashcards, report, infographic, mind map, study guide, data table |
| Artifact Mgmt | list, poll status, wait, download, delete, rename, revise slide, suggest reports |
| Notes | create, list, update, delete |
| Sharing | get status, set public/private, add/remove users, set view level, get share URL |
| Research | start web/Drive research, poll status, import sources |
| Settings | get/set output language |
| Export | export to Google Docs/Sheets |
---
## Prerequisites
- Python 3.10 or higher
- A Google account with NotebookLM access ([notebooklm.google.com](https://notebooklm.google.com))
- Git (optional — you can also download a ZIP)
---
## Setup
### 1. Get the code
```bash
git clone https://github.com/sprmdta/Experiment_NotebookM_MCP.git
cd Experiment_NotebookM_MCP
```
Or download and extract the ZIP, then open a terminal in the extracted folder.
### 2. Create a virtual environment
```bash
python -m venv .venv
```
### 3. Install dependencies
Windows:
```bash
.venv\Scripts\pip install -r requirements.txt
```
Mac/Linux:
```bash
.venv/bin/pip install -r requirements.txt
```
### 4. Install the Playwright browser
Windows:
```bash
.venv\Scripts\playwright install chromium
```
Mac/Linux:
```bash
.venv/bin/playwright install chromium
```
### 5. Log in to Google
Run the login command from inside the project folder:
**Windows (PowerShell or Command Prompt):**
```
cd "C:\YOUR_PATH_TO_REPO\Experiment_NotebookM_MCP"
.venv\Scripts\python -m notebooklm login
```
**Mac/Linux:**
```bash
cd /YOUR_PATH_TO_REPO/Experiment_NotebookM_MCP
.venv/bin/python -m notebooklm login
```
#### What happens during login
The login command is **interactive** — it opens a browser and waits for you to confirm before saving anything. Follow these steps exactly:
1. A Chromium browser window opens automatically and navigates to NotebookLM
2. Sign in with the Google account linked to your NotebookLM account
3. Complete any 2-factor authentication if prompted
4. Wait until you can see the **NotebookLM homepage** (your list of notebooks)
5. Switch back to your **terminal window**
6. Press **ENTER** in the terminal to save the session
> **Critical:** Do NOT close the browser window before pressing ENTER. Closing the browser exits the process without saving. The session cookies are only written to disk when you press ENTER in the terminal.
#### What success looks like
After pressing ENTER, the terminal will print:
```
Authentication saved to: C:\Users\YOUR_USERNAME\.notebooklm\storage_state.json
```
This file (`storage_state.json`) contains your Google session cookies. The MCP server reads this file every time it makes a request to NotebookLM.
#### Verify the login worked
You can confirm the file was created:
**Windows:**
```
dir "%USERPROFILE%\.notebooklm\storage_state.json"
```
**Mac/Linux:**
```bash
ls ~/.notebooklm/storage_state.json
```
If the file exists, login succeeded. If it does not exist, the login was not completed — re-run the command and make sure to press ENTER in the terminal.
### 6. Configure Claude Desktop
Open (or create) the Claude Desktop config file:
- **Windows:** `C:\Users\YOUR_USERNAME\AppData\Roaming\Claude\claude_desktop_config.json`
- **Mac:** `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Linux:** `~/.config/Claude/claude_desktop_config.json`
**Windows** (replace `YOUR_PATH_TO_REPO` with the actual path where you cloned the repo):
```json
{
"mcpServers": {
"notebooklm": {
"command": "C:\\YOUR_PATH_TO_REPO\\Experiment_NotebookM_MCP\\.venv\\Scripts\\python.exe",
"args": ["C:\\YOUR_PATH_TO_REPO\\Experiment_NotebookM_MCP\\notebooklm_mcp.py"],
"env": {
"NOTEBOOKLM_STORAGE_PATH": "C:\\Users\\YOUR_USERNAME\\.notebooklm"
}
}
}
}
```
**Mac/Linux:**
```json
{
"mcpServers": {
"notebooklm": {
"command": "/YOUR_PATH_TO_REPO/Experiment_NotebookM_MCP/.venv/bin/python",
"args": ["/YOUR_PATH_TO_REPO/Experiment_NotebookM_MCP/notebooklm_mcp.py"],
"env": {
"NOTEBOOKLM_STORAGE_PATH": "/Users/YOUR_USERNAME/.notebooklm"
}
}
}
}
```
### 7. Restart Claude Desktop
**Fully quit** Claude Desktop — closing the window is not enough. Right-click the Claude icon in the system tray (bottom-right taskbar on Windows, menu bar on Mac) and choose **Quit**, then reopen it.
Claude Desktop reads the config only at startup. If you edit the config while it is running, the changes will not take effect until you fully restart it.
The NotebookLM tools appear in the tools panel (hammer icon) once connected.
### 8. Test
Ask Claude: `List my NotebookLM notebooks`
Claude will call `notebooklm_list_notebooks` and return your notebooks.
---
## Re-authentication
Session cookies expire periodically (typically every few weeks). If Claude Desktop reports authentication errors, re-run the same login command from inside the project folder:
**Windows:**
```
cd "C:\YOUR_PATH_TO_REPO\Experiment_NotebookM_MCP"
.venv\Scripts\python -m notebooklm login
```
**Mac/Linux:**
```bash
cd /YOUR_PATH_TO_REPO/Experiment_NotebookM_MCP
.venv/bin/python -m notebooklm login
```
Follow the same steps as the initial login:
1. Sign in to Google in the browser that opens
2. Wait for the NotebookLM homepage to load
3. Press **ENTER** in the terminal to save
The `storage_state.json` file is overwritten with fresh cookies. You do not need to change any config or restart Claude Desktop — the updated cookies are picked up automatically on the next request.
---
## Troubleshooting
| Problem | Fix |
|---|---|
| `Not authenticated` or `401 Unauthorized` | Re-run `notebooklm login` — session expired |
| `Storage file not found: ...storage_state.json` | Login was not completed properly — re-run login and **press ENTER in the terminal** after the NotebookLM page loads |
| `Module not found` | Re-run `.venv\Scripts\pip install -r requirements.txt` inside the venv |
| `No module named 'pydantic_core._pydantic_core'` | Binary mismatch between Python versions — run `.venv\Scripts\pip install --force-reinstall -r requirements.txt` |
| `spawn ... python.exe ENOENT` | The `.venv` folder is missing — re-run `python -m venv .venv` then `pip install -r requirements.txt` |
| `playwright: command not found` | Run `pip install playwright` then `playwright install chromium` |
| Tools not showing in Claude Desktop | Verify all paths in the config are correct, then **fully quit** (system tray) and reopen Claude Desktop |
| Config changes not taking effect | Claude Desktop must be fully quit from the system tray — closing the window is not enough |
| `PermissionError` on storage path | `NOTEBOOKLM_STORAGE_PATH` must point to the `.notebooklm` folder, not a file |
| `NOTEBOOKLM_STORAGE_PATH` mismatch | Ensure the path in the config matches the default login storage: `C:\Users\YOUR_USERNAME\.notebooklm` |
---
## Tool Reference
All 56 tools follow the naming convention `notebooklm_{action}_{resource}`.
| Category | Tools |
|---|---|
| Notebooks | `notebooklm_list_notebooks`, `notebooklm_create_notebook`, `notebooklm_get_notebook`, `notebooklm_rename_notebook`, `notebooklm_delete_notebook`, `notebooklm_get_notebook_summary`, `notebooklm_get_notebook_description` |
| Sources | `notebooklm_list_sources`, `notebooklm_add_url_source`, `notebooklm_add_text_source`, `notebooklm_add_file_source`, `notebooklm_add_drive_source`, `notebooklm_get_source`, `notebooklm_get_source_fulltext`, `notebooklm_get_source_guide`, `notebooklm_delete_source`, `notebooklm_refresh_source`, `notebooklm_rename_source` |
| Chat | `notebooklm_chat_ask`, `notebooklm_chat_configure`, `notebooklm_chat_set_mode`, `notebooklm_chat_history` |
| Artifacts | `notebooklm_generate_audio`, `notebooklm_generate_video`, `notebooklm_generate_slide_deck`, `notebooklm_generate_quiz`, `notebooklm_generate_flashcards`, `notebooklm_generate_report`, `notebooklm_generate_infographic`, `notebooklm_generate_mind_map`, `notebooklm_generate_study_guide`, `notebooklm_generate_data_table` |
| Artifact Mgmt | `notebooklm_list_artifacts`, `notebooklm_poll_artifact`, `notebooklm_wait_artifact`, `notebooklm_download_artifact`, `notebooklm_delete_artifact`, `notebooklm_rename_artifact`, `notebooklm_revise_slide`, `notebooklm_suggest_reports` |
| Notes | `notebooklm_create_note`, `notebooklm_list_notes`, `notebooklm_update_note`, `notebooklm_delete_note` |
| Sharing | `notebooklm_get_share_status`, `notebooklm_set_public`, `notebooklm_share_add_user`, `notebooklm_share_remove_user`, `notebooklm_set_view_level`, `notebooklm_get_share_url` |
| Research | `notebooklm_start_research`, `notebooklm_poll_research`, `notebooklm_import_research_sources` |
| Settings | `notebooklm_get_output_language`, `notebooklm_set_output_language` |
| Export | `notebooklm_export` |
---
## Notes
- Uses the unofficial `notebooklm-py` library which reverse-engineers NotebookLM's internal APIs. Google may change these APIs at any time.
- Not affiliated with or endorsed by Google.
- Session cookies expire periodically and require re-login via `notebooklm login`.
- Rate limits apply — the server returns error messages if you hit them.
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues