That is the property worth having: a question routed to a notebook is answered from the documents it contains, so the failure mode becomes "not in the sources" rather than a confident invention — and the local library is what makes routing to the right notebook possible in the first place, since search and select turn a pile of notebooks into something a model can choose between. Two things to set up front: authentication is a real browser sign-in with a ten-minute window, and the free tier's daily query cap is low enough that heavy sessions will hit it.
A browser-automation bridge to Google NotebookLM, with a local library of your notebooks on top. It is a security-hardened fork of PleasePrompto/notebooklm-mcp, maintained by Pantheon Security, and answers come from the notebook's own sources rather than a model's memory.
- ask_question puts a question to a notebook — the active one, or any notebook named by id or URL
- A local library that makes notebooks addressable: add_notebook, list_notebooks, get_notebook, search_notebooks by name, topic or tag, update_notebook and remove_notebook, with select_notebook setting the default
- sync_library compares the library against the notebooks actually in your account and reports stale entries, with auto_fix to reconcile them
- create_notebook builds a new notebook and uploads its sources in one call; batch_create_notebooks does up to ten, continuing on error or stopping at the first
- Sources listed, added and removed inside a notebook — URLs, text and files — with list_sources returning each one's id, title, type and status
- generate_audio_overview produces a podcast-style summary, with get_audio_status reporting not_started, generating, ready or failed plus progress, and download_audio saving the file once it is ready
- generate_video_overview does the same for a visual summary with a style and format, tracked by get_video_status
- generate_data_table extracts a structured table from the notebook's sources, and get_data_table returns its headers and rows as JSON
- get_health reports authentication state, active sessions and configuration, with a deep check mode; get_quota reports the account tier and how much of the notebook, source and query allowance is left
- Browser behaviour controllable per call through browser_options — visible or headless, timeouts, viewport, and human-like typing and delay settings
- Destructive steps are held behind explicit confirmation: removing a notebook asks for the full name first, and adding one asks you rather than inferring the metadata
A Google account with NotebookLM access. Authentication is a browser login rather than a key: setup_auth opens a window and returns immediately, leaving you up to 10 minutes to finish signing in, and re_auth switches accounts. No Gemini API key is needed for the core features; the optional Deep Research and document-upload paths are what want one. It runs as npx @pan-sec/notebooklm-mcp@latest over stdio, on Linux, macOS or Windows. NotebookLM's own limits apply — the free tier is capped at 50 queries a day, which is what re_auth exists to work around.
One command — npx -y @pan-sec/notebooklm-mcp@latest
