notebooklm-claude-integration
Provides tools to query Google NotebookLM notebooks, list notebooks, and authenticate, allowing AI agents to get citation-backed answers from NotebookLM.
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-claude-integrationAsk my research notebook: what are the main conclusions?"
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 Claude Integration
Complete integration of Google NotebookLM with Claude AI through both Claude Desktop (MCP) and Claude Code (Plugin).
Status: Production-ready ✅ | Built: Dec 2024 | Tested: Fully functional
What This Is
This project provides two complete integrations for using NotebookLM with Claude:
Claude Desktop - MCP Server for conversational interface
Claude Code CLI - Plugin for development workflow
Both allow you to query your NotebookLM notebooks directly from Claude, getting citation-backed answers from Gemini without leaving your workflow.
Related MCP server: NotebookLM MCP Server
Quick Start
Project plan lives at docs/PROJECT_PLAN.md with topic-specific items under docs/plans/.
CI details live at docs/CI.md.
Keep Pixi dependencies current (updates the lockfile, then installs from it):
pixi run pixi-syncNotebookLM end-to-end integration (uses your local Chrome auth):
NOTEBOOK_IDS=pytest-patterns \
QUESTION="Summarize the key sources in this notebook." \
pixi run notebooklm-integrationAI Agent Step-by-Step (Codex CLI)
Use this sequence when an agent needs to verify the NotebookLM integration end-to-end.
Install and enable the MCP server:
uv tool install notebooklm-mcp-server codex mcp add notebooklm-rpc notebooklm-mcpAuthenticate once (browser login) and persist cookies:
pixi run notebooklm-auth-rpcRun the full E2E test (downloads the skill from GitHub into a temp repo and queries a notebook):
pixi run codex-skill-e2eOptional overrides:
NOTEBOOK_URL="https://notebooklm.google.com/notebook/<id>" \ NOTEBOOK_NAME="My Test Notebook" \ NOTEBOOK_DESC="Notebook for testing Codex + NotebookLM." \ NOTEBOOK_ID="my-test-notebook" \ pixi run codex-skill-e2e
AI Agent Step-by-Step (Codex SDK)
Use this sequence when a Codex SDK agent must validate the setup and produce a confirmed response.
Ensure Codex CLI + MCP are set up (same as CLI steps above).
Run the SDK verification (temp workspace, streaming output):
SDK_ROOT=/tmp/codex-sdk-verify rm -rf "$SDK_ROOT" && mkdir -p "$SDK_ROOT" cd "$SDK_ROOT" cat <<'EOF' > package.json { "name": "codex-sdk-verify", "version": "0.1.0", "private": true, "type": "module", "scripts": { "run": "node run.mjs" }, "dependencies": { "@openai/codex-sdk": "^0.77.0" } } EOF cat <<'EOF' > run.mjs import { Codex } from "@openai/codex-sdk"; const prompt = [ "Use the notebooklm-patterns skill.", "List all notebooks, then ask each notebook (via notebook_id) this question:", "'How can we improve the Codex implementation in this repo?'.", "Aggregate responses labeled by notebook name and include citations.", "If any notebook_query times out, retry once. If it still times out, record a timeout for that notebook and continue.", ].join(" "); const codex = new Codex(); const thread = codex.startThread({ workingDirectory: "/tmp/codex-skill-verify", sandboxMode: "read-only", approvalPolicy: "never", }); const { events } = await thread.runStreamed(prompt); for await (const event of events) { if (event.type === "item.completed" && event.item?.type === "agent_message") { console.log(event.item.text); } if (event.type === "turn.failed") { console.error("Codex SDK turn failed:", event.error?.message ?? event.error); } } EOF npm install npm run run
For Claude Code (Plugin)
# 1. Ensure NotebookLM MCP server is configured
uv tool install notebooklm-mcp-server
claude mcp add notebooklm-rpc -- notebooklm-mcp
# 2. Add the plugin marketplace from GitHub
claude plugin marketplace add ray-manaloto/notebooklm-claude-integration
# 3. Install the plugin (project scope)
claude plugin install notebooklm@notebooklm-plugin --scope project
# 4. Verify installation
claude plugin marketplace list # Should show: notebooklm-plugin
claude plugin list # Should show: notebooklm
# 5. Restart Claude Code, then:
/nlm auth rpc # First-time authentication
/nlm list # List notebooks
/nlm ask "Your question" # Query the notebookFor local development (if you cloned this repo):
claude plugin marketplace add .For Claude Desktop (MCP)
npm install -g notebooklm-mcpAlternate NotebookLM MCP (HTTP/RPC, jacob-bd)
This repo also supports the HTTP/RPC-based MCP server from jacob-bd/notebooklm-mcp, which exposes additional tools (notebook creation, Drive sync, Studio artifacts).
Install + auth:
uv tool install notebooklm-mcp-server
GOOGLE_ACCOUNT=ray.manaloto@gmail.com pixi run notebooklm-auth-rpcPixi task (recommended for repeatable runs):
pixi run notebooklm-auth-rpcOverride account:
GOOGLE_ACCOUNT=your@email pixi run notebooklm-auth-rpcRegister the MCP server:
codex mcp add notebooklm-rpc -- notebooklm-mcpNotes:
This server uses cookie extraction; persist cookies with
save_auth_tokens.Tool names include
notebook_list,notebook_query, andsource_sync_drive.Use
notebooklm-patternsfor RPC-first guidance.Override the account used for cookie extraction with
GOOGLE_ACCOUNT=your@email.
Recommended Setup (RPC-first)
Use notebooklm-rpc as the default server for full feature parity:
notebooklm-rpc(expanded toolset, Drive sync, Studio artifacts)
If auth fails, re-run pixi run notebooklm-auth-rpc and retry.
When to Use This Repo vs. jacob-bd Only
You can use jacob-bd/notebooklm-mcp directly if you only need the RPC server tools.
This repo adds:
Codex/Claude CLI wiring (
/nlmcommands, skills, tool routing).Repeatable Pixi tasks for validation and multi-notebook queries.
Centralized MCP configuration and agent playbooks.
Add to claude_desktop_config.json:
{
"mcpServers": {
"notebooklm-rpc": {
"command": "notebooklm-mcp"
}
}
}Restart Claude Desktop, then:
Add my notebook: https://notebooklm.google.com/notebook/YOUR_IDRepository Structure
notebooklm-claude-integration/
├── plugins/ # Claude Code Plugin
│ └── notebooklm/
│ ├── .claude-plugin/
│ │ ├── plugin.json # Plugin manifest
│ │ └── marketplace.json # Marketplace manifest
│ ├── commands/
│ │ └── nlm.md # /nlm command (ask, add, list, select, auth)
│ ├── agents/
│ │ └── research-agent.md # Proactive research agent
│ ├── skills/
│ │ └── notebooklm-patterns/
│ │ └── SKILL.md # MCP tools reference & troubleshooting
│ └── README.md
│
├── auth-layer/ # Multi-backend authentication (NEW)
│ ├── src/
│ │ ├── backends/
│ │ │ ├── cdp.ts # Chrome DevTools Protocol
│ │ │ ├── keychain.ts # macOS Keychain storage
│ │ │ └── persistent.ts # Playwright persistent context
│ │ ├── auth-manager.ts # Main orchestrator
│ │ ├── cli.ts # nlm-auth CLI tool
│ │ └── types.ts # TypeScript types
│ ├── package.json
│ └── README.md
│
├── mcp-config/ # MCP configuration utilities
│ ├── servers.json # Unified MCP server config
│ ├── env.example # Environment variable template
│ └── README.md # Pixi-first install instructions
│
├── docs/ # Documentation
│ ├── CLAUDE_DESKTOP_SETUP.md
│ ├── CLAUDE_CODE_SETUP.md
│ ├── API_REFERENCE.md
│ └── TROUBLESHOOTING.md
│
├── examples/ # Usage examples
│
└── tests/ # Test suiteCodex Skill E2E Test
Use the Pixi task to download the skill from GitHub into a temp repo, load it, and run an end-to-end NotebookLM query through Codex CLI.
Prereqs:
codexCLI installedNotebookLM MCP server added:
codex mcp add notebooklm-rpc notebooklm-mcpNotebookLM authentication completed at least once
Run:
pixi run codex-skill-e2eOptional overrides:
NOTEBOOK_URL="https://notebooklm.google.com/notebook/<id>" \
NOTEBOOK_NAME="My Test Notebook" \
NOTEBOOK_DESC="Notebook for testing Codex + NotebookLM." \
NOTEBOOK_ID="my-test-notebook" \
pixi run codex-skill-e2eValidation checklist (expected results):
RPC auth is valid (cookies persisted via
save_auth_tokens)The target notebook exists in
notebook_listA response is returned with citations
See docs/CODEX_PLAYBOOK.md for a full Codex CLI/SDK validation runbook.
Recommended validation run:
pixi run codex-validate-setupCodex Improvement Notes
Use
notebook_idfor multi-notebook queries to avoid shared state.Retry a timed-out
notebook_queryonce, then record a timeout and continue.
Codex Multi-Notebook Query
Run a single question across all notebooks and aggregate results (uses notebook_id to avoid shared state conflicts):
pixi run codex-ask-allOptional override:
QUESTION="What are the key risks in this architecture?" pixi run codex-ask-allRPC Auth Refresh
If RPC auth expires, refresh cookies:
pixi run notebooklm-auth-rpcPixi RPC Task Runner
All NotebookLM MCP tools are available as pixi run nlm-* tasks (1:1 mapping).
See docs/API_REFERENCE.md for the full task list and argument conventions.
Use the notebooklm-rpc server after the file-mode auth:
NOTEBOOK_IDS=pytest-patterns \
QUESTION="Summarize the key sources in this notebook." \
pixi run codex-ask-all-rpcFilter by notebook IDs (comma-separated):
NOTEBOOK_IDS=pytest-patterns \
QUESTION="Provide modern best practices for integration tests without mocks." \
pixi run codex-ask-allValidation checklist (expected results):
Each notebook returns a labeled section
Citations are included when NotebookLM provides them
Timeouts are retried once and reported
Repo Hygiene (Pixi-Only)
Install the pre-commit hook to block bash scripts and non-Pixi commands:
pixi run hooks-installRun locally on demand:
pixi run hooks-runCodex Multi-Notebook Query (Subagent-aware)
If Codex supports subagents or task parallelism, this script asks a subagent per notebook; otherwise it falls back to sequential queries:
pixi run codex-ask-all-subagentsSDK example:
cd codex-sdk-test
QUESTION="Summarize auth flow changes." npm run test:notebooklm-ask-allAuth Bootstrap (Recommended for Multi-Process)
Run the auth flow once, then fan out workers that reuse the cookie file:
pixi run notebooklm-auth-rpcPlugin Commands
Command | Description |
| Ask a question to a notebook by ID |
| List all notebooks |
| Create a new notebook |
| Save RPC auth cookies |
Features
Claude Code Plugin
✅
/nlmcommand with subcommands✅ Research agent with automatic follow-up questions
✅ Library management (add, list, select, search)
✅ Uses existing NotebookLM MCP server
✅ Citation-backed answers from Gemini
✅ Troubleshooting skill with MCP tools reference
Claude Desktop (MCP)
✅ Natural language notebook queries
✅ Automatic notebook discovery
✅ Citation-backed answers
✅ Multi-notebook support
✅ Persistent authentication
Architecture
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Claude │────────>│ Plugin │────────>│ NotebookLM │
│ Code CLI │ │ Commands │ │ MCP Server │
└─────────────┘ └──────────────┘ └─────────────┘
│ │
│ v
│ ┌─────────────┐
│ │ Auth Helper │
v │ (cookies) │
┌──────────────┐ └─────────────┘
│ MCP Tools │ │
│ - notebook_list│ v
│ - notebook_query│ ┌─────────────┐
│ - notebook_add_url│ │ NotebookLM │
│ - research_start│ │ (Gemini) │
│ - studio_status│ └─────────────┘
└──────────────┘The plugin uses the NotebookLM MCP server which handles:
Browser automation via Playwright
Google authentication
Notebook library management
Session handling
Use Cases
Quick Research:
/nlm ask "How do I implement OAuth2 in FastAPI?"
# Get instant answer with citations from your docsAdd Documentation:
/nlm source add-url <notebook_id> <url>
# Adds a URL source to a notebookDeep Research (via agent):
"Research authentication patterns from my documentation"
# research-agent activates, asks follow-up questions, synthesizes answerRequirements
For Claude Code Plugin:
Claude Code CLI
NotebookLM MCP server (
notebooklm-mcp-server)Google Chrome browser (for auth)
Google account with NotebookLM access
For Claude Desktop:
Claude Desktop
notebooklm-mcppackage
Installation Options
Project Scope (Recommended)
claude plugin install notebooklm@notebooklm-plugin --scope projectUser Scope (All Projects)
claude plugin install notebooklm@notebooklm-plugin --scope userLocal Scope (Gitignored)
claude plugin install notebooklm@notebooklm-plugin --scope localAuthentication Options
The plugin supports multiple authentication backends (tried in priority order):
Backend | Platform | Description |
CDP | All | Connect to existing Chrome session (best UX) |
Keychain | macOS | Stored cookies in system keychain |
Persistent | All | Playwright browser profile |
Manual | All | Interactive browser login (fallback) |
RPC Server (Default: File Mode)
For the HTTP/RPC server, default to file-mode auth:
notebooklm-mcp-auth --fileThis writes cookies to ~/.notebooklm-mcp/auth.json for RPC use.
Reuse on future runs: if ~/.notebooklm-mcp/auth.json exists, you can skip login.
If auth breaks: re-run notebooklm-mcp-auth --file to refresh cookies.
Validate auth without re-login:
pixi run notebooklm-auth-check-rpcRecommended: Chrome Remote Debugging (No Popups!)
# 1. Start Chrome with remote debugging
open -a "Google Chrome" --args --remote-debugging-port=9222 # macOS
# 2. Login to NotebookLM in Chrome (one-time)
# Navigate to https://notebooklm.google.com and login with Google
# 3. Now queries use your existing session - no popups!
/nlm ask "How do I implement OAuth?"Tip: Add to ~/.zshrc or ~/.bashrc:
alias chrome-debug='open -a "Google Chrome" --args --remote-debugging-port=9222'Troubleshooting
Not Authenticated
# Run notebooklm-mcp-auth and complete login
notebooklm-mcp-auth
# Save RPC auth cookies
/nlm auth rpcRate Limited (50 queries/day free tier)
Wait for daily reset, or
Re-run
notebooklm-mcp-authwith a different Google account
Wrong Notebook
/nlm list # See all notebooks
# Re-run /nlm ask with the correct notebook_idSee TROUBLESHOOTING.md for complete guide.
Documentation
Claude Code Setup - Plugin installation guide
Claude Desktop Setup - MCP setup guide
API Reference - All commands and options
Troubleshooting - Common issues and solutions
Security & Privacy
✅ All data stored locally by MCP server
✅ No data sent to third parties
✅ Browser session managed by MCP server
✅ Credentials never logged
⚠️ Consider dedicated Google account
⚠️ NotebookLM terms of service apply
License
MIT License - see LICENSE
Related Projects
NotebookLM MCP Server - MCP server implementation
Claude Code - Official Claude Code CLI
wshobson/agents - Plugin patterns reference
Built with ❤️ for efficient development workflows
Last Updated: December 2024
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
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/Muraty6242/notebooklm-claude-integration'
If you have feedback or need assistance with the MCP directory API, please join our Discord server