NotebookLM MCP
Provides tools to interact with Google NotebookLM, allowing AI agents to manage notebooks, add sources, query notebook content, and generate audio overviews through browser automation.
Click on "Install 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 MCPCreate a new notebook for machine learning notes"
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 Server
Version 0.5 Alpha | Basic functionality implemented, requires further testing
A Python-based Model Context Protocol (MCP) server that bridges AI agents with Google NotebookLM through browser automation. This allows MCP-compatible clients like Claude Desktop to interact with NotebookLM's powerful RAG (Retrieval-Augmented Generation) capabilities.
Warning: This is alpha software. It has basic functionality but needs further testing. Use at your own risk. Automating Google services may violate their Terms of Service.
Features
Notebook Management: Create notebooks, list existing notebooks
Source Management: Add sources (URLs, text content), list sources in notebooks
Query Interface: Ask questions against notebook sources with citation support
Audio Overview: Generate podcast-style audio discussions from notebook content
Session Persistence: Human-in-the-loop authentication with persistent Chrome profile
Stealth Automation: Uses Patchright for bot detection evasion
Related MCP server: NotebookLM MCP Server
Architecture
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ MCP Client │────▶│ NotebookLM MCP │────▶│ Google │
│ (Claude, etc) │ │ Server │ │ NotebookLM │
└─────────────────┘ └──────────────────┘ └─────────────────┘
│
▼
┌──────────────┐
│ Patchright │
│ (Browser) │
└──────────────┘The server uses:
FastMCP: For MCP protocol implementation
Patchright: Stealth browser automation (Playwright fork with anti-detection)
Persistent Chrome Profile: For session management without repeated logins
Prerequisites
Python 3.11 or higher
Google Chrome browser installed
A Google account with access to NotebookLM
uv package manager (recommended) or pip
Installation
Using uv (Recommended)
# Clone the repository
git clone https://github.com/your-org/notebooklm-mcp.git
cd notebooklm-mcp
# Install dependencies
uv sync
# Install Patchright browsers
uv run patchright install chromiumUsing pip
# Clone the repository
git clone https://github.com/your-org/notebooklm-mcp.git
cd notebooklm-mcp
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install package
pip install -e .
# Install Patchright browsers
patchright install chromiumConfiguration
The server stores configuration and session data in ~/.notebooklm-mcp/ by default:
~/.notebooklm-mcp/
├── config.toml # Optional configuration file
├── chrome_profile/ # Persistent browser profile (contains session)
└── logs/ # Log files (if configured)Configuration Options
Create ~/.notebooklm-mcp/config.toml to customize settings:
[server]
log_level = "INFO" # DEBUG, INFO, WARNING, ERROR
cache_enabled = true # Enable response caching
browser_headless = true # Run browser in headless mode
browser_timeout_ms = 30000 # Browser operation timeout
[browser]
page_pool_min = 1 # Minimum pages in pool
page_pool_max = 3 # Maximum pages in pool
idle_timeout = 300 # Close browser after idle (seconds)Usage
1. Authentication
Before using the server, you must authenticate with your Google account:
# Using uv
uv run notebooklm-mcp auth
# Or if installed via pip
notebooklm-mcp authThis opens a visible Chrome browser where you can:
Log in to your Google account
Complete any 2FA challenges
The browser closes automatically after successful authentication
Your session is saved to the Chrome profile directory for future use.
2. Verify Session
Check if your session is still valid:
uv run notebooklm-mcp verify3. Start the MCP Server
uv run notebooklm-mcp serveThe server runs using stdio transport for MCP communication.
4. Other CLI Commands
# Show status and configuration
uv run notebooklm-mcp status
# Clear saved session (requires re-authentication)
uv run notebooklm-mcp clearClaude Desktop Integration
Add the server to your Claude Desktop configuration:
Windows
Edit %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"notebooklm": {
"command": "uv",
"args": [
"--directory",
"C:\\path\\to\\notebooklm-mcp",
"run",
"notebooklm-mcp",
"serve"
]
}
}
}macOS/Linux
Edit ~/.config/claude/claude_desktop_config.json:
{
"mcpServers": {
"notebooklm": {
"command": "uv",
"args": [
"--directory",
"/path/to/notebooklm-mcp",
"run",
"notebooklm-mcp",
"serve"
]
}
}
}Available MCP Tools
Once connected, the following tools are available to MCP clients:
list_notebooks
List all notebooks in your NotebookLM account.
create_notebook
Create a new notebook with optional initial sources.
Parameters:
title(required),initial_sources(optional list of URLs)
add_source
Add a source to a notebook.
Parameters:
notebook_id,source_type(url, text, google_doc, google_slide),content,title(optional)
list_sources
List all sources in a notebook.
Parameters:
notebook_id
query_notebook
Ask a question against notebook sources.
Parameters:
notebook_id,query,use_chat_history(optional)
generate_audio_overview
Generate a podcast-style audio discussion.
Parameters:
notebook_id,custom_instructions(optional)
health_check
Check server and browser health status.
Running Workflows
Example: Create Notebook and Generate Audio
import asyncio
from patchright.async_api import async_playwright
async def create_notebook_workflow():
playwright = await async_playwright().start()
context = await playwright.chromium.launch_persistent_context(
user_data_dir="~/.notebooklm-mcp/chrome_profile",
headless=False,
channel="chrome",
)
page = context.pages[0] if context.pages else await context.new_page()
# Navigate to NotebookLM
await page.goto("https://notebooklm.google.com/")
# ... interact with NotebookLM
await context.close()
await playwright.stop()
asyncio.run(create_notebook_workflow())Using the MCP Tools Programmatically
When connected via MCP, you can invoke tools like:
User: Create a new notebook called "Research Notes" and add this URL as a source: https://example.com/article
Claude: I'll create the notebook and add the source for you.
[Calls create_notebook with title="Research Notes"]
[Calls add_source with the URL]
The notebook has been created with ID abc123 and the source is being processed.Security Considerations
Chrome Profile: Contains your Google session credentials. Keep
~/.notebooklm-mcp/chrome_profile/secure and never commit it to version control.Local Execution: The server is designed for local use. If deploying remotely, use secure tunnels (SSH) as MCP doesn't provide encryption.
Rate Limiting: Avoid rapid automated requests to prevent account flagging.
Known Limitations
No Official API: This uses browser automation as NotebookLM lacks a public API
DOM Dependency: May break if Google updates NotebookLM's interface
Session Expiry: Sessions may expire and require re-authentication
PDF Upload: Not yet implemented (URL and text sources work)
Alpha Status: Basic functionality works but edge cases need testing
Troubleshooting
"Authentication expired" error
Run uv run notebooklm-mcp auth to re-authenticate.
"net::ERR_NAME_NOT_RESOLVED" error
Clear the Chrome profile and re-authenticate:
uv run notebooklm-mcp clear
uv run notebooklm-mcp authBrowser not launching
Ensure Chrome is installed and Patchright browsers are set up:
uv run patchright install chromiumDevelopment
# Install dev dependencies
uv sync --all-extras
# Run tests
uv run pytest
# Run linter
uv run ruff check src/
# Format code
uv run ruff format src/License
MIT License - see LICENSE for details.
Disclaimer
This is an unofficial integration. NotebookLM is a trademark of Google. This project is not affiliated with, endorsed by, or sponsored by Google. Use of this software may violate Google's Terms of Service. Users assume all risks associated with using this software.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/kkaminsk/NotebookLM-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server