NotebookLM MCP

NotebookLM MCP是一个允许本地代理(如Claude、Cursor、Codex等)直接与NotebookLM项目交互的工具,解决了传统RAG方法的令牌消耗高、基础设施开销大和幻觉问题。

  • by wangjing0
  • Python
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 wangjing0/notebooklm-mcp

使用说明

笔记本LM MCP

让代理harge(Claude、Cursor、Codex…)直接与您的NotebookLM项目聊天

归功于原件 笔记本LM MCP (TypeScript)。这是一个Python实现。

安装 · 快速开始 · 配置 · 建筑 · 例子 · 常见问题解答 · 免责声明 · 路线图


问题

当你要求Claude Code或Cursor“搜索我的文档集”时,你通常会得到:

  • 大量使用代币 --反复读取许多文件既昂贵又缓慢。
  • 基础设施开销 --构建和维护本地RAG堆栈既费时又脆弱。
  • 幻觉 --当模型找不到东西时,它可能会发明听起来合理的答案。
  • 为什么不利用谷歌的生态系统 --NotebookLM可以处理各种多媒体源,如PDF、网站、GitHub仓库、YouTube视频等。

解决方案

让您的本地代理商直接与 笔记本LM --谷歌的 零幻觉知识库 由Gemini提供动力,从指定文档中提供智能、综合的答案。

真正的优势:NotebookLM和编辑器之间不再需要手动复制粘贴。您的代理直接询问NotebookLM,并在CLI中直接得到答案。它通过自动跟进建立了深入的理解——Claude按顺序提出了多个问题,每个问题都建立在最后一个问题的基础上,获得了具体的实现细节、边缘案例和最佳实践。您可以将NotebookLM链接保存到带有标签和描述的本地库,Claude会根据您当前的任务自动选择相关的笔记本。你可以使用 ask_question 该工具可以向NotebookLM询问任何您想要的东西。


为什么是NotebookLM,而不是本地RAG?

方法 令牌成本 设置时间 幻觉 答案质量
向Claude提供文档 非常高 即时 是(填补空白) 可变
网络搜索 中等 即时 高(来源不可靠) 命中或未命中
本地RAG 中等-高 小时数 中等(检索间隔) 取决于设置
笔记本LM MCP 最小化 ~5分钟 低 (不确定时拒绝) 专家综合

安装

需求

  • Python 3.10+
  • 紫外线 包管理器
  • Chrome已安装

设置

git clone <this repository>
cd notebooklm-mcp
uv sync
uv run playwright install chromium

添加到克劳德代码

claude mcp add notebooklm -- uv run --directory /path/to/notebooklm-mcp python main.py

添加到Cursor/其他MCP客户端

添加到MCP配置中(例如。 .mcp.json 或光标MCP设置):


Claude Code快速入门

1.身份验证(一次性)

在聊天中,说:

“让我登录NotebookLM”

将打开一个Chrome窗口;使用您的Google帐户登录。

2.创建您的知识库

  1. 首选 notebookm.google.com.
  2. 创建一个笔记本并添加来源:PDF、谷歌文档、markdown、网站、GitHub仓库、YouTube视频。
  3. 分享它: 设置→ 分享→ 任何有链接的人 并复制链接。

3.使用Claude提供的

你可以这样说:

“我正在使用[库]进行构建。这是我的NotebookLM:[链接]”

Claude会要求提供所需的任何元数据,然后使用笔记本。


配置

设置是通过环境变量进行的。复制 .env.example 到 .env 并编辑:

# Default notebook URL (optional)
NOTEBOOK_URL=https://notebooklm.google.com/notebook/...

# Browser behavior
HEADLESS=true          # Run Chrome headlessly (default: true)

# Session management
MAX_SESSIONS=10        # Max concurrent sessions (default: 10)
SESSION_TIMEOUT=900    # Session timeout in seconds (default: 900)

