Brings Google NotebookLM into Claude Desktop and Claude Code.
NotebookLM MCP for Claude (Desktop & CLI)
A powerful MCP (Model Context Protocol) server that brings Google NotebookLM into Claude Desktop and Claude Code.
Features
- Research: List and create notebooks
- Content: Add URLs, text, and files as sources
- Generation: Create Podcasts, Videos, Slides, Mind Maps, Infographics, Quizzes, Flashcards, and Reports
- Natural Interaction: Chat directly with your sources using Claude's reasoning
Prerequisites
1. Install uv (Python Package Manager)
macOS / Linux
# Using curl
curl -LsSf https://astral.sh/uv/install.sh | sh
# Or with Homebrew (macOS)
brew install uv
Default install location: ~/.local/bin/uv
Windows
# Using PowerShell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# Or with Scoop
scoop install uv
# Or with winget
winget install --id=astral-sh.uv -e
Default install location: %USERPROFILE%\.local\bin\uv.exe
Verify installation:
uv --version
2. Clone and Install Dependencies
# Clone the repository
git clone https://github.com/alfredang/notebooklm-mcp.git
# Navigate to the project folder
cd notebooklm-mcp
# Install dependencies (includes notebooklm-py and fastmcp)
uv sync
This will:
- Create a
.venvvirtual environment - Install notebooklm-py (Python client for NotebookLM API)
- Install fastmcp (MCP server framework)
Note: These dependencies are required for both Claude Desktop and Claude Code.
Step 1: Authenticate with NotebookLM
NotebookLM uses browser-based authentication. You must login once to save your session cookies.
cd notebooklm-mcp
uv run notebooklm login
What happens:
- A browser window will open automatically
- Log in to your Google account
- Navigate to NotebookLM if not redirected automatically
- Wait until the terminal displays "Success"
- Close the browser
Verify authentication:
uv run python -c "
from notebooklm import NotebookLMClient
import asyncio
async def test():
client = await NotebookLMClient.from_storage()
async with client:
notebooks = await client.notebooks.list()
print(f'Authenticated! Found {len(notebooks)} notebooks.')
asyncio.run(test())
"
You should see: Authenticated! Found X notebooks.
Step 2: Test the MCP Server
Before configuring Claude, verify the server starts correctly:
cd notebooklm-mcp
uv run python server.py
Expected output:
Starting NotebookLM MCP server...
NotebookLM client initialized successfully
Starting MCP server 'NotebookLM' with transport 'stdio'
Press Ctrl+C (or Cmd+C on Mac) to stop the server after confirming it works.
Step 3: Setup for Claude Desktop
3.1 Find Your Paths
You'll need two paths for the configuration:
Find your uv path:
macOS / Linux
which uv
Example output: /Users/yourname/.local/bin/uv
Windows
where uv
Example output: C:\Users\yourname\.local\bin\uv.exe
Find your project path:
macOS / Linux
cd notebooklm-mcp && pwd
Example output: /Users/yourname/projects/notebooklm-mcp
Windows
cd notebooklm-mcp; (Get-Location).Path
Example output: C:\Users\yourname\projects\notebooklm-mcp
3.2 Open the Config File
From Claude Desktop (Recommended):
- Open Claude Desktop
- Go to Settings (gear icon) → Developer → Edit Config
- This opens
claude_desktop_config.jsonin your default editor
Or manually:
macOS path
~/Library/Application Support/Claude/claude_desktop_config.json
Windows path
%APPDATA%\Claude\claude_desktop_config.json
3.3 Add the MCP Server Configuration
Important: Replace
<UV_PATH>and `` with your actual paths from Step 3.1
macOS / Linux Configuration
{
"mcpServers": {
"notebooklm": {
"command": "<UV_PATH>",
"args": [
"--directory",
"",
"run",
"python",
"server.py"
]
}
}
}
Example with real paths:
{
"mcpServers": {
"notebooklm": {
"command": "/Users/yourname/.local/bin/uv",
"args": [
"--directory",
"/Users/yourname/projects/notebooklm-mcp",
"run",
"python",
"server.py"
]
}
}
}
Windows Configuration
{
"mcpServers": {
"notebo
Configuration
{
"mcpServers": {
"notebooklm": {
"command": "/Users/yourname/.local/bin/uv",
"args": [
"--directory",
"/Users/yourname/projects/notebooklm-mcp",
"run",
"python",
"server.py"
]
}
}
}