{"id":14765,"library":"notebooklm-mcp-server","title":"NotebookLM MCP Server","description":"The `notebooklm-mcp-server` package, currently at version 3.0.7, provides a robust Node.js-based server that enables AI agents to interact directly with Google's NotebookLM. Built with TypeScript and leveraging the Model Context Protocol (MCP), this server allows AI agents to securely read, search, and manage NotebookLM notebooks as if they were local files. This direct integration is designed to provide grounded context to AI models, significantly reducing hallucinations. It supports both global installation via npm and zero-configuration execution via npx, making it highly accessible for integration into various AI-augmented workflows. The project maintains an active release cadence, featuring an auto-update mechanism that ensures the server always runs the latest version with critical fixes and enhancements upon startup. Its core differentiation lies in offering a dedicated, protocol-driven solution for real-time context retrieval directly from NotebookLM for AI applications.","status":"active","version":"3.0.7","language":"javascript","source_language":"en","source_url":"https://github.com/moodRobotics/notebooklm-mcp-server","tags":["javascript","mcp","notebooklm","google","ai","server"],"install":[{"cmd":"npm install notebooklm-mcp-server","lang":"bash","label":"npm"},{"cmd":"yarn add notebooklm-mcp-server","lang":"bash","label":"yarn"},{"cmd":"pnpm add notebooklm-mcp-server","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"Primarily a CLI tool; `createServer` is for advanced programmatic integration. ESM is preferred for Node.js >=18.","wrong":"const { createServer } = require('notebooklm-mcp-server');","symbol":"createServer","correct":"import { createServer } from 'notebooklm-mcp-server';"},{"note":"Import `MCPConfig` as a type for configuration objects when using `createServer` programmatically.","wrong":"import { MCPConfig } from 'notebooklm-mcp-server';","symbol":"MCPConfig","correct":"import type { MCPConfig } from 'notebooklm-mcp-server';"},{"note":"The primary way to interact with the server is via the command-line interface using `npx` or a global installation. Direct programmatic import of the CLI entry point is not typical.","wrong":"node node_modules/notebooklm-mcp-server/dist/cli.js <command>","symbol":"CLI usage","correct":"npx notebooklm-mcp-server <command>"}],"quickstart":{"code":"import { Console } from 'console';\nimport { exec } from 'child_process';\n\nconst logger = new Console({ stdout: process.stdout, stderr: process.stderr });\n\nasync function setupAndStartServer() {\n  logger.log('1. Authenticating with Google NotebookLM...');\n  // This command will open a browser for Google login.\n  // It's a one-time setup to establish a persistent session.\n  // User needs to manually close the browser after successful login.\n  const authProcess = exec('npx notebooklm-mcp-server auth');\n  \n  authProcess.stdout?.on('data', (data) => logger.log(`Auth Output: ${data}`));\n  authProcess.stderr?.on('data', (data) => logger.error(`Auth Error: ${data}`));\n\n  await new Promise(resolve => {\n    authProcess.on('exit', (code) => {\n      if (code === 0) {\n        logger.log('Authentication command finished. Please ensure you logged in via the browser and closed it.');\n        resolve(null); // Resolve to proceed even if auth browser is still open momentarily\n      } else {\n        logger.error(`Authentication failed with code ${code}. Please try again.`);\n        process.exit(1);\n      }\n    });\n  });\n\n  logger.log('\\n2. Starting the NotebookLM MCP Server...');\n  // This command starts the server process.\n  // It will run until manually stopped (e.g., Ctrl+C in terminal where it's running).\n  const serverProcess = exec('npx notebooklm-mcp-server start');\n\n  serverProcess.stdout?.on('data', (data) => logger.log(`Server Output: ${data}`));\n  serverProcess.stderr?.on('data', (data) => logger.error(`Server Error: ${data}`));\n\n  logger.log('Server started in background. Check terminal output for status.');\n  logger.log('To stop the server, you would typically kill the process running `npx notebooklm-mcp-server start`.');\n  logger.log('Or if running in foreground in a dedicated terminal, press Ctrl+C.');\n}\n\nsetupAndStartServer().catch(console.error);\n","lang":"typescript","description":"Demonstrates the essential steps to authenticate with Google NotebookLM and then start the MCP server using npx."},"warnings":[{"fix":"After an auto-update notification, manually restart the server process to use the newly installed version.","message":"The server includes an auto-update feature. Upon startup, it checks for new versions and installs them automatically. A manual restart is required to apply the updates and ensure you're running the latest version.","severity":"gotcha","affected_versions":">=3.0.0"},{"fix":"Re-run the authentication command: `npx notebooklm-mcp-server auth`. A browser window will open for re-login. After successful login, close the browser.","message":"Authentication sessions with Google NotebookLM can expire. If your AI agent encounters authentication errors, it's typically due to an expired session.","severity":"gotcha","affected_versions":">=3.0.0"},{"fix":"Upgrade your Node.js installation to version 18.0.0 or newer. Use a version manager like `nvm` to easily switch Node.js versions (`nvm install 18 && nvm use 18`).","message":"The package requires Node.js version 18.0.0 or higher. Running it on older Node.js versions will result in execution errors.","severity":"breaking","affected_versions":">=3.0.0"}],"env_vars":null,"last_verified":"2026-04-19T00:00:00.000Z","next_check":"2026-07-18T00:00:00.000Z","problems":[{"fix":"Run `npx notebooklm-mcp-server auth` and follow the browser prompts to log in to your Google account again.","cause":"The cached Google authentication token has become invalid, often due to inactivity or a change in account security.","error":"Error: Auth: Session expired or invalid. Please re-authenticate."},{"fix":"Ensure your project uses ES Modules (add `\"type\": \"module\"` to `package.json`) or use dynamic `import()` for ESM-only dependencies. The primary intended usage is via `npx`, which handles module resolution.","cause":"Attempting to use CommonJS `require()` syntax to load a module that is explicitly an ES Module.","error":"Error [ERR_REQUIRE_ESM]: require() of ES module .../notebooklm-mcp-server/dist/cli.js from ... not supported."}],"ecosystem":"npm"}