# Auto-login (optional)
AUTO_LOGIN_ENABLED=false
LOGIN_EMAIL=you@gmail.com
LOGIN_PASSWORD=yourpassword

# Tool profile
NOTEBOOKLM_PROFILE=full

建筑

服务器根据工具公开两条传输路径:

Your request  →  Claude / Cursor / Codex
                        ↕
                 notebooklm-mcp
               ┌────────┴────────┐
  ask_question │                 │ list/add/delete sources
  (browser)    │                 │ start/poll/import research
               ↓                 ↓
  Playwright + Chrome     Direct HTTP RPC
               ↕          (NotebookLM batchexecute API)
         NotebookLM UI
               ↕
    Your docs, sites, repos, videos, etc.

会话查询(ask_question)使用剧作家驱动的浏览器自动化,因为聊天界面没有公共的API。源代码管理和研究工具完全绕过浏览器,直接通过HTTP调用NotebookLM内部RPC端点,使用由保存的相同身份验证凭据 setup_auth.

浏览器状态和Chrome配置文件存储在 ~/Library/Application Support/notebooklm-mcp/ (macOS)或同等平台通过 platformdirs.

部署模式

服务器支持启动时可选择的两种部署模式:

单租户(stdio) --默认值。一个用户,一个进程。状态在过程的整个生命周期内都存在于记忆中。通过以下方式将服务器添加到Claude Code或Cursor时使用 claude mcp add.

有状态多租户(HTTP) --用于远程共享部署。多个用户共享一个服务器进程;每个用户都会获得完全隔离的资源(身份验证状态、笔记本库、浏览器会话)。这是一个 有状态多租户MCP服务器:

  • 多用户:每个请求都带有 X-User-ID 将其路由到专用的标头 TenantResources 实例——它自己的身份验证凭据、笔记本库和浏览器会话,用户之间没有重叠。
  • 有意义的会议:浏览器页面和对话线程在请求之间保持活动状态。后续问题重复使用相同的打开标签和聊天上下文,而不是从头开始。
  • LRU驱逐:空闲租户在可配置的超时后被驱逐,当达到内存上限时,最近使用最少的租户被丢弃,因此无论有多少用户连接过,服务器占用空间都保持有限。
User A  ──┐
User B  ──┼──  POST /mcp  (X-User-ID header)
User C  ──┘         │
                    ▼
            TenantManager (LRU cache of TenantResources)
                    │
           ┌────────┬────────┬────────┐
           │User A  │User B  │User C  │
           │auth    │auth    │auth    │
           │library │library │library │
           │session │session │session │
           └────────┴────────┴────────┘

以多租户模式启动:

uv run notebooklm-mcp --transport http --multi-tenant --host 0.0.0.0 --port 8000

看 multi-tenant_tutorial.md 使用curl和Python示例进行完整的端到端演练。


例子

意图 说 结果
身份验证 “让我登录NotebookLM” Chrome打开进行登录
添加笔记本 “将[notebookm链接]添加到库” 保存带有元数据的笔记本
列出笔记本 “显示我们的笔记本” 列出已保存的笔记本
研究先行 “计划前在NotebookLM中研究这一点” 多问题会议
选择笔记本 “使用React笔记本” 设置活动笔记本
查看浏览器 “显示浏览器” 观看NotebookLM实时聊天
修复身份验证 “修复NotebookLM身份验证” 清除并重新验证
切换帐户 “使用不同的Google帐户重新进行身份验证” 更改Google帐户
干净重启 “运行NotebookLM清理” 删除所有数据以重新开始
列出来源 “我的笔记本里有什么来源?” 列出具有状态的源
添加URL “将此URL添加到我的笔记本” 添加网页或YouTube视频作为源
添加文本 “将此文本添加为源” 将粘贴的文本添加为源
上传文件 “将此PDF添加到我的笔记本” 上传本地文件作为源
删除源 “从我的笔记本中删除源X” 删除源
网络研究 “研究[主题]并添加来源” 发现网络资源,导入所选资源

