Gemini Notebook MCP CLI: script NotebookLM from the terminal or an AI agent
Programmatic access to Gemini Notebook - via command-line interface (CLI), Model Context Protocol (MCP) server, and AI agent skills.
At a glance
- What is it?
- The notebooklm-mcp-cli package puts Gemini Notebook (formerly Google NotebookLM) behind a Typer-based command line and an MCP server, so agents like Claude and Gemini can create notebooks, add sources and generate audio. It is a beta tool aimed at developers, and its Enterprise support is explicitly experimental.
- Who is it for?
- Adopt it if you want NotebookLM operations inside an agent loop or a shell script and you are comfortable with a beta package that drives a consumer web UI. Do not adopt it if you need a supported Google API contract, if your workspace is Enterprise and cannot tolerate experimental paths, or if unattended automation against an undocumented endpoint is a risk you cannot take.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What problem notebooklm-mcp-cli solves, and for whom
Gemini Notebook has a web interface. There is no documented public API that the README points to for creating a notebook, adding a source, or generating an audio overview. The README describes the project as programmatic access to Gemini Notebook via a command-line interface or a Model Context Protocol server, and that phrasing is the whole pitch: take actions that normally require clicking around a browser and expose them as commands and as MCP tools.
The audience follows from that. You are a developer or a technical researcher who already uses Gemini Notebook and wants the same operations inside a script, a cron job, or an agent conversation. The README's own example is natural language: create a notebook about quantum computing and generate a podcast. That is an agent workflow, not a data pipeline. If you need a stable, versioned API with a support contract, this is not that, and the README does not claim it is.
The CLI and the MCP server are one package with two entry points
The repository layout shows a single Python package, src/notebooklm_tools, with two console scripts declared in pyproject.toml. The nlm command maps to notebooklm_tools.cli.main:cli_main and the notebooklm-mcp command maps to notebooklm_tools.mcp.server:main. So the CLI and the MCP server are not two projects glued together; they are two front doors onto the same code.
The dependency list tells you what the mechanism is under the hood. httpx with the socks extra handles HTTP, pydantic validates models, typer builds the command tree, rich formats terminal output, and fastmcp provides the MCP server layer. websocket-client is annotated in the file as being for CDP login, which is the strongest clue about how authentication works: the tool drives a browser session over the Chrome DevTools Protocol rather than asking you for an API key. That is consistent with the absence of any token or key in the documented setup commands.
The feature table in the README maps each capability to both surfaces, for example nlm notebook list alongside the notebook_list MCP tool, and nlm notebook query alongside notebook_query. The README notes that queries persist to the web UI, which means the tool is writing into your real notebook state, not a sandbox copy.
Installing notebooklm-mcp-cli and running a first notebook
The package is published on PyPI as notebooklm-mcp-cli, so installation is a normal pip install. The project requires Python 3.11 or newer according to pyproject.toml, and it ships a uv.lock file, so a uv-based workflow is also reasonable if that is your habit.
pip install notebooklm-mcp-cliAfter installation the nlm command should be on your path. The README's first examples are notebook listing and creation. Run the list command first, because it is the cheapest way to confirm that authentication succeeded and that you are looking at the right account.
nlm notebook list # List all notebooks
nlm notebook create "Research Project" # Create a notebookAdding a source is where the tool starts doing something you cannot do from a plain text editor. The README shows a URL source, and the feature table says URL, text, Drive and file sources are supported.
nlm source add <notebook> --url "https://..." # Add sourcesGenerating an audio overview requires an explicit confirmation flag in the README's example, which is a sensible guard on an operation that consumes real generation capacity. Downloading the result then needs the artifact id.
nlm audio create <notebook> --confirm # Generate podcast
nlm download audio <notebook> --id <artifact-id> # Download audio file
nlm download all <notebook> -d ./exports # Download every artifactFor agent use, the setup subcommand writes configuration for a named client. The README lists claude-code, claude-desktop, gemini, github-copilot, cursor, cline and antigravity, plus a json mode that prints a config block for anything else.
# Automatic setup — picks the right config for each tool
nlm setup add claude-code
nlm setup add claude-desktop
nlm setup add gemini
nlm setup add github-copilot
nlm setup add cursor
nlm setup add cline
nlm setup add antigravity
# Generate JSON config for any other tool
nlm setup add jsonThe README also mentions nlm --ai for AI-assistant documentation, and a doctor command appears in the demo section, which is the natural first stop when a setup step fails.
Where this tool breaks, and when it is the wrong choice
The README is candid about the biggest limitation: Gemini Notebook Enterprise support is experimental. It states that personal and consumer accounts are tested regularly, and that the documented notebook.cloud.google.com host has been live-verified with a project-qualified global deployment while other Enterprise host variants may require additional validation. Read that as a boundary. If your organisation runs Gemini Notebook through an Enterprise deployment with a host configuration that differs from the verified one, you may be the person doing the validation.
The second constraint is architectural and the README never frames it as a limitation. Because authentication runs through a browser session over CDP and the operations drive the consumer web interface, the tool is coupled to a UI that Google can change without notice. Nothing in the repository promises a stable wire contract. A beta classifier in pyproject.toml is honest labelling, not a guarantee.
The third is that a security release exists in the recent history: v0.11.2 is tagged as a security release. That is a good sign about responsiveness and a reminder to pin a version rather than track the latest tag blindly. If you are deploying this in an environment where a credential-bearing browser session on a shared machine is unacceptable, the login model itself is the blocker, not a bug you can work around.
How it compares with calling the Gemini CLI directly
The obvious alternative is Gemini CLI, Google's own terminal agent, which the README's own setup list includes as a target via nlm setup add gemini. The difference in approach is worth being precise about. Gemini CLI is an agent that talks to Gemini models; it does not know what a NotebookLM notebook is. This project is the opposite: it is a thin operational layer over one specific product, and it plugs into Gemini CLI as an MCP server so the agent gains notebook tools it otherwise lacks.
That means the two are not substitutes. If your goal is general code and shell assistance, Gemini CLI alone is the shorter path. If your goal is creating a notebook, attaching sources and producing an audio overview from inside an agent session, Gemini CLI has no native route to that and this MCP server is the adapter. The trade-off is dependency surface: you inherit a beta package, a browser-driven login and a UI-coupled transport in exchange for capabilities the base agent does not expose.
Maintenance cost, versioning and the MIT licence
The repository is not archived and the last push was on 2026-09-08, the same day as the v0.11.2 security release, with v0.11.1 and v0.11.0 landing the day before. Release cadence in that window was fast, which cuts both ways: fixes arrive quickly, and the surface you depend on can move between minor versions. Pin the version in your environment and read CHANGELOG.md before upgrading.
The package is MIT licensed, and pyproject.toml declares license = "MIT" with the LICENSE file at the repository root. That is permissive and unsurprising for a developer tool. It tells you nothing about Google's terms for Gemini Notebook itself, which govern the account and the content you put into it; the README does not address that relationship and this article cannot either. The README does note that the project is free and built in spare time with a donation link, which is a fair signal that support expectations should stay modest. There is a SECURITY.md at the root, so there is a stated channel for reporting issues.
Editorial conclusion
Adopt it if you want NotebookLM operations inside an agent loop or a shell script and you are comfortable with a beta package that drives a consumer web UI. Do not adopt it if you need a supported Google API contract, if your workspace is Enterprise and cannot tolerate experimental paths, or if unattended automation against an undocumented endpoint is a risk you cannot take. Before committing, confirm the login flow works on your account type and read SECURITY.md and the v0.11.2 security release notes.
Frequently asked questions
Can I use MCP with Gemini CLI?
Yes. The README lists nlm setup add gemini as one of the supported setup targets, alongside claude-code, claude-desktop, cursor, cline, github-copilot and antigravity. That command writes the MCP configuration for Gemini CLI so it can reach the notebooklm-mcp server.
How to install MCP servers in Gemini CLI?
For this server, install the package from PyPI and then run the setup subcommand for your client. The README gives nlm setup add gemini for Gemini CLI and nlm setup add json to print a config block for any other tool.
Does notebook LM have an MCP?
Not from Google as far as the README indicates. This project supplies one: it describes itself as programmatic access to Gemini Notebook via a CLI or an MCP server, and its MCP tools include notebook_list, notebook_create, source_add and notebook_query.
How to connect MCP to gemini app?
The README does not document connecting this MCP server to the Gemini app. It documents setup for Gemini CLI, Claude Code, Claude Desktop, Cursor, Cline, GitHub Copilot and Antigravity, plus a generic json output.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/jacob-bd-gemini-notebook-mcp-cli)