notebooklm-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NLM_PROFILE_DIR | No | Override the OS user-data directory for saving the Google session. | OS default user-data directory |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| notebook_listA | List notebooks visible to the signed-in Google account. Returns { id, title, icon, source_count, updated_at, url, ownership }.
Known limitation: |
| notebook_createA | Create a brand-new, empty notebook. Returns { id, title, url }. Uses NotebookLM's CCqFvf RPC, which always creates a fresh notebook
(unlike the idempotent "get recent draft" endpoint). |
| notebook_deleteA | Delete a notebook permanently. Returns { id, deleted: True }. Irreversible — NotebookLM has no trash/undo. Caller confirms. |
| notebook_queryA | Ask a question inside a notebook and return the grounded answer. The exchange is persisted in the NotebookLM web UI's chat history. Returns { answer, source_count, session_ids, chunks }. |
| notebook_share_publicB | Toggle the public share link on a notebook. Returns the share URL when enabled. |
| notebook_share_inviteA | Invite collaborators by email to a notebook. |
| source_addA | Add a source to a notebook and return { id, title, word_count }.
Not yet implemented: drive, file. |
| source_sync_driveB | Refresh Drive-linked sources. If |
| source_get_contentB | Return the extracted text/metadata of a single source. |
| studio_createA | Start generating a Studio artifact (audio/podcast by default). Returns immediately with { artifact_id, status, title } — generation is
asynchronous and typically takes 2-5 minutes. Poll Currently implemented: audio (Audio Overview / podcast). Other artifact types (video, slides, etc.) raise NotImplementedError. |
| studio_reviseA | Revise an existing slide deck (and any revisable artifact) with new instructions. |
| download_artifactA | Check an artifact's status and, if complete, download it to disk. If |
| research_startA | Kick off NotebookLM's Discover (Fast Research) flow on a topic. Returns { query, sources: [{ url, title, description }, ...] }. The candidate sources are NOT automatically added to the notebook.
Use Requires an EMPTY notebook — NotebookLM disables Discover once the
notebook has content. Create one with |
| research_and_askA | One-shot: create ephemeral notebook → research → import sources → Q&A. Full workflow wrapped in a single call:
Returns { notebook_id, # str if kept, None if deleted topic, sources_imported, # [{url, title, word_count}, ...] qa, # [{question, answer, source_count, chunks}, ...] kept, # bool } |
| cross_notebook_queryA | Ask the same question across multiple notebooks and return per-notebook answers. Returns { question, results: { : { answer, source_count, session_ids, chunks } | { error: }, ... }, ok_count, error_count, } Per-notebook failures (no sources, RPC errors) are captured in |
| batchB | Run a single tool operation across many notebooks (e.g. operation="notebook_query"). |
| pipelineA | Run a sequence of tool invocations. Each step: { tool, params }. Output of step N is available as |
| tagA | Add/remove tags on one or more notebooks. mode in {"add","remove","set"}. |
| refresh_authA | Re-validate the stored Google session. Returns { logged_in: bool, email?: str }. |
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 19 tools
Most tools target distinct resources and actions: notebook lifecycle, source management, research, and studio are clearly separated. Potential confusion exists between research_start and research_and_ask (both initiate research) and between studio_create and studio_revise (both generate artifacts), but descriptions clarify the workflow differences.
Resource-based tools follow a consistent <resource>_<action> pattern (notebook_*, source_*, studio_*), but several tools deviate: download_artifact, refresh_auth, batch, pipeline, tag, and research_and_ask break the convention. The naming is readable and accessible, though mixed styles reduce overall predictability.
At 19 tools, the set is on the heavier side but justified by NotebookLM's broad feature surface: notebooks, sources, research, studio, sharing, and meta-orchestration all receive coverage. The number is not excessive and each tool serves a distinct purpose.
Core lifecycle operations are covered for notebooks (create, list, delete, query) and sources (add, sync, get_content), and research/studio workflows are complete. Notable gaps include lack of notebook update/rename, source deletion, and source listing, but these are minor and workaroundable.