常见问题解答

真的是零幻觉吗?
NotebookLM是专门为只从上传的源中回答问题而设计的。如果它不知道,它会这么说。

那么利率限制呢?
免费套餐的每日查询限制约为每个谷歌账户50次。

这有多安全?
Chrome在本地运行。您的凭据永远不会离开您的计算机。如果愿意,请使用专用的谷歌帐户。

我能看看发生了什么事吗?
是的,默认情况下启用了无头模式,但您可以随时打开一个可见的Chrome窗口。说 “询问NotebookLM‘[您的问题]’并向我展示浏览器” 通过 show_browser: true 任何工具调用。该窗口是一个真正的Chrome实例:当代理与您一起运行时,您可以手动单击、滚动、键入NotebookLM并与之交互。


免责声明

此工具使用Playwright自动化浏览器与NotebookLM的交互。Chrome以隐形模式运行——它通过修补网站用于检测机器人的自动化信号,将自己伪装成一个常规的人工控制的浏览器。这并不违法,但谷歌仍可能检测到自动使用和费率限制或阻止该帐户。使用专用的Google帐户,而不是您的主帐户。

有其他选择吗?

Google没有为NotebookLM提供公共的API。截至2026年初,唯一的官方程序化访问是 笔记本LM企业API (2025年9月发布,alpha版),它需要付费的谷歌云企业合同,仅涵盖笔记本电脑/源代码管理,而不查询笔记本电脑的答案。开发者论坛已经 自2024年年中起请求消费者API 谷歌没有具体的时间表。

这一限制是有意的:谷歌将API访问作为其企业层的主要区别,而开放消费者API将需要不同的数据处理基础设施来满足GDPR/HIPAA对个人数据的义务。

替代方案及其权衡:

方法 示例 可靠性 风险
浏览器自动化(剧作家) 这个项目 高——反映真实的用户行为 低——遵循ToS精神
逆向工程内部API 笔记本 中等-谷歌部署中断 高-不受支持,未记录
企业API 谷歌云 高 无-但需要企业许可证$$$
其他开源实现 打开笔记本, SurfSense 中等 无--但没有NotebookLM特定功能

浏览器自动化是免费层访问的实用解决方案。多个独立项目-- notebookm_source_automation, notebook播客自动机 --使用与此项目相同的方法。另见 这个社区讨论 和 公共API的情况.


路线图

[x] 源管理 --可以查询笔记本,但不能以编程方式添加或删除源。浏览器自动化源上传流将关闭循环,允许代理创建笔记本、添加文档并端到端查询它们,而无需任何手动步骤。

[] 会话持久性和恢复 --在单租户(stdio)和多租户(HTTP)模式下,当进程退出或租户被驱逐时,内存会话状态都会丢失。未来的改进将把活动会话元数据序列化到磁盘(或像SQLite这样的轻量级存储),这样会话就可以在重新连接时恢复,而不需要重新登录浏览器和选择笔记本。

[] 可靠性 --浏览器自动化层是堆栈中最脆弱的部分。NotebookLM UI更改(选择器、页面结构)可能会悄无声息地中断查询。自愈选择器策略和结构化故障检测,结合针对瞬态浏览器和网络错误的重试逻辑,将使系统在NotebookLM更新中具有更强的弹性。

[] 智能笔记本路由 --目前,用户必须明确选择或传递 notebook_id。将查询与笔记本描述相匹配的代理路由层将允许用户简单地提出问题,并自动选择正确的笔记本。

[] 水平缩放和共享状态 --当前的设计基本上是单一过程: TenantManager 存在于内存中,Chrome配置文件存在于本地磁盘上,因此两个副本将具有不同的租户状态。共享备份存储(会话元数据、Chrome配置文件的对象存储)将解锁水平状态共享。