notebooklm-mcp-2026
MCP server for querying Google NotebookLM notebooks, enabling AI assistants to list notebooks, read sources, and ask questions about them.
README
<img src="notebooklm_mcp_hero.png" alt="NotebookLM MCP" width="100%">
notebooklm-mcp-2026
Secure MCP server for querying Google NotebookLM notebooks. Designed for use with Claude Code, Cursor, VS Code Copilot, and any MCP-compatible AI assistant.
Fork enhancements — This fork improves on julianoczkowski/notebooklm-mcp-2026 with multi-browser auth (including Helium), automatic session refresh, and a single
logincommand that verifies your account and configures MCP clients.
Watch on YouTube: https://youtu.be/xdI3uEA5rew?si=FkD0sdCZSFFWpjhy
<p align="left"> <a href="https://youtu.be/xdI3uEA5rew?si=FkD0sdCZSFFWpjhy"> <img src="https://img.youtube.com/vi/xdI3uEA5rew/maxresdefault.jpg" alt="Watch the video" width="100%"> </a> </p>
What it does
notebooklm-mcp-2026 gives AI assistants direct access to your Google NotebookLM notebooks. It runs as a local subprocess (stdio transport) — no HTTP server needed. Your AI assistant can list your notebooks, read source content, and ask the NotebookLM AI questions about your sources.
<p align="center"> <img src="flow_animation.gif" alt="NotebookLM MCP Flow" width="100%"> </p>
Quick Start
One command to log in, verify your account, and configure Cursor / Claude Code / VS Code. Works on macOS, Linux, and Windows.
Step 1: Install
From this fork (recommended):
git clone https://github.com/Faxtom/notebooklm-mcp-2026.git
cd notebooklm-mcp-2026
pip install -e .
Or with uv (upstream package):
curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install notebooklm-mcp-2026
Windows (PowerShell):
cd notebooklm-mcp-2026
python -m pip install -e .
Step 2: Log in (auth + verify + MCP setup)
notebooklm-mcp-2026 login --browser helium --method browser
This single command:
- Tries to import cookies from your browser (Helium, Chrome, Edge, Brave, Firefox, …)
- If no valid session is found, opens the browser so you can log in to notebooklm.google.com
- Verifies your account against the real NotebookLM API
- Auto-configures all detected MCP clients (Cursor, Claude Code, VS Code, …)
Using Helium? That's the recommended browser in this fork. Your normal Helium window can stay open — the interactive login uses an isolated profile.
Don't want auto-setup? Add
--skip-setupto only authenticate.
Step 3: Use it
Restart your MCP client and ask your AI assistant:
"List my NotebookLM notebooks"
That's it! You do not need to run setup separately after login.
Requirements
- A Chromium-based browser — Chrome, Edge, Brave, Helium, Chromium, Opera, or Vivaldi (for interactive login)
- Or Firefox / LibreWolf / Safari — cookie import only (no interactive login window)
- Python 3.11+
Don't have a browser?
- Helium (recommended): helium.computer · GitHub
- Chrome: google.com/chrome
- On Linux,
chromiumor the Helium.deb/ AppImage also work
Don't have Python?
If you used uv to install (recommended), you don't need to install Python separately — uv handles it for you.
If you prefer to install Python manually:
| Platform | Command |
|---|---|
| macOS | brew install python |
| Ubuntu / Debian | sudo apt install python3 |
| Arch / Manjaro | sudo pacman -S python |
| Fedora | sudo dnf install python3 |
| Windows | Download from python.org — tick "Add to PATH" during install |
Alternative Install Methods
Other install options:
# pipx (if you already have it)
pipx install notebooklm-mcp-2026
# pip (inside a virtual environment)
python -m venv .venv && source .venv/bin/activate
pip install notebooklm-mcp-2026
# From source
git clone https://github.com/Faxtom/notebooklm-mcp-2026.git
cd notebooklm-mcp-2026
pip install -e .
Authentication
notebooklm-mcp-2026 uses Google session cookies. No passwords are stored — only session cookies, a CSRF token, and a session ID.
Supported browsers
| Browser | Import cookies (--method browser) |
Interactive login (--method cdp) |
|---|---|---|
| Helium | ✅ | ✅ |
| Chrome | ✅ | ✅ |
| Edge | ✅ | ✅ |
| Brave | ✅ | ✅ |
| Chromium / Playwright | ✅ | ✅ |
| Opera / Vivaldi | ✅ | ✅ |
| Firefox / LibreWolf | ✅ | ❌ |
| Safari (macOS) | ✅ | ❌ |
Login methods
| Method | What it does |
|---|---|
auto (default) |
Try browser import → silent profile refresh → interactive CDP |
browser |
Import cookies; opens the browser automatically if no valid session |
cdp |
Open browser window for manual Google login |
profile |
Silent refresh from saved isolated browser profile |
import |
Load cookies from a JSON file |
Examples
# Recommended — Helium: import or open browser, then verify + configure MCP
notebooklm-mcp-2026 login --browser helium --method browser
# Auto-detect any installed browser
notebooklm-mcp-2026 login
# Interactive login with a specific browser
notebooklm-mcp-2026 login --browser edge --method cdp
# Import cookies from a JSON export
notebooklm-mcp-2026 login --method import --import-file cookies.json
# Login only, skip MCP configuration
notebooklm-mcp-2026 login --skip-setup
Session refresh
When cookies expire, the MCP server tries to refresh them automatically:
- Re-import from your installed browsers (Helium first)
- Re-read the isolated browser profile from a previous CDP login
- Only then ask you to run
loginagain
check_auth validates credentials with a real API call (not just a homepage check).
Helium paths (Windows)
| Item | Path |
|---|---|
| Executable | %LOCALAPPDATA%\imput\Helium\Application\chrome.exe |
| Profile | %LOCALAPPDATA%\imput\Helium\User Data |
Set a default browser with:
export NOTEBOOKLM_BROWSER=helium # macOS / Linux
$env:NOTEBOOKLM_BROWSER = "helium" # Windows PowerShell
Where credentials are stored
| Platform | Location |
|---|---|
| Linux | ~/.local/share/notebooklm-mcp-2026/auth.json |
| macOS | ~/Library/Application Support/notebooklm-mcp-2026/auth.json |
| Windows | %LOCALAPPDATA%\notebooklm-mcp-2026\auth.json |
Override with: NOTEBOOKLM_MCP_DATA_DIR=/custom/path
CLI Commands
| Command | Description |
|---|---|
notebooklm-mcp-2026 login |
Log in, verify account, and auto-configure MCP clients |
notebooklm-mcp-2026 setup |
Interactive setup wizard (optional — login does this automatically) |
notebooklm-mcp-2026 logout |
Remove stored credentials and browser profile |
notebooklm-mcp-2026 serve |
Start the MCP server over stdio (used by MCP clients) |
notebooklm-mcp-2026 status |
Show authentication and MCP client configuration status |
notebooklm-mcp-2026 doctor |
Diagnose common issues (browsers, auth, permissions) |
notebooklm-mcp-2026 version |
Print version |
Login flags
| Flag | Description |
|---|---|
--browser helium |
Use Helium (or chrome, edge, firefox, …) |
--method browser |
Import cookies; open browser if session is missing |
--method cdp |
Force interactive browser login |
--skip-setup |
Skip MCP auto-configuration after login |
--chrome-path PATH |
Path to browser executable |
--import-file PATH |
JSON cookie file (--method import) |
MCP Client Configuration
The setup command auto-configures your MCP client. You should not need to edit these files manually, but if you do:
<details> <summary>Claude Code — <code>~/.claude.json</code></summary>
{
"mcpServers": {
"notebooklm-mcp-2026": {
"command": "notebooklm-mcp-2026",
"args": ["serve"]
}
}
}
</details>
<details> <summary>Cursor — <code>~/.cursor/mcp.json</code></summary>
{
"mcpServers": {
"notebooklm-mcp-2026": {
"command": "notebooklm-mcp-2026",
"args": ["serve"]
}
}
}
</details>
<details> <summary>VS Code (Copilot) — <code>mcp.json</code></summary>
{
"servers": {
"notebooklm-mcp-2026": {
"command": "notebooklm-mcp-2026",
"args": ["serve"]
}
}
}
</details>
<details> <summary>Claude Desktop</summary>
Claude Desktop does not inherit your terminal's PATH, so you must use the full path to the executable.
First, find your executable path:
# macOS / Linux
which notebooklm-mcp-2026
# Windows (PowerShell)
where notebooklm-mcp-2026
Then edit your config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
macOS example:
{
"mcpServers": {
"notebooklm-mcp-2026": {
"command": "/Users/YOUR_USER/.local/bin/notebooklm-mcp-2026",
"args": ["serve"]
}
}
}
Windows example:
{
"mcpServers": {
"notebooklm-mcp-2026": {
"command": "C:\\Users\\YOUR_USER\\.local\\bin\\notebooklm-mcp-2026.exe",
"args": ["serve"]
}
}
}
Replace YOUR_USER with your actual username, or paste the exact path from the which/where command above.
</details>
Available Tools (9)
| Tool | Description | Key Parameters |
|---|---|---|
login |
Refresh auth (browser import → CDP fallback) | timeout (default: 300s) |
check_auth |
Verify credentials via real API call | — |
list_notebooks |
List all notebooks with metadata | max_results (default: 50) |
get_notebook |
Get notebook details + source list | notebook_id |
list_sources |
List sources in a notebook | notebook_id |
get_source_content |
Get full text of a source | source_id |
query_notebook |
Ask the AI a question | notebook_id, query, source_ids?, conversation_id? |
add_source_url |
Add a URL/YouTube source | notebook_id, url |
add_source_text |
Add pasted text source | notebook_id, text, title? |
Typical workflow
1. list_notebooks → find the notebook ID you want
2. list_sources → see what sources are in it
3. query_notebook → ask questions about the sources
4. get_source_content → read raw source text if needed
Example output
When your AI assistant calls list_notebooks, it gets back structured data like this:
{
"status": "success",
"count": 2,
"notebooks": [
{
"id": "abc123-def456",
"title": "Research Notes",
"source_count": 3,
"is_owned": true,
"modified_at": "2026-01-15T10:30:00+00:00"
},
{
"id": "ghi789-jkl012",
"title": "Project Planning",
"source_count": 5,
"is_owned": true,
"modified_at": "2026-01-14T08:00:00+00:00"
}
]
}
And query_notebook returns:
{
"status": "success",
"answer": "Based on the sources, the main topics covered are...",
"conversation_id": "conv-uuid-123",
"turn_number": 1,
"is_follow_up": false
}
Follow-up conversations
query_notebook returns a conversation_id. Pass it back to ask follow-up questions in the same conversation context:
# First question
result = query_notebook(notebook_id="abc", query="What is the main topic?")
# result.conversation_id = "uuid-123"
# Follow-up
result = query_notebook(notebook_id="abc", query="Tell me more about that", conversation_id="uuid-123")
Troubleshooting
"Not authenticated" or "Cookies expired"
notebooklm-mcp-2026 login --browser helium --method browser
Browser import fails on Windows
Close the browser completely before import (the cookie database is locked while the browser runs). If import fails, --method browser will open the browser for interactive login automatically.
"Browser not found" error
Install Helium or Chrome, or specify the path:
notebooklm-mcp-2026 login --browser helium --method cdp
notebooklm-mcp-2026 login --chrome-path "C:\Users\YOU\AppData\Local\imput\Helium\Application\chrome.exe"
Run notebooklm-mcp-2026 doctor to see which browsers are detected.
Empty notebook list
Make sure you're logged into the correct Google account that has NotebookLM notebooks.
"Build label" errors
Google occasionally rotates their build label. Set the updated label:
NOTEBOOKLM_BL="boq_labs-tailwind-frontend_YYYYMMDD.XX_p0" notebooklm-mcp-2026 serve
Rate limit errors
NotebookLM free tier allows ~50 queries per day. Wait until the next day or upgrade.
Something else?
Run the diagnostic tool:
notebooklm-mcp-2026 doctor
Environment Variables
| Variable | Default | Description |
|---|---|---|
NOTEBOOKLM_MCP_DATA_DIR |
Platform default | Override data storage location |
NOTEBOOKLM_BROWSER |
— | Preferred browser (helium, chrome, firefox, …) |
NOTEBOOKLM_AUTH_REFRESH_COOLDOWN |
300 |
Seconds between silent session refresh attempts |
NOTEBOOKLM_BL |
boq_labs-tailwind-frontend_20260108.06_p0 |
Google build label |
NOTEBOOKLM_QUERY_TIMEOUT |
120.0 |
Query timeout in seconds |
Security
- No passwords stored — only Google session cookies
- File permissions — credentials saved with
0o600(owner read/write only) - Directory permissions — data directory created with
0o700(owner only) - No
eval/exec— no dynamic code execution anywhere - No
shell=True— browsers launched with explicit argument lists - Cookie filtering — only essential Google auth cookies are persisted
- Browser cleanup — browser process always terminated in
finallyblocks - Input validation — all tool parameters validated before use
- Timeouts — all HTTP requests have explicit timeouts
- CSRF protection — tokens passed in request body, auto-refreshed on expiry
Development
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Lint
ruff check src/ tests/
Testing with MCP Inspector
The MCP Inspector lets you interactively test the server's tools in a web UI:
npx @modelcontextprotocol/inspector notebooklm-mcp-2026 serve
This opens a browser where you can call each of the 9 tools with custom parameters and inspect responses. You must run notebooklm-mcp-2026 login first.
Getting Help
- Questions? Open an Issue
- Found a bug? Open an Issue
- Want to contribute? See CONTRIBUTING.md
- Security issue? See SECURITY.md for responsible disclosure
License
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。