Skip to directory

NotebookLM

PleasePrompto

stdio20+ documented tools2

About NotebookLM

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.

What you can use it for

  • productivity
Connection and setup
Hosting
Local stdio process
Transport
stdio
Endpoint
Local process; no hosted endpoint documented
Authentication
No credentials were configured; the tested read-only tool “list_notebooks” succeeded in an isolated environment. Other tools may have additional requirements.

Requirements

  • Node.js 18+
  • The npm package repository matched the repository linked from the public profile.

Setup steps

  1. npx -y notebooklm-mcp@2.0.0
Tools 20+

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_options
    01
  • add_notebook

    Register 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, tags
    02
  • list_notebooks

    List 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.

    03
  • get_notebook

    Fetch 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: id
    04
  • select_notebook

    Mark 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: id
    05
  • update_notebook

    Patch 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, url
    06
  • remove_notebook

    Remove 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: id
    07
  • search_notebooks

    Search 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: query
    08
  • get_library_stats

    Aggregate 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?".

    09
  • list_sessions

    List 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.

    10
  • close_session

    Permanently 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_id
    11
  • reset_session

    Clear 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_id
    12
  • get_health

    Inspect 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).

    13
  • setup_auth

    Open 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_options
    14
  • re_auth

    Switch 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_options
    15
  • cleanup_data

    Two-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_library
    16
  • add_source

    Ingest 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_url
    17
  • generate_audio

    Trigger 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_url
    18
  • get_audio_status

    Non-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_url
    19
  • download_audio

    Save 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_url
    20

This server’s available tools can vary by account, permissions, or configuration. The list shown is not its full runtime catalog.

Limitations and notes
  • Runtime verification covered one read-only tool call (list_notebooks); other listed tools were not individually exercised.
Original sources
  • MCP.Directory public profile

    Name, description, publisher identifier, categories, transport, tool inventory, and install configuration.

  • Linked publisher repository

    Repository URL linked from the public profile; npm package repository metadata matched this GitHub repository.

  • npm registry metadata

    Published package version 2.0.0 checked before launch. Registry repository: git+https://github.com/PleasePrompto/notebooklm-mcp.git.

  • maintainer or vendor documentation

    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.