NotebookLM MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NOTEBOOKLM_COOKIES | No | Cookie string to authenticate with NotebookLM. Set this to skip the auth flow in CI/headless environments. | |
| NOTEBOOKLM_CSRF_TOKEN | No | CSRF token for authentication. Optional if NOTEBOOKLM_COOKIES is set. | |
| NOTEBOOKLM_SESSION_ID | No | Session ID for authentication. Optional if NOTEBOOKLM_COOKIES is set. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| notebook_listA | List the user's NotebookLM notebooks, owned and shared. Returns each notebook's id, title, emoji, sources (id, title, type), ownership and timestamps, plus a count. Start here to find a notebook_id by title; once you have the id, notebook_get reads one notebook. There is no paging: if count equals max_results, call again with a higher max_results. |
| notebook_createA | Create an empty NotebookLM notebook. Returns the new notebook; keep its id for every later call. Each call creates another notebook, so first look for one with this title in notebook_list. Then fill it: source_add_url, source_add_text or source_add_drive for sources you have, research_start to find some. |
| notebook_getA | Get one notebook's details. Returns its title, emoji, ownership, timestamps and sources, each with id, title and type (web_page, youtube, pasted_text, pdf, google_docs, ...). Use it to find source IDs for notebook_query and the Studio tools, or to check that a source you just added has appeared. |
| notebook_summarizeA | Ask NotebookLM for an AI-generated overview of the whole notebook. Returns a short summary of what its sources cover and the questions NotebookLM suggests asking about them. Use it to get oriented in an unfamiliar notebook; ask specific questions with notebook_query and list the sources with notebook_get. |
| notebook_renameA | Change a notebook's title; its sources and chat stay as they are. Returns a confirmation message with the new title. Find the notebook_id with notebook_list first. |
| notebook_deleteA | Permanently delete a notebook and everything in it. With confirm=false it does nothing and returns pending_confirmation; with confirm=true it deletes and returns a confirmation message. This cannot be undone: name the notebook to the user and get explicit approval first. |
| source_getA | Get one source's metadata. Returns its id, title, type (web_page, youtube, pasted_text, pdf, google_docs, ...) and content_length, the number of characters NotebookLM extracted from it. The text itself is left out because it can be very long; fetch it with source_get_content. |
| source_get_contentA | Get the full text NotebookLM extracted from a source, with tables flattened to "cell | cell" rows. Returns { text }, which can be long: a long Wikipedia article came to about 100,000 characters. Prefer notebook_query to answer questions; use this when the user needs the verbatim text. |
| source_add_urlA | Add a web page or a YouTube video to a notebook by URL. NotebookLM fetches the page itself, so it must be publicly reachable. Returns the new source (id, title, type web_page or youtube); the title can show the URL until processing finishes. If NotebookLM cannot fetch the page the call fails: check notebook_get before retrying. |
| source_add_textA | Add text as a source: pass it in content, or point file_path at a local file (content wins if both are set). A file_path outside the server's working directory and the OS temp directory is refused; read such a file yourself and pass content. Returns the new source (id, title, type pasted_text). For a web page or YouTube video use source_add_url; for a Drive file, source_add_drive. |
| source_add_driveA | Add a Google Drive file as a source, by its Drive file ID and MIME type; the signed-in Google account must be able to open the file. Returns the new source (id, title, type). The source is a snapshot: when the Drive file changes, refresh it with source_sync_drive. For a public web page use source_add_url instead. |
| source_sync_driveA | Re-import Google Drive sources (added with source_add_drive) so the notebook uses the latest version of each file, replacing the stored snapshot. With confirm=false it does nothing and returns pending_confirmation; with confirm=true it syncs and returns how many sources were synced. |
| source_deleteA | Permanently remove one source from a notebook. With confirm=false it does nothing and returns pending_confirmation; with confirm=true it deletes and returns a confirmation message. This cannot be undone: name the source to the user and get explicit approval first. |
| audio_overview_createA | Start generating an Audio Overview: a podcast-style conversation between two AI hosts about the notebook's sources. Uses the user's NotebookLM quota and takes several minutes, so agree on the options with the user first: with confirm=false it does nothing and returns pending_confirmation. With confirm=true it returns the artifact_id; poll studio_status until that artifact is completed. Once completed, studio_status gives an audio download_url. |
| video_overview_createA | Start generating a Video Overview: a narrated video with visuals that explains the notebook's sources. Uses the user's NotebookLM quota and takes several minutes, so agree on the options with the user first: with confirm=false it does nothing and returns pending_confirmation. With confirm=true it returns the artifact_id; poll studio_status until that artifact is completed. Once completed, studio_status gives a video download_url. |
| infographic_createA | Start generating an infographic: a single image that summarises the notebook's sources visually. Uses the user's NotebookLM quota and takes several minutes, so agree on the options with the user first: with confirm=false it does nothing and returns pending_confirmation. With confirm=true it returns the artifact_id; poll studio_status until that artifact is completed. Once completed, studio_status gives an image download_url. |
| slide_deck_createA | Start generating a slide deck from the notebook's sources. Uses the user's NotebookLM quota and takes several minutes, so agree on the options with the user first: with confirm=false it does nothing and returns pending_confirmation. With confirm=true it returns the artifact_id; poll studio_status until that artifact is completed. Once completed, studio_status gives a download_url for the deck as a PDF. |
| report_createA | Start generating a written report from the notebook's sources: a Briefing Doc, Study Guide, Blog Post, or your own brief with report_format "Create Your Own" and custom_prompt. Uses the user's NotebookLM quota and takes several minutes, so agree on the options with the user first: with confirm=false it does nothing and returns pending_confirmation. With confirm=true it returns the artifact_id; poll studio_status until that artifact is completed. This artifact has no download file: the user opens it in the notebook in NotebookLM. |
| flashcards_createA | Start generating a set of study flashcards from the notebook's sources. Uses the user's NotebookLM quota and takes several minutes, so agree on the options with the user first: with confirm=false it does nothing and returns pending_confirmation. With confirm=true it returns the artifact_id; poll studio_status until that artifact is completed. This artifact has no download file: the user opens it in the notebook in NotebookLM. |
| quiz_createA | Start generating a multiple-choice quiz from the notebook's sources. Uses the user's NotebookLM quota and takes several minutes, so agree on the options with the user first: with confirm=false it does nothing and returns pending_confirmation. With confirm=true it returns the artifact_id; poll studio_status until that artifact is completed. This artifact has no download file: the user opens it in the notebook in NotebookLM. |
| studio_statusA | List the notebook's Studio artifacts. Returns each one's id, type (audio, video, report, flashcards, quiz, infographic, slide_deck), status (pending, generating, completed or failed) and download_url: set for completed audio, video, infographics and slide decks (PDF), null otherwise. It lists older artifacts too: after a *_create call, poll every 30-60 seconds and find yours by its artifact_id. |
| auth_refreshA | Re-read the NotebookLM page with the saved cookies to refresh the CSRF token and session ID. Returns a confirmation, or an authentication error if the Google session is signed out; then ask the user to run |
| auth_save_tokensA | Manual fallback: save NotebookLM cookies the user pasted, plus an optional CSRF token and session ID, to ~/.notebooklm-mcp/auth.json, replacing what is stored there. Returns a confirmation; the next call uses the new tokens. Prefer the CLI auth command. Use this only when the user hands you cookies, and never echo them back. |
| notebook_queryA | Ask NotebookLM a question that it answers only from the notebook's sources (all of them, or source_ids). Returns the answer and a conversation_id. The answer text keeps NotebookLM's bracketed citation numbers such as [1], but not which passage each number points to. Pass conversation_id back to ask a follow-up; this server remembers the conversation's history while it keeps running. |
| research_startA | Start a NotebookLM research task that searches the web, or the user's Google Drive, for sources on a topic. Deep mode is more thorough and slower than the default fast mode. Returns a task_id: poll research_status with it, then import the results you want with research_import. |
| research_statusA | Check research tasks in a notebook: one task, or all of them. Returns each task's status (in_progress, completed, imported, import_failed, or unknown for a state this server doesn't recognise), query, summary and found sources (url, title, description, type). Poll until the status is no longer in_progress; a source's position in this list is the index research_import takes. |
| research_importA | Add results of a finished research task to the notebook as sources. Only web results can be imported: without source_indices it imports every web result and skips Drive ones. NotebookLM fetches each URL and skips any it can't reach, so it returns "Imported X of Y research sources". If none could be fetched the call fails and the task shows import_failed; a retry may succeed. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 27 tools
The tools divide cleanly by domain and action: notebook CRUD, source ingestion/retrieval, Studio artifact generation, research, query, and auth. Parallel families like the seven *_create Studio tools are distinguished by artifact type in the name and description, so an agent can select correctly.
All names use snake_case and a consistent domain-first, action-second pattern (notebook_list, source_add_url, report_create, research_start). Occasional extra qualifiers such as source_get_content and auth_save_tokens remain predictable.
27 tools is heavy: the Studio suite could consolidate seven near-identical *_create tools into one parameterised tool, and source ingestion could be unified. However each tool maps to a distinct capability, so the count is borderline rather than arbitrary.
Core notebooks, sources, Studio artifacts, research, query, and auth workflows are covered. Gaps include deleting or updating Studio artifacts and refreshing non-Drive URL sources, but agents can work around these.