notebooklm-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CAST_NLM_PROFILE | No | Controls tool visibility for MCP server: minimal, standard, or full. | full |
| CAST_NLM_AI_MARKER | No | Enable or disable the AI-generated content marker prefix. | true |
| NOTEBOOKLM_PROFILE | No | Active authentication profile for CLI/MCP. | default |
| CAST_NLM_ENCRYPTION_KEY | No | AES-256 encryption key (64 hex chars) for credential storage; auto-generated if not set. | |
| NOTEBOOKLM_MCP_CLI_PATH | No | Overrides the credential storage directory. | ~/.notebooklm-mcp-cli/ |
| NOTEBOOKLM_ENABLED_TOOLS | No | Comma-separated list of tools to enable (overrides profile). | |
| NOTEBOOKLM_MCP_TRANSPORT | No | Transport to use: stdio, http, or sse. | stdio |
| NOTEBOOKLM_QUERY_TIMEOUT | No | Timeout in seconds for queries. | 120.0 |
| CAST_NLM_AI_MARKER_PREFIX | No | Custom text for the AI marker prefix. | |
| NOTEBOOKLM_DISABLED_TOOLS | No | Comma-separated list of tools to disable. | |
| NOTEBOOKLM_DISABLED_GROUPS | No | Comma-separated list of tool groups to disable. |
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
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| refresh_authA | Reload auth tokens from disk or run headless re-authentication. Call this after running Returns status indicating if tokens were refreshed successfully. |
| save_auth_tokensA | Save NotebookLM cookies (FALLBACK method - try IMPORTANT FOR AI ASSISTANTS:
|
| batchA | Perform batch operations across multiple notebooks. Actions:
|
| notebook_queryA | Ask AI about EXISTING sources already in notebook. NOT for finding new sources. Use research_start instead for: deep research, web search, find new sources, Drive search. |
| chat_configureC | Configure notebook chat settings. |
| notebook_query_startA | Start a notebook query asynchronously for large notebooks that may timeout. Use this instead of notebook_query when querying notebooks with many sources (50+) where the response may take longer than 60 seconds. Returns immediately with a query_id. Poll notebook_query_status with the query_id to get the result. Workflow: notebook_query_start -> poll notebook_query_status until completed. |
| notebook_query_statusA | Check the status of an async notebook query started with notebook_query_start. Returns the query result when completed, or current status if still in progress. Poll this tool every few seconds until status is 'completed' or 'error'. |
| cross_notebook_queryA | Query multiple notebooks and get aggregated answers with per-notebook citations. Specify notebooks by name, by tags, or use all=True for all notebooks. |
| download_artifactA | Download any NotebookLM artifact to a file. Unified download tool replacing 9 separate download tools. Supports all artifact types: audio, video, report, mind_map, slide_deck, infographic, data_table, quiz, flashcards. |
| export_artifactA | Export a NotebookLM artifact to Google Docs or Sheets. Supports:
|
| notebook_listB | List all notebooks. |
| notebook_getC | Get notebook details with sources. |
| notebook_describeB | Get AI-generated notebook summary with suggested topics. |
| notebook_createC | Create a new notebook. |
| notebook_renameC | Rename a notebook. |
| notebook_deleteA | Delete notebook permanently. IRREVERSIBLE. Requires confirm=True. |
| noteA | Manage notes in a notebook. Unified tool for all note operations. Supports: create, list, update, delete |
| pipelineB | Manage and execute multi-step notebook pipelines. Actions:
|
| research_startA | Deep research / fast research: Search web or Google Drive to FIND NEW sources. Use this for: "deep research on X", "find sources about Y", "search web for Z", "search Drive". Workflow: research_start -> poll research_status -> research_import. |
| research_statusA | Poll research progress. Blocks until complete or timeout. |
| research_importA | Import discovered sources into notebook. Call after research_status shows status="completed". |
| server_infoA | Get server version, check for updates, and report auth status. AI assistants: If update_available is True, inform the user that a new version is available and suggest updating with the provided command. auth_status is the result of an AuthHealthChecker probe. The checker
runs a multi-probe strategy (homepage fetch + API fallback) with
30-second TTL caching and mtime-based bypass on auth-file changes.
The reported value may therefore be up to 30 seconds old, and an
external auth_status meanings:
Returns: dict with version info: - version: Current installed version - latest_version: Latest version on PyPI (or None if check failed) - update_available: True if a newer version is available - auth_status: configured | stale | unverified | not_configured | error - update_command: Command to run to update |
| notebook_share_statusA | Get current sharing settings and collaborators. |
| notebook_share_publicB | Enable or disable public link access. |
| notebook_share_inviteC | Invite a collaborator by email. |
| notebook_share_batchB | Invite multiple collaborators in a single request. |
| tagA | Manage notebook tags and find relevant notebooks by tag matching. Actions:
|
| source_addA | Add a source to a notebook. Unified tool for all source types. Supports: url, text, drive, file |
| source_list_driveA | List sources with types and Drive freshness status. Use before source_sync_drive to identify stale sources. |
| source_sync_driveA | Sync Drive sources with latest content. Requires confirm=True. Call source_list_drive first to identify stale sources. |
| source_renameB | Rename a source in a notebook. |
| source_deleteA | Delete source(s) permanently. IRREVERSIBLE. Requires confirm=True. |
| source_describeB | Get AI-generated source summary with keyword chips. |
| source_get_contentA | Get raw text content of a source (no AI processing). Returns the original indexed text from PDFs, web pages, pasted text, or YouTube transcripts. Much faster than notebook_query for content export. |
| studio_createC | Create any NotebookLM studio artifact. Unified creation tool. Supports: audio, video, infographic, slide_deck, report, flashcards, quiz, data_table, mind_map |
| studio_statusC | Check studio content generation status and get URLs, or rename an artifact. |
| studio_deleteA | Delete studio artifact. IRREVERSIBLE. Requires confirm=True. |
| studio_reviseA | Revise individual slides in an existing slide deck. Creates a NEW artifact. Only slide decks support revision. The original artifact is not modified. Poll studio_status after calling to check when the new deck is ready. |
| labelC | Manage source labels in a notebook. Unified tool for all label operations. Labels let you organize sources into thematic categories. Requires 5+ sources for auto-labeling. Sources can belong to multiple labels simultaneously. Supports: auto, list, reorganize, create, rename, set_emoji, move_source, delete |
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 39 tools
Each tool has a well-defined and distinct purpose, with descriptions that clearly differentiate similar tools (e.g., notebook_query vs research_start vs cross_notebook_query). The batch and category tools (label, note, tag) namespace their sub-actions, preventing confusion.
Most tools follow a consistent verb_noun pattern (e.g., notebook_create, source_add, studio_create), but a few tools are nouns representing a category of operations (label, note, tag, pipeline, batch). While the sub-actions within these are verbs, the top-level names deviate slightly.
39 tools is on the high side, but the server covers a broad and complex domain (NotebookLM). Each tool serves a specific purpose, though some could potentially be consolidated further (e.g., share tools). The count is borderline heavy but not unreasonable.
The tool surface covers all major lifecycle phases: CRUD for notebooks, sources, notes, and artifacts; research pipeline; sharing; tags/labels; batch operations; and auth management. There are no obvious gaps for the intended domain.