nblm-mcp
Provides access to Google NotebookLM (Gemini Notebook), including tools to list and create notebooks, manage sources, ask questions answered from those sources with citations, and generate Studio artifacts like audio overviews, briefing docs, quizzes, and mind maps.
Allows adding YouTube videos as sources to a NotebookLM notebook.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@nblm-mcplist my recent notebooks and summarize the latest one"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
nblm-mcp
An MCP server that gives an AI agent access to Google NotebookLM (rebranded Gemini Notebook in July 2026): list and create notebooks, manage their sources, ask questions that are answered from those sources with citations, and generate Studio artifacts like audio overviews, briefing docs, quizzes and mind maps.
The point is grounding. NotebookLM answers only from the material you gave it,
so an agent that can call ask gets cited answers out of your own documents
instead of guessing — and it costs no tokens of your own context, because
Gemini does the reading server-side.
⚠️ Unofficial — read this first
Google has no public consumer API for NotebookLM. This server drives the same private web endpoints the notebooklm.google.com UI calls, authenticated with your own browser session cookies, via the MIT-licensed
notebooklm-pylibrary.
Not affiliated with or endorsed by Google.
The internal API can change without notice and break this server.
Your Google account's rate limits and daily Studio quotas apply.
Use an account you are comfortable automating. Best for personal projects, research, and prototypes.
Google does document an official API for Gemini Notebook Enterprise. If you have a Workspace/Cloud org with that feature, prefer it over this.
Install
Not on PyPI yet — install straight from this repository. uvx builds and runs
it on demand, so there is nothing to keep updated by hand:
uvx --from git+https://github.com/Diego-Dev-Moros/nblm-mcp nblm-mcpRelated MCP server: notebooklm-mcp-server
Log in once
Login needs the auth extra (Playwright) and a human at the keyboard:
uvx --from "nblm-mcp[auth] @ git+https://github.com/Diego-Dev-Moros/nblm-mcp" nblm-mcp-loginA browser window opens; sign in to NotebookLM as you normally would. The
session cookies are stored under ~/.notebooklm/ (the same profile layout
notebooklm-py uses, so an existing notebooklm login also works). The MCP
server never logs in on its own — it needs an interactive browser, which an
MCP host cannot provide.
If Playwright has no browser yet, run playwright install chromium first.
Cookies expire. When they do, tools start returning an auth error; run the login command again.
Connect it to a client
Claude Code — -s user makes it available in every project:
claude mcp add notebooklm -s user -- \
uvx --from git+https://github.com/Diego-Dev-Moros/nblm-mcp nblm-mcpClaude Desktop — add this to claude_desktop_config.json and restart the
app (macOS: ~/Library/Application Support/Claude/, Windows:
%APPDATA%\Claude\, Linux: ~/.config/Claude/):
{
"mcpServers": {
"notebooklm": {
"command": "uvx",
"args": ["--from", "git+https://github.com/Diego-Dev-Moros/nblm-mcp", "nblm-mcp"]
}
}
}Claude Desktop launches from the GUI, which does not inherit your shell's
PATH. If the server fails to start there, replace "uvx" with its absolute
path (which uvx, typically ~/.local/bin/uvx).
Either way, confirm it works by asking the agent to call auth_status.
Tools
Tool | What it does |
| Verifies the stored session with a real request; tells you if you need to log in again. |
| All notebooks the account can reach, with ids and source counts. |
| One notebook plus its sources; optionally NotebookLM's own summary. |
| Creates an empty notebook. |
| Deletes a notebook and everything in it. Requires |
| Sources in a notebook and their processing status. |
| Adds one source from a URL (web, YouTube, Drive), pasted text, or a local file. |
| Removes a source. Requires |
| Asks the notebook a question; returns the answer plus citations resolved to source titles. |
| Past question/answer turns for the notebook's conversation. |
| Generated Studio artifacts and their status — also how you poll a running generation. |
| Generates audio, video, report, study_guide, quiz, flashcards, infographic, slide_deck, or mind_map. |
| Downloads a completed artifact to a file on the machine running the server. |
Notes on behavior
Destructive tools are gated.
delete_notebookanddelete_sourcerefuse to run withoutconfirm=true, so a stray tool call can't destroy a notebook.Generation is slow and quota-bound.
generate_artifactreturns as soon as the job is queued (wait=false, the default) and tells the agent to polllist_artifacts. Passwait=trueto block instead; it waits up toNBLM_GENERATION_TIMEOUTseconds.File paths are server-side.
add_source(file_path=...)anddownload_artifactread and write on the host running the MCP server, which is not necessarily where the user's chat client runs.
Configuration
All optional — see .env.example. A .env in the working
directory is loaded if present.
Variable | Default | Purpose |
| active profile | Which stored login to use, for multiple Google accounts. |
| resolved from profile | Explicit path to a |
|
| Where |
|
| Seconds to wait for an artifact when |
|
| Seconds to wait for a new source to finish processing. |
Development
uv venv && uv pip install -e ".[dev]"
uv run pytest
uv run ruff check src testsThe test suite runs the tools against an in-memory fake client — it never touches Google, so it is safe and fast to run anywhere.
Prior art
notebooklm-py does the hard part
— reverse-engineering and maintaining the private batchexecute protocol — and
ships its own, larger MCP server. This project is a smaller, opinionated tool
surface on top of that library: fewer tools, confirmation gates on destructive
operations, and citation-resolved answers.
License
MIT — see LICENSE.
Available Tools
13 toolsadd_sourceA
Add one source to a notebook, from a URL, pasted text, or a local file.
Pass exactly one of url, text, or file_path.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Web page, YouTube video, or Google Docs/Slides link to ingest. | |
| text | No | Raw text to paste as a source. Requires `title`. | |
| wait | No | Block until the source finishes processing so it is usable immediately. Turn off for bulk imports and poll list_sources. | |
| title | No | Display title. Required for `text`, optional otherwise. | |
| file_path | No | Absolute path to a local file (PDF, txt, md, audio...). Read from the machine running this server, not the user's client. | |
| notebook_id | Yes | Notebook to add the source to. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
askA
Ask a notebook a question and get an answer grounded in its sources.
The answer comes from Gemini reading the notebook's own sources, with citations back to them — use this instead of summarizing the sources yourself when a notebook already holds the material.
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes | Natural-language question. Specific questions cite better than broad ones. | |
| source_ids | No | Restrict the answer to these sources. Omit to use all. | |
| notebook_id | Yes | The notebook to query. | |
| conversation_id | No | Continue a specific conversation. Omit to continue the notebook's current one, matching the web UI. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
auth_statusA
Check whether this server has a working NotebookLM session.
Call this first when any other tool reports an auth problem. It performs a real (cheap) request, so it distinguishes "no cookies stored" from "cookies stored but expired".
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
chat_historyB
Read past question/answer turns for a notebook's current conversation.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of turns to return, newest conversation first. | |
| notebook_id | Yes | The notebook whose conversation to read. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
create_notebookA
Create an empty notebook.
A notebook with no sources cannot answer questions — follow up with add_source before calling ask.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Display title for the new notebook. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
delete_notebookA
Permanently delete a notebook and everything in it.
This cannot be undone and deletes the notebook's sources, chats, and generated artifacts along with it.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be true. The guard exists so a mistaken tool call cannot destroy a notebook; ask the user before setting it. | |
| notebook_id | Yes | The notebook to delete. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
delete_sourceC
Remove a source from a notebook.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be true. Removing a source also drops the citations that point at it, so ask the user first. | |
| source_id | Yes | The source to remove, from list_sources. | |
| notebook_id | Yes | The notebook holding the source. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
download_artifactB
Download a completed Studio artifact to a file on the server host.
| Name | Required | Description | Default |
|---|---|---|---|
| artifact_id | Yes | The artifact to download, from list_artifacts. | |
| notebook_id | Yes | The notebook holding the artifact. | |
| output_path | No | Destination path. A bare filename lands in the configured download directory; omit it to name the file after the artifact. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
generate_artifactA
Generate a Studio artifact (podcast, report, quiz, mind map...).
Generation runs server-side and is slow — an audio overview commonly takes several minutes — and it consumes the account's daily Studio quota. Prefer the default wait=false and poll with list_artifacts.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | One of audio, video, report, study_guide, quiz, flashcards, infographic, slide_deck, mind_map. | |
| wait | No | Block until the artifact is ready (or the configured timeout elapses) instead of returning as soon as it is queued. | |
| language | No | BCP-47 language code for the output, e.g. "en", "es". | en |
| quantity | No | quiz/flashcards only — fewer, standard, or more. | |
| difficulty | No | quiz/flashcards only — easy, medium, or hard. | |
| source_ids | No | Restrict generation to these sources. Omit to use all. | |
| notebook_id | Yes | Notebook whose sources feed the generation. | |
| audio_format | No | audio only — deep_dive, brief, critique, or debate. | |
| audio_length | No | audio only — short, default, or long. | |
| instructions | No | Free-text steer for the output ("focus on the pricing section", "explain it for beginners"). | |
| report_format | No | report only — briefing_doc, study_guide, or blog_post. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
get_notebookC
Get one notebook with its sources.
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | The notebook id, as returned by list_notebooks. | |
| include_summary | No | Also fetch NotebookLM's own generated summary of the notebook. Costs an extra round-trip and can be slow on large notebooks, so it is off by default. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
list_artifactsA
List generated Studio artifacts in a notebook.
Use this to poll a generation started with wait=false: the artifact reports
status: completed when it is ready to download.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Filter by type — audio, video, report, quiz, flashcards, mind_map, infographic, slide_deck, or data_table. | |
| notebook_id | Yes | The notebook to inspect. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
list_notebooksA
List the notebooks reachable by the signed-in Google account.
Returns id, title, and source count for each. Use the ids with every other tool — NotebookLM has no lookup by title.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
list_sourcesB
List the sources in a notebook, with their processing status.
A source that is not ready is still being ingested and will not ground
answers yet.
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
13 tool updates
v0.1.0- First observed
add_source - First observed
ask - First observed
auth_status - First observed
chat_history - First observed
create_notebook - First observed
delete_notebook - First observed
delete_source - First observed
download_artifact - First observed
generate_artifact - First observed
get_notebook - First observed
list_artifacts - First observed
list_notebooks - First observed
list_sources
TDQS
Scored across 13 tools
Most tools target a distinct resource+action (notebook CRUD, source add/delete/list, artifact generate/list/download, ask, auth). Minor overlap between get_notebook (returns notebook with sources) and list_sources (sources with processing status), but descriptions clarify the difference.
Strong verb_noun pattern for most tools (add_source, list_notebooks, create_notebook, list_artifacts, generate_artifact, download_artifact). A few deviations—ask (bare verb), chat_history and auth_status (noun phrases)—but overall readable and predictable.
13 tools is well-scoped for the NotebookLM domain, cleanly grouped into notebooks, sources, artifacts, and query/auth concerns. Each tool earns its place with no filler.
Good CRUD/lifecycle coverage: notebook create/get/list/delete, source add/delete/list, artifact generate/list/download, plus ask, chat_history, and auth_status. Minor gaps like notebook rename/update and source update, but core workflows are covered.
Maintenance
Related MCP Connectors
Google NotebookLM via natural language: create notebooks, add sources (PDF, URL, YouTube) and ask gr
Google Gemini Notebook (NotebookLM): notebooks, sources, cited chat, podcasts, video, slides
Turn any recording or document into notes, flashcards and quizzes your agent can read and act on
Create, search and manage Knowtis collaborative notes from AI assistants.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables AI agents to query and interact with Google NotebookLM notebooks to retrieve citation-backed information. It provides tools for listing notebooks, accessing source data, and asking natural language questions.11-
- AlicenseBqualityDmaintenanceEnables AI agents to interact with Google NotebookLM for grounded, hallucination-free answers through notebook management, source management, research, and generation tools.29273 npm46MIT
- AlicenseBqualityAmaintenanceEnables AI assistants to programmatically interact with Google NotebookLM, allowing them to create and manage notebooks, add sources, query content, generate audio/video, and perform research tasks through natural language commands.5514,897 PyPI6,473MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to programmatically access and control Google NotebookLM, supporting operations like notebook management, source addition, audio generation, and more via natural language.39MIT