NotebookLM MCP Structured
Integrates with Google's NotebookLM to facilitate document analysis through structured prompts that enforce source fidelity, mandatory citations, and the exclusion of external knowledge from AI responses.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@NotebookLM MCP Structured Summarize the key findings from the research papers with citations."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
NotebookLM MCP Structured
Project status (2026-08-20): Development of notebooklm-mcp-structured is frozen as of this date and the repository is archived. The server is feature-complete and working: v1.1.0 ships the singleton backend (concurrent Claude Desktop surfaces share one browser) and is built on MCP SDK 1.30.0, the latest release for version 1 of the MCP protocol. The project remains available as-is; no further development is planned. Future work will continue in a successor project built on version 2 of the MCP protocol.
Google renamed NotebookLM (July 2026): the product is now Gemini Notebook and moved from
notebooklm.google.comtonotebook.google.com, with new notebook URLs and a redesigned UI. That change is what prompted the final revision cycle of this server: v1.1.0 targets the new host, the new answer UI, and Google's redirect chain. The project keeps its historical name.
Enhanced MCP server for NotebookLM with client-side prompt structuring for source fidelity.
Requirements: This MCP server is designed to work with Claude Desktop. It requires Claude Desktop to be installed and configured to use MCP servers.
This is a modified version of notebooklm-mcp that adds comprehensive structuring instructions to guide Claude in crafting prompts that enforce document fidelity for professional use cases (legal analysis, research, fact-checking).
Key Features
Client-Side Prompt Structuring
The MCP tool description includes comprehensive guidelines that instruct Claude on how to structure questions before sending them to NotebookLM. This ensures:
Source fidelity: Responses come ONLY from uploaded documents
Citation requirements: Every claim includes source attribution
Missing information handling: Explicit declaration when data is unavailable
Multi-language support: Works naturally with any language Claude supports
Question type adaptation: Different structures for comparisons, lists, analyses, explanations, and extractions
How It Works:
User asks a simple question in any language
Claude reads the structuring guidelines from the tool description
Claude transforms the question into a well-structured prompt
NotebookLM receives the structured prompt and responds accordingly
Claude is instructed to present the response faithfully without adding external knowledge
Why This Matters:
NotebookLM already provides source fidelity by design (Gemini grounded on documents). The real problem this fork solves is different: preventing Claude from "improving" NotebookLM's responses with external knowledge when presenting them to the user.
Design Intent (what the fork aims to achieve):
┌─────────────────────────────────────────────────────┐
│ Without structuring (original MCP): │
│ • NotebookLM: "Document states X [Source: doc.pdf]"│
│ • Risk: Claude may add external knowledge │
│ "Document states X. Also, based on my knowledge, │
│ Y is important to consider..." │
│ └─ External knowledge added! ─┘ │
│ │
│ With structuring (this fork): │
│ • NotebookLM: "Document states X [Source: doc.pdf]"│
│ • Claude reads Response Handling instruction │
│ • Goal: Claude presents faithfully │
│ "Document states X [Source]" │
│ └─ Faithful presentation, no additions ─┘ │
└─────────────────────────────────────────────────────┘The structuring guidelines include two critical instruction phases:
Pre-send: Transform questions with explicit constraints (but preserve original wording)
Post-receive: Instruct Claude to present responses faithfully WITHOUT external knowledge
This dual-phase approach is designed to maintain document fidelity throughout the workflow.
Verification & Transparency
How to verify the workflow:
Since NotebookLM saves chat history in your notebooks, you can verify the entire process:
Ask a question through Claude using this MCP
Open your notebook on the Gemini Notebook web interface (https://notebook.google.com — formerly notebooklm.google.com)
View the saved chat to see:
The structured prompt that Claude sent (via the MCP)
The original NotebookLM response with all internal reference links
What you can verify:
That structuring was applied correctly to your question
The raw NotebookLM response before Claude presents it
How Claude interpreted the Response Handling instructions
Which language was used for structured prompts (useful for multilingual testing)
This transparency mechanism lets you empirically verify the client-side structuring approach and understand each phase of the workflow.
Example Transformation:
Simple question:
What are the main findings in the research papers?Claude structures it as:
What are the main findings in the research papers?
Organize the response by thematic topics. Cover all aspects discussed in the documents.
For each topic:
- TOPIC: [identifying title]
- DESCRIPTION: [synthesis with context, connecting information across documents]
- EVIDENCE: "direct quote" [Source: document]
If a topic appears in multiple documents, show evidence from each.
If information is not found: [NOT FOUND IN DOCUMENTS]Critical Formatting Rule:
NO decorative lines (no
===or---) as they cause NotebookLM timeouts
Language Support
Multilingual by design - The fork works with multiple languages without requiring server-side configuration.
How it works:
The structuring guidelines in the tool description instruct Claude to "adapt to user's language". Claude interprets these instructions and applies them based on the conversational context.
What we know for certain:
✅ No server-side language detection in the MCP code
✅ No language-specific templates to maintain
✅ Tested successfully with Italian users and documents
✅ The approach is language-agnostic by design
Expected behavior:
The system works best when using a consistent language throughout the conversation
Claude interprets the structuring guidelines contextually
Results may vary based on conversational context
Important: Using a language different from your Claude account/profile language may produce unpredictable structuring results. For consistent behavior, use your account's primary language throughout the conversation.
Tested with Italian - works reliably with Italian users asking questions in Italian.
Other languages: The architecture supports any language Claude can work with. If you use it in other languages, please share your experience to help us understand the behavior patterns!
Automatic Connection Verification
The MCP server automatically verifies the connection to NotebookLM before executing any operation that requires it. This ensures a smooth user experience:
How it works:
When you make a request that requires NotebookLM (e.g., asking a question), the server checks if authentication is valid
If authentication is expired or missing, a browser window opens automatically for Google login
After successful login, your original request proceeds automatically
No manual intervention needed - the server handles authentication seamlessly within the conversation flow, even if Chrome is already running.
Related MCP server: Memory Bank MCP
Installation
Prerequisites
Claude Desktop - Required to use this MCP server
Node.js >= 18.0.0
npm
A Google account for NotebookLM access
Install from GitHub
# Clone the repository
git clone https://github.com/paolodalprato/notebooklm-mcp-structured.git
# Enter directory
cd notebooklm-mcp-structured
# Install dependencies
npm install
# Build
npm run buildConfigure Claude Desktop
Add to your claude_desktop_config.json:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"notebooklm": {
"command": "node",
"args": [
"/absolute/path/to/notebooklm-mcp-structured/dist/index.js"
]
}
}
}Windows example:
{
"mcpServers": {
"notebooklm": {
"command": "node",
"args": [
"D:\\path\\to\\notebooklm-mcp-structured\\dist\\index.js"
]
}
}
}First-time Authentication
After restarting Claude Desktop:
Ask Claude to check NotebookLM health:
Check notebooklm healthIf not authenticated, ask:
Setup notebooklm authenticationA browser window will open for Google login
Complete login and close the browser
Use Cases
Legal Document Analysis
Extract specific clauses with citations
Compare rulings across cases
Identify patterns in jurisprudence
Ensure responses come only from case documents
Research
Literature review with source tracking
Fact extraction from multiple documents
Cross-reference verification
Prevent mixing document content with external knowledge
Professional Fact-Checking
Verify claims against source documents
Identify what's explicitly stated vs. inferred
Maintain audit trail with citations
Ensure complete transparency of information sources
Architecture
Process Architecture: Proxy, Backend, Direct
Claude Desktop starts one MCP server process per surface (Chat, Cowork). Both used to fight over the same persistent Chrome profile, so whichever surface started second could not query NotebookLM until the first one released it. Since v1.1.0 this is fixed: dist/index.js takes one of three roles, decided automatically at startup. Claude Desktop's configuration does not change — it still launches the same command.
Role | When | What it does |
Proxy | Default; what Claude Desktop launches | A thin stdio server: pipes JSON-RPC between Claude Desktop's stdio and the shared backend over localhost Streamable HTTP. Spawns the backend if none is running, and reconnects with a handshake replay if the backend dies mid-session. |
Backend | Internal | The full server (browser, sessions, tools), bound to |
Direct |
| The legacy behavior: the full server directly on stdio, no proxy/backend split. Used for development (e.g. |
Result: Chat and Cowork can now query NotebookLM concurrently — one Chrome profile, one browser, shared behind the scenes. This was the bug the singleton backend was built to fix.
Lifecycle: the backend exits automatically NOTEBOOK_BACKEND_GRACE_MS (default 60000 ms) after its last client disconnects; a cleanly-closed proxy also sends an HTTP DELETE, so shutdown is prompt rather than waiting out the grace period. If no client ever connects (e.g. the spawning proxy died first), the backend exits after a 120s startup guard. Client liveness is tracked with a 30s proxy heartbeat against a 90s backend-side session TTL, swept every 15s.
Runtime files, in the data directory:
singleton.json- the backend's port, bearer token, pid, and version, written atomically once it is listeningsingleton.lock- spawn lock, held briefly by whichever proxy is starting the backendlogs/backend.log- the backend's log output (color codes stripped), truncated at the start of each run
Development note: npm run dev (tsx watch src/index.ts) cannot be spawned by the proxy, which always launches a compiled dist/index.js with --backend. Under tsx, either set NOTEBOOK_SINGLETON=false (direct mode) or hand-start a --backend process separately.
Request Workflow
This diagram shows the complete flow of a request through the system:
sequenceDiagram
participant U as 👤 User
participant C as 🤖 Claude
participant TD as 📋 Tool Description
participant MCP as ⚙️ MCP Server
participant NLM as 📚 NotebookLM<br/>(Gemini)
Note over U,NLM: PHASE 1: PRE-SEND (Client-Side Structuring)
U->>C: Simple question<br/>"Analyze the rulings in the documents"
C->>TD: Reads tool description
TD-->>C: Returns Structuring Guidelines<br/>+ Response Handling instructions
Note over C: Transforms simple question<br/>into structured prompt<br/>(constraints, citations, missing info)
Note over U,NLM: PHASE 2: MCP TRANSIT
C->>MCP: Structured prompt<br/>(with operational constraints)
Note over MCP: Passes question<br/>WITHOUT modifications
MCP->>NLM: Structured prompt
Note over NLM: Gemini processes<br/>against documents
Note over U,NLM: PHASE 3: RETURN FLOW
NLM-->>MCP: Response from documents
Note over MCP: Adds FOLLOW_UP_REMINDER<br/>("Need more info?")
MCP-->>C: Response + Reminder
Note over C: Applies "Response Handling"<br/>(instructions read in Phase 1)<br/>= presents faithfully
C-->>U: Source-faithful response<br/>with citationsWhat Happens at Each Phase
Phase | Actor | Action | Content Added/Read |
1a | Claude | Reads tool description | Structuring Guidelines: how to transform the question |
1b | Claude | Reads tool description | Response Handling: how to present the response |
1c | Claude | Transforms question | Adds operational constraints, citation requirements, missing info handling |
2 | MCP Server | Transits question | No modifications - passes structured prompt as-is |
3a | MCP Server | Modifies response | FOLLOW_UP_REMINDER: prompts Claude to check if more questions needed |
3b | Claude | Presents response | Applies Response Handling (source fidelity) read in Phase 1 |
Three-Level Instruction Architecture
The MCP server orchestrates two LLMs (Claude and NotebookLM/Gemini) using three distinct instruction mechanisms, each targeting a different actor:
Level | Where | Target | Purpose | Code Reference |
1. Tool Description |
| Claude | How to structure prompts, when to do follow-ups, session management |
|
2. Structured Prompt |
| NotebookLM | Source fidelity constraints, citation format, missing info handling |
|
3. Response Suffix |
| Claude | Push Claude to verify completeness before replying to the user |
|
Key distinction: The structured prompt (Level 2) is sent to NotebookLM to constrain its response. But some instructions in the tool description (Level 1) and the response suffix (Level 3) never reach NotebookLM — they guide Claude's behavior before and after the NotebookLM interaction.
Dual-purpose instructions in the tool description:
For NotebookLM (via the structured prompt Claude generates): operational constraints, citation requirements, output format
For Claude only (never sent to NotebookLM): "present faithfully WITHOUT adding external knowledge", "pause, compare with the user's goal", follow-up strategy
Key Architectural Insight
The MCP server does not add constraints on source fidelity after receiving the response. The fidelity instructions are read by Claude before sending the question, in the tool description. The server only adds an operational reminder ("do you need more information?"), not a behavioral constraint.
This architecture relies on Claude's ability to follow instructions read in advance, not on post-hoc technical controls. The structuring happens client-side (in Claude), making the system simpler, more flexible, and naturally multilingual.
Why Client-Side Structuring?
Advantages:
Multilingual by default: Claude naturally handles any language
Simpler architecture: No server-side template management
Flexible adaptation: Claude adjusts structure based on context
Future-proof: Updates to structuring logic just require tool description changes
Why No Decorative Lines?
NotebookLM interprets lines of = or - characters as invalid formatting, causing the system to timeout. The structuring guidelines specify plain text headers only, avoiding any decorative typography.
Question Type Detection
Claude automatically detects question type and applies appropriate structure:
Type | Trigger Words | Output Structure |
Comparison | "compare", "vs", "difference" | Elements, Similarities, Differences, Synthesis |
List | "list", "identify", "which" | Thematic topics with descriptions, evidence, cross-references |
Analysis | "analyze", "examine", "evaluate" | Thematic topics with cross-document connections |
Explanation | "explain", "why", "how" | Core concept, examples, related concepts, limitations |
Extraction | (default) | Thematic topics with descriptions, evidence, cross-references |
Tools Available
Core Tools (require NotebookLM connection)
ask_question- Ask questions to NotebookLM with session management (triggers auto-auth if needed)reset_session- Reset a session to start fresh (triggers auto-auth if needed)
Session Management
list_sessions- View all active conversation sessionsclose_session- Close a specific session
Authentication & Diagnostics
get_health- Check authentication, connection status, and Chrome state (enhanced diagnostics)setup_auth- Initial Google loginre_auth- Switch Google accounts or recover from rate limits
Notebook Library Management
add_notebook- Add a notebook to your librarylist_notebooks- View all notebooks in your libraryget_notebook- Get details of a specific notebookselect_notebook- Set active notebookupdate_notebook- Update notebook metadataremove_notebook- Remove notebook from librarysearch_notebooks- Search notebooks by keywordsget_library_stats- View library statistics
Maintenance
cleanup_data- Clean up browser data and authentication files
Contributing
Contributions are welcome! Please feel free to submit issues or pull requests.
Credits
Original
notebooklm-mcp: Gérôme DexheimerClient-side structuring approach: Paolo Dalprato
License
MIT
FAQ
Q: Does this work with Claude Code or other MCP clients? A: This MCP server is specifically designed for Claude Desktop. While other MCP-compatible clients might work, the automatic connection verification and authentication flow are optimized for the Claude Desktop experience.
Q: Does this work with languages other than Italian? A: The system is designed to work with any language Claude supports. It has been tested with Italian and works perfectly. If you use another language, the system should adapt automatically to your profile language. We're seeking feedback from users of other languages!
Q: Why not use server-side templates? A: Client-side structuring is simpler, more flexible, and naturally multilingual. Claude can adapt the structure to context better than fixed templates.
Q: Can I customize the structuring guidelines?
A: The guidelines are embedded in the tool description (src/tools/definitions/ask-question.ts). You can modify them and rebuild.
Q: What happens if I don't structure my prompts? A: NotebookLM might mix document content with its general knowledge. Structured prompts enforce source fidelity.
Q: Are there any rate limits? A: Free Google accounts have 50 queries/day to NotebookLM. Google AI Pro/Ultra accounts have 5x higher limits.
Available Tools
16 toolsadd_notebookA
PERMISSION REQUIRED — Only when user explicitly asks to add a notebook.
Conversation Workflow (Mandatory)
When the user says: "I have a NotebookLM with X"
Ask URL: "What is the NotebookLM URL?"
Ask content: "What knowledge is inside?" (1–2 sentences)
Ask topics: "Which topics does it cover?" (3–5)
Ask use cases: "When should we consult it?"
Propose metadata and confirm:
Name: [suggested]
Description: [from user]
Topics: [list]
Use cases: [list] "Add it to your library now?"
Only after explicit "Yes" → call this tool
Rules
Do not add without user permission
Do not guess metadata — ask concisely
Confirm summary before calling the tool
Example
User: "I have a notebook with n8n docs" You: Ask URL → content → topics → use cases; propose summary User: "Yes" You: Call add_notebook
How to Get a NotebookLM Share Link
Visit https://notebooklm.google/ → Login (free: 100 notebooks, 50 sources each, 500k words, 50 daily queries)
Click "+ New" (top right) → Upload sources (docs, knowledge)
Click "Share" (top right) → Select "Anyone with the link"
Click "Copy link" (bottom left) → Give this link to Claude
(Upgraded: Google AI Pro/Ultra gives 5x higher limits)
Inputs: url (required), name (required), topics (required), description (required), +3 more.
ask_questionA
Conversational Research Partner (NotebookLM • Gemini 2.5 • Session RAG)
No Active Notebook
Visit https://notebooklm.google to create a notebook and get a share link
Use add_notebook to add it to your library (explains how to get the link)
Use list_notebooks to show available sources
Use select_notebook to set one active
Auth tip: If login is required, use the prompt 'notebooklm.auth-setup' and then verify with the 'get_health' tool. If authentication later fails (e.g., expired cookies), use the prompt 'notebooklm.auth-repair'.
Tip: Tell the user you can manage NotebookLM library and ask which notebook to use for the current task.
PROMPT STRUCTURING GUIDELINES
Before sending any question to NotebookLM, structure it to get a well-organized, evidence-based response.
Core rules:
Write the prompt in the user's language
Keep the user's original question wording intact
Never use decorative lines (===, ---) as they cause NotebookLM timeouts
Always include: thematic output format, citation format, completeness signal, and the [NOT FOUND] placeholder
How to structure: Pick the matching question type below and adapt its pattern to the user's question.
Question Type Patterns
1. Comparison (compare, vs, difference, similarities)
[user's question]
Organize the response by points of comparison. Cover all aspects discussed in the documents.
For each point:
1. How each element addresses it, with direct quotes ("text" [Source: document])
2. Similarities and differences, with textual evidence
Cross-references: highlight where documents agree or contradict each other.
If information is not found: [NOT FOUND IN DOCUMENTS]2. List / Identification (list, identify, which, what are the)
[user's question]
Organize the response by thematic topics. Cover all aspects discussed in the documents.
For each topic:
- TOPIC: [identifying title]
- DESCRIPTION: [synthesis with context, connecting information across documents]
- EVIDENCE: "direct quote" [Source: document]
If the same item appears in multiple documents, show all occurrences and any discrepancies.
If information is not found: [NOT FOUND IN DOCUMENTS]3. Analysis (analyze, examine, evaluate, assess)
[user's question]
Organize the response by thematic topics. Cover all aspects discussed in the documents.
For each topic:
- TOPIC: [identifying title]
- DESCRIPTION: [synthesis with context, connecting information across documents]
- EVIDENCE: "direct quote" [Source: document]
Cross-document connections: where different documents address the same topic, show evidence from each.
If information is not found: [NOT FOUND IN DOCUMENTS]4. Explanation (explain, why, how, what does it mean)
[user's question]
Answer based on what the documents explain. Cover all aspects discussed in the documents.
1. Core concept or answer, with supporting quotes ("text" [Source])
2. Examples or cases mentioned in the documents
3. Related concepts that the documents connect to this topic
4. Limitations or caveats noted in the documents
If information is not found: [NOT FOUND IN DOCUMENTS]5. Extraction (default for all other questions)
[user's question]
Organize the response by thematic topics. Cover all aspects discussed in the documents.
For each topic:
- TOPIC: [identifying title]
- DESCRIPTION: [synthesis with context, connecting information across documents]
- EVIDENCE: "direct quote" [Source: document]
If a topic appears in multiple documents, show evidence from each.
If information is not found: [NOT FOUND IN DOCUMENTS]Language Adaptation
Translate the entire prompt to the user's language. Examples:
"Organize the response by thematic topics" → "Organizza la risposta per argomenti tematici"
"Cover all aspects" → "Cerca di coprire tutti gli aspetti trattati nei documenti"
"TOPIC/DESCRIPTION/EVIDENCE" → "ARGOMENTO/DESCRIZIONE/EVIDENZE"
"Source:" → "Fonte:"
"[NOT FOUND IN DOCUMENTS]" → "[NON PRESENTE NEI DOCUMENTI]"
Response Handling (for Claude, not NotebookLM)
After receiving NotebookLM's answer, present it faithfully to the user WITHOUT adding external knowledge or "improvements".
Inputs: question (required), session_id, notebook_id, notebook_url, +2 more.
cleanup_dataA
ULTRATHINK Deep Cleanup - Scans entire system for ALL NotebookLM MCP data files across 8 categories. Always runs in deep mode, shows categorized preview before deletion.
⚠️ CRITICAL: Close ALL Chrome/Chromium instances BEFORE running this tool! Open browsers can prevent cleanup and cause issues.
Categories scanned:
Legacy Installation (notebooklm-mcp-nodejs) - Old paths with -nodejs suffix
Current Installation (notebooklm-mcp) - Active data, browser profiles, library
NPM/NPX Cache - Cached installations from npx
Claude CLI MCP Logs - MCP server logs from Claude CLI
Temporary Backups - Backup directories in system temp
Claude Projects Cache - Project-specific cache (optional)
Editor Logs (Cursor/VSCode) - MCP logs from code editors (optional)
Trash Files - Deleted notebooklm files in system trash (optional)
Works cross-platform (Linux, Windows, macOS). Safe by design: shows detailed preview before deletion, requires explicit confirmation.
LIBRARY PRESERVATION: Set preserve_library=true to keep your notebook library.json file while cleaning everything else.
RECOMMENDED WORKFLOW for fresh start:
Ask user to close ALL Chrome/Chromium instances
Run cleanup_data(confirm=false, preserve_library=true) to preview
Run cleanup_data(confirm=true, preserve_library=true) to execute
Run setup_auth or re_auth for fresh browser session
Use cases: Clean reinstall, troubleshooting auth issues, removing all traces before uninstall, cleaning old browser sessions and installation data.
Inputs: confirm (required), preserve_library.
close_sessionA
Close a specific session by session ID. Ask before closing if the user might still need it.
Inputs: session_id (required).
get_healthA
Get server health status including authentication state, active sessions, and configuration. Use this to verify the server is ready before starting research workflows.
If authenticated=false and having persistent issues: Consider running cleanup_data(preserve_library=true) + setup_auth for fresh start with clean browser session.
Inputs: no named parameters.
get_library_statsA
Get statistics about your notebook library (total notebooks, usage, etc.)
Inputs: no named parameters.
get_notebookA
Get detailed information about a specific notebook by ID
Inputs: id (required).
list_notebooksA
List all library notebooks with metadata (name, topics, use cases, URL). Use this to present options, then ask which notebook to use for the task.
Inputs: no named parameters.
list_sessionsA
List all active sessions with stats (age, message count, last activity). Use to continue the most relevant session instead of starting from scratch.
Inputs: no named parameters.
re_authA
Switch to a different Google account or re-authenticate. Use this when:
NotebookLM rate limit is reached (50 queries/day for free accounts)
You want to switch to a different Google account
Authentication is broken and needs a fresh start
This will:
Close all active browser sessions
Delete all saved authentication data (cookies, Chrome profile)
Open browser for fresh Google login
After completion, use 'get_health' to verify authentication.
TROUBLESHOOTING for persistent auth issues: If re_auth fails repeatedly:
Ask user to close ALL Chrome/Chromium instances
Run cleanup_data(confirm=false, preserve_library=true) to preview old files
Run cleanup_data(confirm=true, preserve_library=true) to clean everything except library
Run re_auth again for completely fresh start This removes old installation data and browser sessions that can cause conflicts.
Inputs: show_browser, browser_options.
remove_notebookA
Dangerous — requires explicit user confirmation.
Confirmation Workflow
User requests removal ("Remove the React notebook")
Look up full name to confirm
Ask: "Remove '[notebook_name]' from your library? (Does not delete the actual NotebookLM notebook)"
Only on explicit "Yes" → call remove_notebook
Never remove without permission or based on assumptions.
Example: User: "Delete the old React notebook" You: "Remove 'React Best Practices' from your library?" User: "Yes" → call remove_notebook
Inputs: id (required).
reset_sessionA
Reset a session's chat history (keep same session ID). Use for a clean slate when the task changes; ask the user before resetting.
Inputs: session_id (required).
search_notebooksA
Search library by query (name, description, topics, tags). Use to propose relevant notebooks for the task and then ask which to use.
Inputs: query (required).
select_notebookA
Set a notebook as the active default (used when ask_question has no notebook_id).
When To Use
User switches context: "Let's work on React now"
User asks explicitly to activate a notebook
Obvious task change requires another notebook
Auto-Switching
Safe to auto-switch if the context is clear and you announce it: "Switching to React notebook for this task..."
If ambiguous, ask: "Switch to [notebook] for this task?"
Example
User: "Now let's build the React frontend" You: "Switching to React notebook..." (call select_notebook)
Inputs: id (required).
setup_authA
Google authentication for NotebookLM access - opens a browser window for manual login to your Google account. Returns immediately after opening the browser. You have up to 10 minutes to complete the login. Use 'get_health' tool afterwards to verify authentication was saved successfully. Use this for first-time authentication or when auto-login credentials are not available. For switching accounts or rate-limit workarounds, use 're_auth' tool instead.
TROUBLESHOOTING for persistent auth issues: If setup_auth fails or you encounter browser/session issues:
Ask user to close ALL Chrome/Chromium instances
Run cleanup_data(confirm=true, preserve_library=true) to clean old data
Run setup_auth again for fresh start This helps resolve conflicts from old browser sessions and installation data.
Inputs: show_browser, browser_options.
update_notebookA
Update notebook metadata based on user intent.
Pattern
Identify target notebook and fields (topics, description, use_cases, tags, url)
Propose the exact change back to the user
After explicit confirmation, call this tool
Examples
User: "React notebook also covers Next.js 14" You: "Add 'Next.js 14' to topics for React?" User: "Yes" → call update_notebook
User: "Include error handling in n8n description" You: "Update the n8n description to mention error handling?" User: "Yes" → call update_notebook
Tip: You may update multiple fields at once if requested.
Inputs: id (required), url, name, tags, +4 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 16 tools
Most tools have clearly distinct roles: notebook CRUD, search/stats, question asking, session lifecycle, and auth/maintenance are separated cleanly. The only notable overlap is setup_auth vs re_auth, though their descriptions do differentiate use cases.
Tool names consistently follow a snake_case verb_noun pattern: list_notebooks, get_notebook, add_notebook, update_notebook, remove_notebook, search_notebooks, close_session, reset_session. Even the auth tools (setup_auth, re_auth, get_health) and cleanup_data fit the same predictable convention.
At 16 tools, the surface is slightly above the ideal range but each tool maps to a real need: notebook library management, question answering, session lifecycle, and authentication/support. The auth/maintenance cluster adds weight, but it is coherent with the server's operational scope.
The notebook lifecycle is well covered with list/get/add/update/remove/search, plus select, ask_question, and library stats. Minor gaps exist: there is no source-level management and no way to create a brand-new NotebookLM notebook from within the tool set, which are workable limitations.
Maintenance
Related MCP Connectors
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
The CustomGPT.ai MCP server is a fully managed, RAG-powered endpoint that connects large language models with private knowledge bases and external data sources. It provides tools for retrieval-augmented generation queries (send_message), data ingestion (upload_file), and source listing, enabling AI agents to query private documents like PDFs with high accuracy and real-time citations.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Shared memory MCP server for Claude Code, Codex, Gemini CLI and Cursor. Cited, editable.
Related MCP Servers
- AlicenseBqualityDmaintenanceA BM25-based MCP server that enables document search and retrieval across structured domains of knowledge content, allowing Claude to search and reference documentation when answering questions.41MIT
- AlicenseCqualityDmaintenanceAn MCP server that enables persistent memory, structured thinking sessions, and project-based knowledge management for Claude. It includes specialized coding tools for package discovery and reinvention prevention by validating code against existing libraries and APIs.173MIT
- AlicenseAqualityDmaintenanceAn MCP server that automatically enhances user prompts by applying advanced engineering techniques like chain-of-thought and few-shot reasoning based on identified intent. It optimizes technique selection through local learning and integrates directly into Claude sessions to improve output quality without additional API costs.6MIT
- AlicenseNot gradedqualityFmaintenanceMCP server for Google NotebookLM that lets AI agents chat with notebooks, add sources, generate audio overviews, and extract citations via a real Chrome browser.MIT