Skip to content

Releases: jacob-bd/notebooklm-mcp-cli

v0.5.30 - Fix stale NOTEBOOKLM_COOKIES auth loop

25 Apr 20:43

Choose a tag to compare

What's Fixed

Auth loop when NOTEBOOKLM_COOKIES env var is stale (#170)

If you had NOTEBOOKLM_COOKIES set in your MCP config (e.g. claude_desktop_config.json) and those cookies expired, you'd get stuck in an auth loop with no useful error. refresh_auth would return false "success" while silently reloading the same stale cookies. Nothing you did — nlm login, save_auth_tokens, editing auth.json — would fix it.

Now:

  • refresh_auth detects the env var and returns a clear, actionable error explaining exactly what to do
  • Auth failure messages mention NOTEBOOKLM_COOKIES when it's the likely culprit

Deprecated env vars cleaned up

NOTEBOOKLM_CSRF_TOKEN and NOTEBOOKLM_SESSION_ID are no longer read from the environment. Both are auto-extracted on every client init. Stale values from env were bypassing auto-refresh and causing auth failures.

Troubleshooting docs

Added a new section to AUTHENTICATION.md covering the env var auth trap, how to diagnose it, and both fix options.

Thanks to @nobolso for the thorough root cause analysis that made this fix fast to land!

v0.5.29

24 Apr 19:08

Choose a tag to compare

Fixed

  • Python 3.11 TypedDict compatibility (Issue #167) — Pydantic v2 rejects typing.TypedDict on Python < 3.12. All 13 service files now import TypedDict from a centralized compat shim (services/_compat.py) that uses typing_extensions on < 3.12. Added typing_extensions as an explicit dependency for Python < 3.12. Thanks to @irvinghu07 for the clear report and suggested fixes!
  • SOCKS proxy blocks nlm login (Issue #167) — The CDP helper's httpx.Client inherited ALL_PROXY from the environment, causing ImportError: socksio not installed on localhost CDP connections. Fixed with trust_env=False. Thanks to @irvinghu07!
  • MCP notebook_list always returns "Authentication expired" (Issue #169)save_tokens_to_cache() only wrote to the legacy auth.json, but load_cached_tokens() prioritizes profiles/default/cookies.json. Tokens saved via the MCP save_auth_tokens tool were never read back. Fixed by syncing writes to both auth.json and the active profile. Thanks to @nobolso for the thorough diagnosis and file structure analysis!
  • Python 3.14 Windows pathlib.mkdir regression (Issue #169)Path.mkdir(parents=True, exist_ok=True) raises FileExistsError (WinError 183) on Python 3.14 + Windows. Added safe_mkdir() wrapper applied to all mkdir calls across config.py, auth.py, base.py, and cdp.py. Thanks to @nobolso!

Upgrade: uv tool upgrade notebooklm-mcp-cli or pip install --upgrade notebooklm-mcp-cli

Release v0.5.28

23 Apr 20:08

Choose a tag to compare

Fixed

  • HTTP transport: default to stateless mode (Issue #165) — HTTP transport (--transport http) now defaults to stateless sessions, preventing the MCP SDK double-response crash (AssertionError: Request already responded to) that killed entire sessions on slow Google API calls. Use --no-stateless to opt out. Thanks to @mylaser215 for the thorough root cause analysis (#165)!

Changed

  • CLI flags use BooleanOptionalAction--stateless / --no-stateless and --debug / --no-debug are now proper toggle pairs. Environment variables (NOTEBOOKLM_MCP_STATELESS, NOTEBOOKLM_MCP_DEBUG) accept true/false/0/1/yes/no/on/off (case-insensitive).

Documentation

  • CLI Guide: document all skill install targets (Issue #163) — Added agents, codex, gemini-cli, and alef-agent with install path details. Fixed missing opencode in setup clients list.

Release v0.5.27

21 Apr 17:26

Choose a tag to compare

Restore skill targets for codex and gemini-cli, fix source title bug. See CHANGELOG.md for details.

v0.5.26

17 Apr 22:05

Choose a tag to compare

Added

  • server_info auth_status — Local token state (configured | stale | not_configured | error). Thanks @josuebustosn (#160).

Fixed

  • Windows Unicode (CLI) — All CLI Rich output uses make_console() (#156). Thanks @argonaut-cm.
  • MCP reload after nlm login — Newer on-disk tokens force client reload (#161). Thanks @josuebustosn.

See CHANGELOG.md for full notes.

v0.5.25

15 Apr 18:38

Choose a tag to compare

Fixed

  • Audio download fails with 302→404 (Issue #158) — Prefer -dv download variant for fast CDN (drum.usercontent.google.com, ~3 MB/s). Audio downloads that previously failed now complete a 47MB file in ~15 seconds. Thanks to @Victor777777!
  • CDP WebSocket broken with system proxy (Issue #119, PR #157) — Temporarily clear proxy env vars around websocket.create_connection so Clash/Surge don't intercept localhost CDP. Thanks to @ahmelkholy!
  • Windows: MCP server crashes with UnicodeEncodeError (Issue #156) — Reconfigure stdout/stderr to UTF-8 at startup; set legacy_windows=False on Rich consoles. Thanks to @argonaut-cm!

Changed

  • Lazy-load NotebookLMClient in package __init__ for lighter startup

Full changelog: https://github.com/jacob-bd/notebooklm-mcp-cli/blob/main/CHANGELOG.md#0525---2026-04-15

v0.5.24

13 Apr 23:40

Choose a tag to compare

Fixed

  • Studio: Surface revise RPC errors with actionable hints (PR #154) — When slides revise fails due to an invalid artifact ID or a rejected revision request, the error now surfaces the specific Google API error code (e.g., INVALID_ARGUMENT) along with a clear hint guiding the user to verify their artifact ID. Previously, these failures produced opaque, unhelpful error messages. Thank you @sickn33 for this fix!

  • WSL2: Auth broken on Chrome 136+ due to localhost-only CDP (PR #155) — Chrome 136+ ignores --remote-debugging-address=0.0.0.0, restricting the DevTools Protocol to 127.0.0.1 only. This completely broke nlm login --wsl for all WSL2 users. The fix switches to a port proxy approach: Chrome launches on port 9223 (localhost) and WSL connects via port 9222 through a netsh interface portproxy rule. Temp Chrome profiles are now created on the Windows filesystem (%TEMP%) instead of WSL's /tmp to prevent "Profile error occurred" crashes. Updated docs/WSL_SETUP.md with one-time setup instructions. Thank you @casjogreen for this critical fix!


Full Changelog: v0.5.23...v0.5.24

v0.5.23

13 Apr 00:20

Choose a tag to compare

Added

  • Restore NotebookLM MCP and CLI runtime contracts (PR #152) — Fixed MCP tool boundary registration, normalized error payloads, and restored download/upload sync-compatible entrypoints. Thank you @sickn33 for this immense contribution!

Fixed

  • Windows: Server crashes immediately on startup (Issue #150)os.execvp fails on Windows. Replaced with subprocess.run to prevent immediate crashes on Windows 11 during server startup via the .mcpb bundle. Added explicit stdin=sys.stdin, stdout=sys.stdout, and stderr=sys.stderr to ensure the JSON-RPC stdio channel between Claude Desktop and the server remains properly connected across platforms. Thanks to @m3saros for diagnosing the root cause and providing the exact fix!

v0.5.22

11 Apr 20:49

Choose a tag to compare

Full Changelog: v0.5.21...v0.5.22

v0.5.21

11 Apr 13:40

Choose a tag to compare

What's Changed

  • Fix source alias autodetect, REPL source counts, and audio status=2 readiness by @sickn33 in #146
  • Improve Chromium auth resilience and align auth messaging by @agarwalvipin in #144
  • Fix: handle HTTP 400 as auth failure for CSRF token recovery by @jacob-bd in #148

New Contributors

Full Changelog: v0.5.20...v0.5.21