4.1 NotebookLM MCP Integration
Available since: Claude Code v2.1+ with MCP support
What it does: Query your NotebookLM notebooks directly from Claude Code, maintaining conversation context across multiple questions.
Installation
# Install NotebookLM MCP server
claude mcp add notebooklm npx notebooklm-mcp@latest
# Configure profile (optional, add to ~/.zshrc or ~/.bashrc)
export NOTEBOOKLM_PROFILE=standard # minimal (5 tools) | standard (10 tools) | full (16 tools)
# Verify installation
claude mcp list
# Should show: notebooklm: npx notebooklm-mcp@latest - ✓ ConnectedProfile comparison:
| Profile | Tools | Use Case |
|---|---|---|
minimal | 5 | Basic queries, token-constrained environments |
standard | 10 | Recommended - Queries + library management |
full | 16 | Advanced (browser control, cleanup, re-auth) |
Detailed tool breakdown:
| Tool | minimal | standard | full | Description |
|---|---|---|---|---|
ask_question | ✅ | ✅ | ✅ | Query notebooks with conversation context |
add_notebook | ✅ | ✅ | ✅ | Add notebook to library |
list_notebooks | ✅ | ✅ | ✅ | List all notebooks in library |
get_notebook | ✅ | ✅ | ✅ | Get notebook details by ID |
setup_auth | ✅ | ✅ | ✅ | Initial Google authentication |
select_notebook | ❌ | ✅ | ✅ | Set active notebook |
update_notebook | ❌ | ✅ | ✅ | Update notebook metadata |
search_notebooks | ❌ | ✅ | ✅ | Search library by keywords |
list_sessions | ❌ | ✅ | ✅ | List active conversation sessions |
get_health | ❌ | ✅ | ✅ | Check auth status and config |
remove_notebook | ❌ | ❌ | ✅ | Remove notebook from library |
re_auth | ❌ | ❌ | ✅ | Switch Google account |
cleanup_data | ❌ | ❌ | ✅ | Clear browser data and sessions |
get_browser_state | ❌ | ❌ | ✅ | Manual browser state inspection |
execute_browser_action | ❌ | ❌ | ✅ | Manual browser control |
wait_for_element | ❌ | ❌ | ✅ | Manual browser element waiting |
Authentication
Important: NotebookLM MCP uses isolated Chrome profile, separate from your main browser session.
# In Claude Code, first-time setup:
"Log me in to NotebookLM"
# Browser opens automatically for Google authentication
# Select your Google account (pro tip: use authuser=1 for secondary accounts)
# Session persists in: ~/Library/Application Support/notebooklm-mcp/Multi-account setup:
If you have multiple Google accounts and want to use a specific one:
- Pre-configure in browser: Open
https://notebooklm.google.com/?authuser=1(change number for different accounts) - Sign in with desired account
- Then run authentication in Claude Code
The MCP stores credentials in an isolated Chrome profile, so your main browser cookies don't affect it.
Verify authentication:
"Check NotebookLM health status"
# Expected output after successful auth:
# {
# "authenticated": true,
# "account": "your-email@gmail.com",
# "notebooks": <count>
# }Building Your Notebook Library
Unlike the web UI, the MCP works with share links rather than auto-syncing all notebooks.
Add a notebook:
# 1. In NotebookLM web UI:
# - Open notebook
# - Click "Share" → "Anyone with the link"
# - Copy share URL
# 2. In Claude Code:
"Add notebook: https://notebooklm.google.com/notebook/abc123...
Name: LLM Engineer Handbook
Description: Comprehensive guide on LLM engineering practices
Topics: LLM, fine-tuning, RAG, deployment"
# Minimal metadata required - the MCP will analyze content automaticallyList your library:
"List my NotebookLM notebooks"
# Shows all added notebooks with topics, use cases, last usedSearch library:
"Search NotebookLM library for: React patterns"
# Returns relevant notebooks based on name, description, topicsQuerying Notebooks
Direct query (specify notebook):
"In LLM Engineer Handbook, how do I implement RAG with embeddings?"
# Claude will:
# 1. Select the specified notebook
# 2. Query NotebookLM with your question
# 3. Return answer with precise citations
# 4. Maintain session_id for follow-up questionsContextual conversation:
# First question
"In Building Large-Scale Web Apps notebook, what are the caching strategies?"
# Follow-up (uses same session_id)
"How would that apply to a Next.js application?"
# Another follow-up
"What about Redis vs in-memory cache trade-offs?"
# Session context is maintained across all queriesSelect active notebook:
"Select LLM Engineer Handbook as active notebook"
# Now you can ask without specifying notebook each time
"What are the fine-tuning techniques?"
"How does DPO compare to RLHF?"Advanced Workflows
Multi-notebook research:
# Compare insights across notebooks
"What does LLM Engineer Handbook say about embeddings?"
"Now check Playwright Automation guide for testing strategies"
"How can I combine these approaches?"Update notebook metadata:
# As you use notebooks, refine their metadata
"Update LLM Engineer Handbook:
- Add topic: prompt engineering
- Add use case: When designing LLM architectures"
# This helps Claude auto-select the right notebook for future queriesSession management:
"List active NotebookLM sessions"
# Shows all conversation sessions with message counts, age
# Useful to resume previous research threadsComparison: MCP vs Web UI
| Feature | MCP Integration | Web UI |
|---|---|---|
| Access from Claude Code | ✅ Direct | ❌ Manual copy-paste |
| Conversation context | ✅ Persistent session_id | ⚠️ Web chat only |
| Multi-notebook queries | ✅ Switch seamlessly | ⚠️ Manual navigation |
| Audio generation | ❌ Use web UI | ✅ Native |
| Share notebooks | ✅ Via library | ✅ Native |
| Query speed | ✅ Instant | ⚠️ Browser navigation |
Best practice: Use MCP for queries during development, web UI for audio generation during onboarding.
Troubleshooting
| Issue | Solution |
|---|---|
notebooklm: not connected | Run source ~/.zshrc (or restart terminal), then restart Claude Code |
| Empty notebook list after auth | You're authenticated but haven't added notebooks yet - use share links workflow |
| Wrong Google account | Clear auth: delete ~/Library/Application Support/notebooklm-mcp/chrome_profile/, re-authenticate |
| "Tool not found" | Check NOTEBOOKLM_PROFILE variable is set correctly |
| Rate limit errors | Wait 24h or re-authenticate with different Google account |
Check MCP configuration:
# View your .claude.json MCP config
cat ~/.claude.json | jq '.mcpServers.notebooklm'
# Should show:
# {
# "type": "stdio",
# "command": "npx",
# "args": ["notebooklm-mcp@latest"],
# "env": {}
# }Example: Onboarding Workflow
# Day 1: Setup
"Log me in to NotebookLM"