Skip to main content

notebooklm-mcp

An unofficial NotebookLM MCP server and CLI — inspired by jacob-bd/notebooklm-mcp-cli.

⚠️ NotebookLM has no public API. This project talks to NotebookLM's internal batchexecute / GenerateFreeFormStreamed RPCs through a Playwright persistent-context session. It is not affiliated with Google.

What works today

Tool Status Notes
notebook_list Returns "mine" + "shared" notebooks. Pagination for many owned notebooks not yet discovered (shows most-recent owned).
notebook_create Untitled empty notebook.
notebook_delete Permanent, no undo.
notebook_query Streams the answer with inline [1][2] citations.
source_add ⚠️ kind="text" and kind="url" work. drive / file stubs.
research_start NotebookLM Discover → returns candidate URLs (does not auto-import).
research_and_ask One-shot: create → research → import → ask N questions → (optional) delete.
studio_create ⚠️ artifact="audio" (podcast) works. video / slides / mindmap / etc. stubs.
download_artifact Saves completed audio as .m4a.
refresh_auth Checks whether the stored Google session is still live.

Stubs (raise NotImplementedError): notebook_share_public, notebook_share_invite, source_sync_drive, source_get_content, studio_revise, cross_notebook_query, batch, pipeline, tag.

End-to-end workflow this supports

Manual orchestration:

notebook_create()              → empty notebook
research_start(nid, topic)     → ~10 candidate URLs
source_add(nid, kind="url")×N  → import the ones you want
notebook_query(nid, question)  → grounded answer with citations
studio_create(nid, "audio")    → start podcast generation (2-5 min)
download_artifact(nid)         → .m4a file on disk

Or, in a single call:

research_and_ask(
    topic="history of the Cold War space race",
    questions=["Who reached space first?", "Key consequences?"],
    max_sources=3,
    keep_notebook=False,  # ephemeral — delete after
)
# → { sources_imported: [...], qa: [{question, answer, ...}, ...] }

Install

Quick start (from PyPI)

uv tool install notebooklm-mcp-lisa
uvx --from notebooklm-mcp-lisa playwright install chromium
nlm login                       # one-time Google sign-in (opens a browser)
nlm setup add claude-code       # or: claude-desktop

The setup add command edits the target's config file so the MCP server is registered — no JSON editing by hand. Restart the client to pick it up.

Verify registration any time:

nlm setup list

Dev setup (from source)

git clone https://github.com/gracelee087/notebooklm-mcp-lisa.git
cd notebooklm-mcp
uv sync
uv run playwright install chromium
uv run nlm login

First-time Google login

NotebookLM requires a signed-in Google session. Run once, headed:

uv run nlm login

A Chromium window opens. Complete Google OAuth; the session is saved to the OS user-data dir (NLM_PROFILE_DIR to override). Subsequent runs are headless.

Verify:

uv run nlm status
# {'logged_in': True}

Run the MCP server

uv run notebooklm-mcp
# or
uv run nlm serve

Claude Code (project-scoped, auto-picked-up)

.mcp.json in this repo is already configured. When you open the project in Claude Code it prompts you to trust and loads notebooklm automatically.

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "notebooklm": {
      "command": "uv",
      "args": ["--directory", "/absolute/path/to/this/repo", "run", "notebooklm-mcp"]
    }
  }
}

Repo layout

src/notebooklm_mcp/
  server.py          # FastMCP entry
  cli.py             # `nlm` CLI (login/status/serve)
  browser.py         # Playwright persistent context
  config.py          # paths, env
  tools/
    notebook.py source.py studio.py research.py workflow.py auth.py

Status

  • Package scaffold, MCP server, CLI
  • Playwright session with persistent Google login
  • All tools registered (stubs)
  • notebook_list DOM scrape
  • notebook_query chat flow
  • source_add (url/text/drive/file)
  • studio_create audio (podcast) + download
  • remaining tools

License

MIT

Release files for notebooklm-mcp-lisa 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for notebooklm-mcp-lisa 0.2.0
File Size Uploaded
notebooklm_mcp_lisa-0.2.0.tar.gz 113.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for notebooklm-mcp-lisa 0.2.0
File Interpreter ABI Platform
notebooklm_mcp_lisa-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 138.9 kB

Release files / notebooklm_mcp_lisa-0.2.0.tar.gz

Download URL notebooklm_mcp_lisa-0.2.0.tar.gz
Size 113.7 kB
Tags Source
SHA-256 checksum
How to use checksums
d449ab76496e437f60aa32a27bd91e553d30c5521cb1472d5731117f2862d353
BLAKE2b-256 checksum
How to use checksums
ee816cfcb60fd43ec88d2d7425450c6d43bd6724b2311a7923d6ce8e513545f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / notebooklm_mcp_lisa-0.2.0-py3-none-any.whl

Download URL notebooklm_mcp_lisa-0.2.0-py3-none-any.whl
Size 25.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
873f525ee3a84504315f75f505b49c94bbe79aa36b5dba31911e15510e835fb8
BLAKE2b-256 checksum
How to use checksums
06b0d8a47c70236fa41a38ac6adf87c173772b63c4cac0a2b74012e2347b1584
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page