MCP server bringing Google NotebookLM into any MCP client (Claude, Cursor, Codex, Antigravity IDE…) — grounded Q&A with citations, sources, and Studio generation
NotebookLM Connector demonstrates solid definition quality with consistent naming patterns, comprehensive parameter descriptions, and clear tool responsibilities. All 12 tools follow verb_noun naming (notebooklm_*) and are well-documented. However, there are notable gaps in output schema documentation, error handling guidance, and some parameter constraints lack formal enum/pattern enforcement. The server provides good discovery-oriented descriptions that explain WHEN to use tools, but lacks explicit recovery guidance and structured error messages. Tool composition is clean with no overlapping responsibilities, though some tools could better document dependencies (e.g., notebooklm_generation_status requires a task_id from notebooklm_generate, which is mentioned but not emphasized).
Add a source (URL, YouTube, PDF file, plain text, or other document) to a notebook. Returns the source ID. Processing (OCR, transcription, etc.) happens asynchronously; use notebooklm_get_notebook to poll status, or wait roughly 30–60 seconds before asking Q&A.
Ask a source-grounded question about a notebook's sources. Returns the answer and citations (with snippets) from the sources. Optionally run 'thorough mode' for automatic follow-up Q&A to fill gaps detected by NotebookLM's gap-analysis algorithm.
Check whether a valid NotebookLM session exists. Verifies that stored Google session cookies (written by `notebooklm login`) exist and still work by making a lightweight API call. Run this first if other tools return authentication errors.
Create a new NotebookLM notebook. Returns the new notebook ID. Optionally add initial sources (URLs or file paths).
Delete a notebook and all its contents (sources, artifacts, chat history). This is irreversible. Use with caution.
Output schemas not explicitly documented. While tools have clear return descriptions in docstrings (e.g., notebooklm_ask returns 'answer and citations'), the structured response fields are not formally specified in JSON Schema. LLMs cannot reliably extract response fields without documented schemas.
Missing recovery guidance in error scenarios. Tools like notebooklm_login and notebooklm_ask can fail in several ways (auth errors, network timeout, missing sources), but descriptions do not provide 'try X next' guidance. Agents will stall without actionable error recovery paths.
artifact_type parameter in notebooklm_generate uses enum constraint (correct), but no description explains the differences between artifact types or when to use each. LLM must guess which artifact type matches user intent.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
Remove a source from a notebook. The source and all derived artifacts will be deleted.
Generate a Studio artifact (audio overview, report, quiz, slide deck, study guide, podcast, or custom) from a notebook's sources. Returns a task_id for polling. Use notebooklm_generation_status to check progress and retrieve the result URL once ready.
Check the status of a generation task (artifact creation). Polls the task until it completes or times out. Returns status, URL, and any error.
Get detailed notebook metadata: title, description, source list, and artifact status.
Enumerate Google accounts signed into a local browser. Reads the browser's cookie database to find Google accounts. Useful when a user has multiple Google accounts and you need to ask which one to use.
List all notebooks in the authenticated NotebookLM account. Each notebook is a document workspace with sources and generated artifacts (audio overviews, reports, etc.). Use notebook IDs from here for other tools.
Authenticate to Google NotebookLM using a browser session or interactive sign-in. Reads cookies from the chosen browser (no password needed) or opens an interactive sign-in window. Stores a reusable session for subsequent API calls.
notebooklm_add_source declares three mutually exclusive parameters (url, file_path, text), but LLMs cannot reliably parse 'Mutually exclusive with X and Y' from free-form text. Consider a more explicit approach (oneOf in schema or enum mode parameter).
notebooklm_ask and notebooklm_generation_status perform polling operations but do not document timeout behavior, max retries, or expected polling intervals. Agents may retry indefinitely or too aggressively.
Destructive operations (notebooklm_delete_notebook, notebooklm_delete_source) warn 'irreversible' but do not offer confirmation/dry-run mechanism. Agents can accidentally delete resources without an explicit second confirmation step.