NotebookLM MCP — Claude Desktop extension (.mcpb / DXT)
This directory packages the notebooklm-py
MCP server as a one-click Claude Desktop extension
(.mcpb, formerly DXT). Installing the bundle wires the NotebookLM tools into
Claude Desktop without any manual JSON editing.
Contents
| File | Purpose |
|---|---|
manifest.json |
The extension manifest (name, version, server command). |
run_server.py |
A resilient launcher that locates uvx and runs uvx --from "notebooklm-py[mcp]" notebooklm-mcp, forwarding stdin/stdout/stderr for clean JSON-RPC. |
The launcher resolves the server from PyPI on demand via uvx, so there is no
vendored Python environment in the bundle — only the two files above.
Prerequisites
-
uv/uvx— the launcher shells out touvx:# macOS / Linux curl -LsSf https://astral.sh/uv/install.sh | sh # Windows (PowerShell) powershell -c "irm https://astral.sh/uv/install.ps1 | iex"run_server.pysearchesPATHplus the common install dirs (~/.local/bin,~/.cargo/bin,/opt/homebrew/bin,/usr/local/bin,/snap/bin, and the Windows equivalents), so a restricted hostPATHis fine. -
Authenticate once with your Google account:
uvx --from "notebooklm-py[mcp]" notebooklm loginThis stores credentials under
~/.notebooklm/for the active profile, which the server binds at startup.
Install
-
Claude Desktop: download
notebooklm-mcp.mcpbfrom the latest release (under Assets), then double-click it — or Settings → Extensions → Install Extension… and pick the file. Restart Claude Desktop; the NotebookLM tools (e.g.notebook_list,chat_ask,studio_generate) appear in the tool picker.Each stable release attaches a prebuilt, version-matched bundle (built and uploaded by
.github/workflows/publish-mcpb.yml), so there is nothing to build yourself. (Pre-releases don't ship a bundle — the launcher resolves the latest stable server from PyPI regardless.)
For other MCP clients (Claude Code, Cursor, Windsurf) that read a JSON config
instead of a .mcpb, use the CLI installer instead:
notebooklm mcp install claude-code # or: cursor / windsurf / claude-desktop
Build from source (contributors)
End users should download the prebuilt bundle from the release above. If you are
developing the extension itself, build it locally with the official
@anthropic-ai/mcpb CLI (formerly dxt):
# From the repository root:
npx @anthropic-ai/mcpb pack desktop-extension notebooklm-mcp.mcpb
This produces notebooklm-mcp.mcpb, a zip of manifest.json + run_server.py —
the same artifact the release workflow attaches.
The CLI validates
manifest.jsonagainst the DXT schema duringpack. The repo's owntests/unit/test_mcp_desktop_extension.pyasserts the manifest is valid JSON with the required keys, that its version tracks the package version, and thatrun_server.pybuilds the correctuvxcommand, so the bundle stays shippable.
How the launcher passes through stdio
The MCP host talks to the server over JSON-RPC on stdin/stdout. run_server.py
therefore:
- prints nothing to stdout (diagnostics go to stderr only), and
- passes the host's
stdin/stdout/stderrstraight through to the childuvxprocess.
If uvx cannot be found, the launcher prints a clear install hint to stderr
and exits non-zero — it never contaminates the JSON-RPC channel.