NotebookLM
PleasePrompto
PleasePrompto
Empower your CLI agents with zero-hallucination answers from your own docs. NotebookLM MCP Server connects AI tools like Claude, Cursor, and Codex directly to Google’s NotebookLM, ensuring every answer is accurate, current, and citation-backed. Skip error-prone manual copy-paste—let your AI assistant research, synthesize, and reference across your documents for confident coding. All queries are grounded in your uploads, eliminating invented APIs or outdated info. Manage notebooks, automate deep research, and achieve seamless collaboration between multiple tools using a shared, always-relevant knowledge base. Spend less time debugging and more time building with trustworthy, source-based answers.
The server returned 20 tools in tools/list. Only “list_notebooks” was invoked with a synthetic read-only input and succeeded.
ask_question# Conversational Research Partner (NotebookLM • Gemini 2.5 • Session RAG) ## No Active Notebook - Visit https://notebooklm.google to create a notebook and get a share link - Use **add_notebook** to add it to your library (explains how to get the link) - Use **list_notebooks** to show available sources - Use **select_notebook** to set one active > Auth tip: If login is required, use the prompt 'notebooklm.auth-setup' and then verify with the 'get_health' tool. If authentication later fails (e.g., expired cookies), use the prompt 'notebooklm.auth-repair'. Tip: Tell the user you can manage NotebookLM library and ask which notebook to use for the current task.
Parameters: question, session_id, notebook_id, notebook_url, source_format, show_browser, browser_optionsadd_notebookRegister a NotebookLM notebook in the local library so it can be queried with `ask_question`, ingested into with `add_source`, etc. ## Required URL The user must supply a NotebookLM share-link. To produce one: 1. Open https://notebooklm.google 2. Open the notebook → click "Share" (top right) 3. Set "Anyone with the link" → "Copy link" ## Permission workflow Do NOT call this tool unprompted. The expected dialogue is: 1. Ask for the URL 2. Ask what knowledge it contains (1–2 sentences) → `description` 3. Ask which topics it covers (3–5) → `topics` 4. Ask when it should be consulted → `use_cases` 5. Propose a `name` and the metadata back to the user 6. Only after explicit confirmation, call `add_notebook`. Free-tier limits: 100 notebooks · 50 sources each · 50 queries/day. Google AI Pro/Ultra raises these 5×.
Parameters: url, name, description, topics, content_types, use_cases, tagslist_notebooksList every notebook in the local library with its metadata (`id`, `name`, `description`, `topics`, `tags`, `url`, `use_count`, etc.). Use the returned `id` for `select_notebook`, `update_notebook`, `get_notebook`, `remove_notebook`, or as `notebook_id` on `ask_question` / `add_source` / audio tools.
get_notebookFetch full metadata for one notebook by id. Use to verify what's currently stored before calling `update_notebook`, or to show the user the exact `description`/`topics`/`use_cases` Claude has for it.
Parameters: idselect_notebookMark a notebook as the active default. After this, `ask_question`, `add_source`, and the audio tools resolve to that notebook when the caller omits `notebook_id` / `notebook_url`. When to call: • The user explicitly switches context (e.g. "Let's work on React now") • Task obviously needs a different notebook than the current one — announce the switch ("Switching to the React notebook…") before calling. • If the right notebook is ambiguous, ask the user first instead of guessing.
Parameters: idupdate_notebookPatch metadata fields on an existing notebook. Pass `id` plus any subset of `name`, `description`, `topics`, `content_types`, `use_cases`, `tags`, `url` — only supplied fields change. Workflow: identify the target notebook → propose the exact change back to the user → call only after explicit confirmation. Multiple fields can be updated in one call.
Parameters: id, name, description, topics, content_types, use_cases, tags, urlremove_notebookRemove a notebook from the local library. **Does NOT delete the actual NotebookLM notebook on Google's side** — only the local metadata entry. Active sessions on this notebook are closed. Confirmation workflow: look up the notebook by id, ask the user "Remove '[name]' from your library?" — only call after a clear yes.
Parameters: idsearch_notebooksSearch the library by free-text query — matches against `name`, `description`, `topics`, and `tags`. Returns notebook objects with their `id` so you can chain into `select_notebook` etc. Use this when the user references a notebook by topic ("the React one") instead of by exact name. If multiple notebooks match, propose the top 1–2 and let the user choose.
Parameters: queryget_library_statsAggregate statistics about the local notebook library: `total_notebooks`, `active_notebook` (id), `most_used_notebook`, `total_queries`, `last_modified`. Useful as a quick health check or when the user asks "what notebooks do I have?".
list_sessionsList all active browser sessions for this server. Each entry includes `id`, `created_at`, `last_activity`, `age_seconds`, `inactive_seconds`, `message_count`, and `notebook_url`. Useful before `reset_session` / `close_session` or to recover a `session_id` you can pass back into `ask_question` to continue an existing conversation. Sessions older than `session_timeout` (see `get_health`) are auto-closed.
close_sessionPermanently close a session and discard its browser tab. Use the `id` returned by `list_sessions` (or the `session_id` from a prior `ask_question` response). Closed sessions cannot be resumed — start a new one with `ask_question` (no `session_id`) or pick another from `list_sessions`. Ask the user before closing if the session might still be needed.
Parameters: session_idreset_sessionClear a session's chat history while keeping the same session id. Use this when the task changes mid-conversation and you want a fresh context without losing the underlying browser tab. Ask the user before resetting if they might still need the prior history.
Parameters: session_idget_healthInspect server state. Returns: • `authenticated` — whether saved Google cookies are still valid • `notebook_url`, `active_notebook_id`, `active_notebook_name` — the currently selected library notebook (or null) • `total_notebooks` — library size • `active_sessions`, `max_sessions`, `session_timeout` — runtime session stats (timeout in seconds; sessions auto-close after this) • `headless`, `auto_login_enabled`, `stealth_enabled` — config Use this first thing in a new conversation. If `authenticated=false`, run `setup_auth` (or `re_auth` to switch accounts).
setup_authOpen a browser window for first-time Google login. Returns immediately after spawning the browser; the user has up to 10 minutes to complete sign-in, then cookies are persisted for future runs. When to use: • `get_health` reports `authenticated=false` for the first time • Auto-login credentials are not configured • `re_auth` is the right call when you want to *switch* accounts or recover from a daily-quota lockout After login finishes, call `get_health` to verify success. If the browser session feels broken (auth keeps failing, stale cookies), run `cleanup_data(confirm=true, preserve_library=true)` first, then retry `setup_auth`.
Parameters: show_browser, browser_optionsre_authSwitch to a different Google account or recover from broken auth. Closes all active sessions, deletes saved cookies and Chrome profile, and opens a fresh login browser. Common triggers: • NotebookLM's 50 queries/day free-tier limit is reached and the user wants to rotate to another Google account • `setup_auth` failed and a clean slate is needed After login, call `get_health` to verify. For very stuck states, run `cleanup_data(confirm=true, preserve_library=true)` before `re_auth`.
Parameters: show_browser, browser_optionscleanup_dataTwo-phase deep cleanup of all server data on disk (auth state, browser profiles, caches, MCP logs, temp backups). Cross-platform (Linux/macOS/Windows). Always close all Chrome/Chromium instances first — open browsers can lock files. Phase 1 (preview): call with `confirm: false`. Returns a categorised list of paths and total size. **No deletion happens.** Phase 2 (delete): after the user reviews the preview and approves, call with `confirm: true`. Set `preserve_library: true` to keep the notebook library file (library.json) while wiping everything else — recommended when troubleshooting auth. Typical recovery flow: 1. cleanup_data(confirm=false, preserve_library=true) // preview 2. cleanup_data(confirm=true, preserve_library=true) // execute 3. setup_auth (or re_auth)
Parameters: confirm, preserve_libraryadd_sourceIngest a source into a NotebookLM notebook. Supports two source types in v2.0: • `url` — NotebookLM crawls and indexes a website • `text` — paste raw text (treated as a copied document) File / YouTube / Google-Drive uploads are not yet implemented. Returns `sourceCountBefore`/`sourceCountAfter` so the caller can verify the new source landed. Call once per source — multiple sources require multiple calls. NotebookLM finishes indexing within 5–30 seconds; subsequent `ask_question` calls then have the new source in context. Free notebooks cap at 50 sources. Known quirk: pasted-text uploads occasionally redirect to a freshly created "Untitled notebook" on Google's side. The tool detects this and returns a clear error so you can re-try against the correct URL.
Parameters: type, content, title, show_browser, session_id, notebook_id, notebook_urlgenerate_audioTrigger podcast-style Audio Overview generation for a notebook. **Async by default** — returns immediately with one of: • `status: "started"` — generation just kicked off • `status: "in_progress"` — a generation was already running; this call attached to it • `status: "ready"` (with `alreadyExisted: true`) — an Audio Overview already existed; nothing was triggered Generation typically takes 2–10 minutes. **Workflow:** 1. `generate_audio` → returns immediately 2. Poll `get_audio_status` every ~30 s 3. When status is `ready`, call `download_audio` Pass `wait_for_completion: true` for legacy synchronous behaviour (blocks for up to `timeout_ms`). Audio Overview is the only Studio output exposed in v2.0 (Video / Mindmap / Quiz / Infographic / Datatable / Presentation are NotebookLM features but not yet wrapped).
Parameters: custom_prompt, wait_for_completion, timeout_ms, show_browser, session_id, notebook_id, notebook_urlget_audio_statusNon-blocking probe for the current Audio Overview state of a notebook. Returned `status` values: • `ready` — Audio Overview is generated and ready to download • `in_progress` — generation is currently running • `not_started` — no Audio Overview exists yet for this notebook Safe to poll every ~30 s while waiting for `generate_audio` to finish. When status flips to `ready`, call `download_audio` with a destination directory.
Parameters: show_browser, session_id, notebook_id, notebook_urldownload_audioSave the completed Audio Overview to disk as a `.m4a` file. **Pre-condition:** `get_audio_status` must report `status: "ready"`. Calling this before generation completes returns an error message explaining what to do. The file lands in `destination_dir` with NotebookLM's suggested filename (sanitised — usually the audio's title with underscores). The full saved path is returned in `result.filePath`.
Parameters: destination_dir, show_browser, session_id, notebook_id, notebook_urlThis server’s available tools can vary by account, permissions, or configuration. The list shown is not its full runtime catalog.
Name, description, publisher identifier, categories, transport, tool inventory, and install configuration.
Repository URL linked from the public profile; npm package repository metadata matched this GitHub repository.
Published package version 2.0.0 checked before launch. Registry repository: git+https://github.com/PleasePrompto/notebooklm-mcp.git.
Maintainer repository checked for current NotebookLM MCP functionality; 20 rows remain a partial community-server inventory.
Documentation checked 2026-10-28T00:00:00Z. Connection has not been runtime tested.
PleasePrompto
Empower your CLI agents with zero-hallucination answers from your own docs. NotebookLM MCP Server connects AI tools like Claude, Cursor, and Codex directly to Google’s NotebookLM, ensuring every answer is accurate, current, and citation-backed. Skip error-prone manual copy-paste—let your AI assistant research, synthesize, and reference across your documents for confident coding. All queries are grounded in your uploads, eliminating invented APIs or outdated info. Manage notebooks, automate deep research, and achieve seamless collaboration between multiple tools using a shared, always-relevant knowledge base. Spend less time debugging and more time building with trustworthy, source-based answers.
The server returned 20 tools in tools/list. Only “list_notebooks” was invoked with a synthetic read-only input and succeeded.
ask_question# Conversational Research Partner (NotebookLM • Gemini 2.5 • Session RAG) ## No Active Notebook - Visit https://notebooklm.google to create a notebook and get a share link - Use **add_notebook** to add it to your library (explains how to get the link) - Use **list_notebooks** to show available sources - Use **select_notebook** to set one active > Auth tip: If login is required, use the prompt 'notebooklm.auth-setup' and then verify with the 'get_health' tool. If authentication later fails (e.g., expired cookies), use the prompt 'notebooklm.auth-repair'. Tip: Tell the user you can manage NotebookLM library and ask which notebook to use for the current task.
Parameters: question, session_id, notebook_id, notebook_url, source_format, show_browser, browser_optionsadd_notebookRegister a NotebookLM notebook in the local library so it can be queried with `ask_question`, ingested into with `add_source`, etc. ## Required URL The user must supply a NotebookLM share-link. To produce one: 1. Open https://notebooklm.google 2. Open the notebook → click "Share" (top right) 3. Set "Anyone with the link" → "Copy link" ## Permission workflow Do NOT call this tool unprompted. The expected dialogue is: 1. Ask for the URL 2. Ask what knowledge it contains (1–2 sentences) → `description` 3. Ask which topics it covers (3–5) → `topics` 4. Ask when it should be consulted → `use_cases` 5. Propose a `name` and the metadata back to the user 6. Only after explicit confirmation, call `add_notebook`. Free-tier limits: 100 notebooks · 50 sources each · 50 queries/day. Google AI Pro/Ultra raises these 5×.
Parameters: url, name, description, topics, content_types, use_cases, tagslist_notebooksList every notebook in the local library with its metadata (`id`, `name`, `description`, `topics`, `tags`, `url`, `use_count`, etc.). Use the returned `id` for `select_notebook`, `update_notebook`, `get_notebook`, `remove_notebook`, or as `notebook_id` on `ask_question` / `add_source` / audio tools.
get_notebookFetch full metadata for one notebook by id. Use to verify what's currently stored before calling `update_notebook`, or to show the user the exact `description`/`topics`/`use_cases` Claude has for it.
Parameters: idselect_notebookMark a notebook as the active default. After this, `ask_question`, `add_source`, and the audio tools resolve to that notebook when the caller omits `notebook_id` / `notebook_url`. When to call: • The user explicitly switches context (e.g. "Let's work on React now") • Task obviously needs a different notebook than the current one — announce the switch ("Switching to the React notebook…") before calling. • If the right notebook is ambiguous, ask the user first instead of guessing.
Parameters: idupdate_notebookPatch metadata fields on an existing notebook. Pass `id` plus any subset of `name`, `description`, `topics`, `content_types`, `use_cases`, `tags`, `url` — only supplied fields change. Workflow: identify the target notebook → propose the exact change back to the user → call only after explicit confirmation. Multiple fields can be updated in one call.
Parameters: id, name, description, topics, content_types, use_cases, tags, urlremove_notebookRemove a notebook from the local library. **Does NOT delete the actual NotebookLM notebook on Google's side** — only the local metadata entry. Active sessions on this notebook are closed. Confirmation workflow: look up the notebook by id, ask the user "Remove '[name]' from your library?" — only call after a clear yes.
Parameters: idsearch_notebooksSearch the library by free-text query — matches against `name`, `description`, `topics`, and `tags`. Returns notebook objects with their `id` so you can chain into `select_notebook` etc. Use this when the user references a notebook by topic ("the React one") instead of by exact name. If multiple notebooks match, propose the top 1–2 and let the user choose.
Parameters: queryget_library_statsAggregate statistics about the local notebook library: `total_notebooks`, `active_notebook` (id), `most_used_notebook`, `total_queries`, `last_modified`. Useful as a quick health check or when the user asks "what notebooks do I have?".
list_sessionsList all active browser sessions for this server. Each entry includes `id`, `created_at`, `last_activity`, `age_seconds`, `inactive_seconds`, `message_count`, and `notebook_url`. Useful before `reset_session` / `close_session` or to recover a `session_id` you can pass back into `ask_question` to continue an existing conversation. Sessions older than `session_timeout` (see `get_health`) are auto-closed.
close_sessionPermanently close a session and discard its browser tab. Use the `id` returned by `list_sessions` (or the `session_id` from a prior `ask_question` response). Closed sessions cannot be resumed — start a new one with `ask_question` (no `session_id`) or pick another from `list_sessions`. Ask the user before closing if the session might still be needed.
Parameters: session_idreset_sessionClear a session's chat history while keeping the same session id. Use this when the task changes mid-conversation and you want a fresh context without losing the underlying browser tab. Ask the user before resetting if they might still need the prior history.
Parameters: session_idget_healthInspect server state. Returns: • `authenticated` — whether saved Google cookies are still valid • `notebook_url`, `active_notebook_id`, `active_notebook_name` — the currently selected library notebook (or null) • `total_notebooks` — library size • `active_sessions`, `max_sessions`, `session_timeout` — runtime session stats (timeout in seconds; sessions auto-close after this) • `headless`, `auto_login_enabled`, `stealth_enabled` — config Use this first thing in a new conversation. If `authenticated=false`, run `setup_auth` (or `re_auth` to switch accounts).
setup_authOpen a browser window for first-time Google login. Returns immediately after spawning the browser; the user has up to 10 minutes to complete sign-in, then cookies are persisted for future runs. When to use: • `get_health` reports `authenticated=false` for the first time • Auto-login credentials are not configured • `re_auth` is the right call when you want to *switch* accounts or recover from a daily-quota lockout After login finishes, call `get_health` to verify success. If the browser session feels broken (auth keeps failing, stale cookies), run `cleanup_data(confirm=true, preserve_library=true)` first, then retry `setup_auth`.
Parameters: show_browser, browser_optionsre_authSwitch to a different Google account or recover from broken auth. Closes all active sessions, deletes saved cookies and Chrome profile, and opens a fresh login browser. Common triggers: • NotebookLM's 50 queries/day free-tier limit is reached and the user wants to rotate to another Google account • `setup_auth` failed and a clean slate is needed After login, call `get_health` to verify. For very stuck states, run `cleanup_data(confirm=true, preserve_library=true)` before `re_auth`.
Parameters: show_browser, browser_optionscleanup_dataTwo-phase deep cleanup of all server data on disk (auth state, browser profiles, caches, MCP logs, temp backups). Cross-platform (Linux/macOS/Windows). Always close all Chrome/Chromium instances first — open browsers can lock files. Phase 1 (preview): call with `confirm: false`. Returns a categorised list of paths and total size. **No deletion happens.** Phase 2 (delete): after the user reviews the preview and approves, call with `confirm: true`. Set `preserve_library: true` to keep the notebook library file (library.json) while wiping everything else — recommended when troubleshooting auth. Typical recovery flow: 1. cleanup_data(confirm=false, preserve_library=true) // preview 2. cleanup_data(confirm=true, preserve_library=true) // execute 3. setup_auth (or re_auth)
Parameters: confirm, preserve_libraryadd_sourceIngest a source into a NotebookLM notebook. Supports two source types in v2.0: • `url` — NotebookLM crawls and indexes a website • `text` — paste raw text (treated as a copied document) File / YouTube / Google-Drive uploads are not yet implemented. Returns `sourceCountBefore`/`sourceCountAfter` so the caller can verify the new source landed. Call once per source — multiple sources require multiple calls. NotebookLM finishes indexing within 5–30 seconds; subsequent `ask_question` calls then have the new source in context. Free notebooks cap at 50 sources. Known quirk: pasted-text uploads occasionally redirect to a freshly created "Untitled notebook" on Google's side. The tool detects this and returns a clear error so you can re-try against the correct URL.
Parameters: type, content, title, show_browser, session_id, notebook_id, notebook_urlgenerate_audioTrigger podcast-style Audio Overview generation for a notebook. **Async by default** — returns immediately with one of: • `status: "started"` — generation just kicked off • `status: "in_progress"` — a generation was already running; this call attached to it • `status: "ready"` (with `alreadyExisted: true`) — an Audio Overview already existed; nothing was triggered Generation typically takes 2–10 minutes. **Workflow:** 1. `generate_audio` → returns immediately 2. Poll `get_audio_status` every ~30 s 3. When status is `ready`, call `download_audio` Pass `wait_for_completion: true` for legacy synchronous behaviour (blocks for up to `timeout_ms`). Audio Overview is the only Studio output exposed in v2.0 (Video / Mindmap / Quiz / Infographic / Datatable / Presentation are NotebookLM features but not yet wrapped).
Parameters: custom_prompt, wait_for_completion, timeout_ms, show_browser, session_id, notebook_id, notebook_urlget_audio_statusNon-blocking probe for the current Audio Overview state of a notebook. Returned `status` values: • `ready` — Audio Overview is generated and ready to download • `in_progress` — generation is currently running • `not_started` — no Audio Overview exists yet for this notebook Safe to poll every ~30 s while waiting for `generate_audio` to finish. When status flips to `ready`, call `download_audio` with a destination directory.
Parameters: show_browser, session_id, notebook_id, notebook_urldownload_audioSave the completed Audio Overview to disk as a `.m4a` file. **Pre-condition:** `get_audio_status` must report `status: "ready"`. Calling this before generation completes returns an error message explaining what to do. The file lands in `destination_dir` with NotebookLM's suggested filename (sanitised — usually the audio's title with underscores). The full saved path is returned in `result.filePath`.
Parameters: destination_dir, show_browser, session_id, notebook_id, notebook_urlThis server’s available tools can vary by account, permissions, or configuration. The list shown is not its full runtime catalog.
Name, description, publisher identifier, categories, transport, tool inventory, and install configuration.
Repository URL linked from the public profile; npm package repository metadata matched this GitHub repository.
Published package version 2.0.0 checked before launch. Registry repository: git+https://github.com/PleasePrompto/notebooklm-mcp.git.
Maintainer repository checked for current NotebookLM MCP functionality; 20 rows remain a partial community-server inventory.
Documentation checked 2026-10-28T00:00:00Z. Connection has not been runtime tested.