Skip to main content

Secure MCP server for querying Google NotebookLM notebooks

Project description

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.

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.

Quick Start

# 1. Install
pip install notebooklm-mcp-2026

# 2. Run the setup wizard (authenticates + configures your MCP client)
notebooklm-mcp-2026 setup

# That's it! Restart your MCP client and start using it.

Or step by step:

pip install notebooklm-mcp-2026
notebooklm-mcp-2026 login                # Opens Chrome for Google login
notebooklm-mcp-2026 setup                # Auto-configures your MCP client
notebooklm-mcp-2026 status               # Verify everything is connected

Installation

Requirements: Python 3.11+, Google Chrome

# Via pip
pip install notebooklm-mcp-2026

# Via uv (recommended)
uv tool install notebooklm-mcp-2026

# From source
git clone <this-repo>
cd notebooklm-mcp-2026
pip install -e .

Authentication

notebooklm-mcp-2026 uses Google session cookies extracted via Chrome DevTools Protocol. No passwords are stored — only session cookies.

First-time setup

notebooklm-mcp-2026 login

This will:

  1. Launch Chrome pointing at notebooklm.google.com
  2. Wait for you to log in to your Google account
  3. Extract session cookies via Chrome DevTools Protocol
  4. Save them locally with restricted file permissions (0o600)

Cookies typically last 2–4 weeks. When they expire, run notebooklm-mcp-2026 login again.

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 setup Interactive setup wizard — authenticates and configures your MCP client
notebooklm-mcp-2026 login Authenticate via Chrome (opens browser window)
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 (Chrome, auth, permissions)
notebooklm-mcp-2026 version Print version

MCP Client Configuration

The setup command auto-configures your MCP client. For manual configuration, see below.

Claude Code

Add to ~/.claude/settings.json:

{
  "mcpServers": {
    "notebooklm-mcp-2026": {
      "command": "notebooklm-mcp-2026",
      "args": ["serve"]
    }
  }
}

Cursor

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "notebooklm-mcp-2026": {
      "command": "notebooklm-mcp-2026",
      "args": ["serve"]
    }
  }
}

VS Code (Copilot)

Add to VS Code settings.json:

{
  "mcp": {
    "servers": {
      "notebooklm-mcp-2026": {
        "command": "notebooklm-mcp-2026",
        "args": ["serve"]
      }
    }
  }
}

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "notebooklm-mcp-2026": {
      "command": "notebooklm-mcp-2026",
      "args": ["serve"]
    }
  }
}

Available Tools (9)

Tool Description Key Parameters
login Launch Chrome for Google OAuth login timeout (default: 300s)
check_auth Verify stored credentials are valid
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

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" error

Run notebooklm-mcp-2026 login in your terminal.

"Cookies expired" error

Session cookies have a limited lifespan (2–4 weeks). Run notebooklm-mcp-2026 login again.

"Chrome not found" error

Install Google Chrome. On Linux, ensure google-chrome or chromium is in your PATH.

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.

Environment Variables

Variable Default Description
NOTEBOOKLM_MCP_DATA_DIR Platform default Override data storage location
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 — Chrome launched with explicit argument lists
  • Cookie filtering — only essential Google auth cookies are persisted
  • Chrome cleanup — Chrome process always terminated in finally blocks
  • 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.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

notebooklm_mcp_2026-0.1.0.tar.gz (37.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

notebooklm_mcp_2026-0.1.0-py3-none-any.whl (34.2 kB view details)

Uploaded Python 3

File details

Details for the file notebooklm_mcp_2026-0.1.0.tar.gz.

File metadata

  • Download URL: notebooklm_mcp_2026-0.1.0.tar.gz
  • Upload date:
  • Size: 37.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for notebooklm_mcp_2026-0.1.0.tar.gz
Algorithm Hash digest
SHA256 29d30308ba0c21007f671b12e9cae0d60bb2e2f20453d8a24738f599eaa3e37e
MD5 2dd897b25f1c8c311f4273aa88ae7f32
BLAKE2b-256 71a27fee2c8db70feb3910e2683c25f18a6b0ab5594359b8f0c902495a9712aa

See more details on using hashes here.

Provenance

The following attestation bundles were made for notebooklm_mcp_2026-0.1.0.tar.gz:

Publisher: publish.yml on julianoczkowski/notebooklm-mcp-2026

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file notebooklm_mcp_2026-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for notebooklm_mcp_2026-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9cabb18b6e9666845ffe6c9c94e2bc66985493311c9b9aebd3c04e20183fd733
MD5 3a30fb0f7fda44c996acbeeef9ddef49
BLAKE2b-256 effa70b2c7ec09eb54af48daa5d504097bcac1d58980fe09bcff10d04788ac22

See more details on using hashes here.

Provenance

The following attestation bundles were made for notebooklm_mcp_2026-0.1.0-py3-none-any.whl:

Publisher: publish.yml on julianoczkowski/notebooklm-mcp-2026

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page