Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GEMINI_API_KEY | No | Your Gemini API key (get from https://aistudio.google.com/apikey) | |
| NLMCP_AUTH_TOKEN | No | Token-based authentication token for MCP | |
| GEMINI_TIMEOUT_MS | No | API timeout in milliseconds | 30000 |
| NLMCP_AUTH_ENABLED | No | Enable MCP authentication | false |
| NLMCP_CERT_PINNING | No | Enable certificate pinning | true |
| NLMCP_AUDIT_ENABLED | No | Enable audit logging | true |
| NLMCP_SECRETS_BLOCK | No | Block operations on secret detection | false |
| GEMINI_DEFAULT_MODEL | No | Default Gemini model to use | gemini-2.5-flash |
| NLMCP_ENCRYPTION_KEY | No | Optional custom encryption key (base64-encoded 32 bytes) | |
| NLMCP_SECRETS_REDACT | No | Auto-redact detected secrets | true |
| NLMCP_SECRETS_SCANNING | No | Enable secrets scanning | true |
| NLMCP_USE_POST_QUANTUM | No | Enable post-quantum encryption | true |
| NLMCP_SESSION_INACTIVITY | No | Session inactivity timeout in seconds | 1800 |
| NLMCP_SESSION_MAX_LIFETIME | No | Maximum session lifetime in seconds | 28800 |
| GEMINI_DEEP_RESEARCH_ENABLED | No | Enable Gemini Deep Research feature | true |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
| logging | {} |
| prompts | {} |
| resources | {} |
| completions | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ask_question | NotebookLM Research (Browser-Based • NO API KEY REQUIRED)
No Active Notebook
Tip: Tell the user you can manage NotebookLM library and ask which notebook to use for the current task. |
| add_notebook | PERMISSION REQUIRED — Only when user explicitly asks to add a notebook. Conversation Workflow (Mandatory)When the user says: "I have a NotebookLM with X"
Rules
ExampleUser: "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 LinkVisit https://notebooklm.google/ → Login (free: 100 notebooks, 50 sources each, 500k words, 50 daily queries)
(Upgraded: Google AI Pro/Ultra gives 5x higher limits) |
| list_notebooks | 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. |
| get_notebook | Get detailed information about a specific notebook by ID |
| select_notebook | Set a notebook as the active default (used when ask_question has no notebook_id). When To Use
Auto-Switching
ExampleUser: "Now let's build the React frontend" You: "Switching to React notebook..." (call select_notebook) |
| update_notebook | Update notebook metadata based on user intent. Pattern
Examples
Tip: You may update multiple fields at once if requested. |
| remove_notebook | Dangerous — requires explicit user confirmation. Confirmation Workflow
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 |
| search_notebooks | Search library by query (name, description, topics, tags). Use to propose relevant notebooks for the task and then ask which to use. |
| create_notebook | Create a new NotebookLM notebook with sources programmatically. What This Tool Does
Supported Source Types
Example UsageCreate a notebook from API documentation: {
"name": "React Docs",
"sources": [
{ "type": "url", "value": "https://react.dev/reference/react" }
]
} Create a notebook with multiple sources: {
"name": "Security Research",
"sources": [
{ "type": "url", "value": "https://owasp.org/Top10" },
{ "type": "file", "value": "/path/to/security-report.pdf" },
{ "type": "text", "value": "Custom notes...", "title": "My Notes" }
],
"description": "Security best practices and research",
"topics": ["security", "owasp", "best-practices"]
} NotebookLM Limits (Free Tier)
Notes
|
| sync_library | Sync your local library with actual NotebookLM notebooks. What This Tool Does
When To Use
OutputReturns a sync report with:
Example Usage{ "auto_fix": false } With auto-fix to remove stale entries: { "auto_fix": true } |
| list_sources | List all sources in a NotebookLM notebook. ReturnsArray of sources with:
Example{ "notebook_id": "my-notebook" } Or with direct URL: { "notebook_url": "https://notebooklm.google.com/notebook/xxx" } |
| add_source | Add a source to an existing NotebookLM notebook. Source Types
Example{
"notebook_id": "my-notebook",
"source": {
"type": "url",
"value": "https://docs.example.com/api"
}
} |
| remove_source | Remove a source from a NotebookLM notebook. Usage
Example{
"notebook_id": "my-notebook",
"source_id": "source-0"
} |
| batch_create_notebooks | Create multiple NotebookLM notebooks in one operation. What This Tool Does
Example Usage{
"notebooks": [
{
"name": "React Documentation",
"sources": [
{ "type": "url", "value": "https://react.dev/reference" }
],
"topics": ["react", "frontend"]
},
{
"name": "Node.js API",
"sources": [
{ "type": "url", "value": "https://nodejs.org/api/" }
],
"topics": ["nodejs", "backend"]
}
],
"stop_on_error": false
} Limits
ReturnsSummary with:
|
| generate_audio_overview | Generate an AI-powered audio overview (podcast-style) for a notebook. What This Tool Does
Requirements
Example{ "notebook_id": "my-research" } |
| get_audio_status | Check the audio overview generation status for a notebook. Returns
Example{ "notebook_id": "my-research" } |
| download_audio | Download the generated audio overview file. Requirements
OutputDownloads to specified path or ~/notebooklm-audio-{timestamp}.mp3 Example{
"notebook_id": "my-research",
"output_path": "/path/to/save/podcast.mp3"
} |
| list_sessions | List all active sessions with stats (age, message count, last activity). Use to continue the most relevant session instead of starting from scratch. |
| close_session | Close a specific session by session ID. Ask before closing if the user might still need it. |
| reset_session | Reset a session's chat history (keep same session ID). Use for a clean slate when the task changes; ask the user before resetting. |
| get_health | Get server health status including authentication state, active sessions, and configuration. Use this to verify the server is ready before starting research workflows. Deep Check Mode (v2026.1.1)
Set If authenticated=false and having persistent issues: Consider running cleanup_data(preserve_library=true) + setup_auth for fresh start with clean browser session. |
| setup_auth | 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:
|
| re_auth | Switch to a different Google account or re-authenticate. Use this when:
This will:
After completion, use 'get_health' to verify authentication. TROUBLESHOOTING for persistent auth issues: If re_auth fails repeatedly:
|
| cleanup_data | 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:
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:
Use cases: Clean reinstall, troubleshooting auth issues, removing all traces before uninstall, cleaning old browser sessions and installation data. |
| get_quota | Get current quota status including license tier, usage, and limits. Returns:
Quota Limits by Tier:
Use sync=true to fetch actual quota from Google's NotebookLM UI (requires browser). Without sync, returns locally tracked counts which may differ if you used NotebookLM directly in browser. Query counts reset daily at midnight. |
| generate_video_overview | Generate an AI-powered Video Overview for a notebook. What This Tool Does
Visual Styles
Formats
Requirements
Example{ "notebook_id": "my-research", "style": "documentary", "format": "brief" } |
| get_video_status | Check the Video Overview generation status for a notebook. Returns
Example{ "notebook_id": "my-research" } |
| generate_data_table | Generate a structured Data Table from notebook sources. What This Tool Does
Requirements
Example{ "notebook_id": "my-research" } |
| get_data_table | Extract the generated Data Table content from a notebook. What This Tool Does
Returns
Requirements
Example{ "notebook_id": "my-research" } |
| get_query_history | Retrieve past NotebookLM queries and answers for reviewing research sessions. Use this tool to:
Returns query entries with question, answer, notebook, session, and timing info. |
| get_notebook_chat_history | Extract conversation history from a NotebookLM notebook's chat interface. This tool uses browser automation to navigate to a notebook and extract all Q&A pairs from the chat UI. This is useful for:
Context ManagementUse ExamplesQuick audit (preview only): { "notebook_id": "my-research", "preview_only": true } Export to file (avoids context overflow): { "notebook_id": "my-research", "output_file": "/tmp/chat-history.json" } Paginate through history: { "notebook_id": "my-research", "limit": 20, "offset": 0 }
{ "notebook_id": "my-research", "limit": 20, "offset": 20 } |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| notebooklm.auth-setup | Guide for initial Google authentication setup for NotebookLM access. Use this when the user needs to authenticate for the first time. |
| notebooklm.auth-repair | Troubleshooting guide for authentication issues. Use this when authentication fails or cookies have expired. |
| notebooklm.quick-start | Quick start guide for NotebookLM MCP. Explains how to add notebooks, query them, and manage sessions. |
| notebooklm.security-overview | Overview of security features in this hardened MCP server. Includes GDPR compliance, audit logging, and post-quantum encryption details. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Notebook Library | Complete notebook library with all available knowledge sources. Read this to discover what notebooks are available. ⚠️ If you think a notebook might help with the user's task, ASK THE USER FOR PERMISSION before consulting it: 'Should I consult the [notebook] for this task?' |