NotebookLM MCP服务器

一个Golang重写的MCP服务器,允许AI代理(如Claude Code、Cursor、Codex等)查询Google NotebookLM笔记本,以获取基于Gemini的源引用答案。

  • by asccclass
  • Go
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 asccclass/notebooklm-go

使用说明

笔记本mcp go

英语 | 繁体中文

英语

A. Golang重写 的 请促销/记事本mcp --MCP服务器,允许AI代理(Claude Code、Cursor、Codex……)查询Google NotebookLM笔记本电脑,以获取由Gemini支持的源代码、引用支持的答案。

与最初的TypeScript有什么不同?

特性 TypeScript原创 重写
运行时 Node.js+npx 单个静态二进制
浏览器自动化 Patchright(Playwright fork) go rod(Chrome DevTools协议)
启动时间 ~3-5秒(节点引导) ~100毫秒
内存 ~150 MB空闲 ~25 MB空闲
二进制大小 ~100 MB(节点模块) ~14 MB
MCP传输 @modelcontextprotocol/sdk 基于stdio的手动JSON-RPC 2.0

全部 16工具 从最初的实施。


快速开始

# Build
go build -o notebooklm-mcp-go .

# Register as an MCP server (Claude Code)
claude mcp add notebooklm ./notebooklm-mcp-go

# Or add to your claude_desktop_config.json:
# {
#   "mcpServers": {
#     "notebooklm": {
#       "command": "/path/to/notebooklm-mcp-go"
#     }
#   }
# }

如何使用此MCP

此项目是一个MCP服务器。你通常会 不 手动调用其工具。 相反,你:

  1. 构建二进制文件
  2. 在您的MCP客户端中注册
  3. 让你的AI代理使用NotebookLM
  4. 客服通过MCP为您调用这些工具

典型用户流量

  1. 构建并注册服务器。
  2. 请您的代理人进行身份验证:
    • Set up NotebookLM authentication
    • 这叫 setup_auth 并打开Chrome浏览器进行谷歌登录。
  3. 验证状态:
    • Check NotebookLM health
    • 这叫 get_health.
  4. 将笔记本添加到本地库:
    • Add my NotebookLM notebook
    • 代理应收集NotebookLM URL、描述、主题和用例,然后调用 add_notebook.
  5. 如果需要,请选择默认笔记本:
    • Use <notebook name> as my default notebook
    • 这叫 select_notebook.
  6. 开始提问:
    • Ask my notebook to summarize the API design
    • Ask the same session to compare v1 and v2 behaviour
    • 这叫 ask_question,可选择重复使用 session_id.

MCP客户端通常如何与其交互

  • 克劳德代码/克劳德桌面: 将二进制文件注册为MCP服务器,然后用自然语言请求操作。
  • Cursor/Copyro/其他MCP感知客户端: 在该客户端的MCP/server配置中添加server命令,然后正常指示代理。
  • 直接执行: 跑步 ./notebooklm-mcp-go 启动stdio JSON-RPC MCP服务器。这是针对MCP客户端的,不适用于交互式终端。

您可以给代理的示例提示

  • Set up NotebookLM authentication
  • Show NotebookLM server health
  • List my notebooks
  • Add this NotebookLM notebook to the library
  • Select the notebook named <name>
  • Ask the active notebook: what are the main design tradeoffs?
  • Continue the previous NotebookLM session and ask for implementation steps
  • Reset the current NotebookLM session
  • Clean up NotebookLM data but keep my library

客户端特定的MCP配置示例

确切的MCP UI和文件格式可能会因客户端版本而异。以下示例与当前记录的模式相匹配 stdio-基于本地MCP服务器。

克劳德桌面/克劳德代码

Claude Code可以直接从CLI注册服务器:

claude mcp add notebooklm ./notebooklm-mcp-go

如果你想手动配置Claude Desktop,请在MCP配置JSON中添加这样的条目:

{
  "mcpServers": {
    "notebooklm": {
      "command": "C:\\Users\\andyl\\Myprogram\\notebooklm-go\\notebooklm-mcp-go.exe",
      "args": [],
      "env": {
        "DEBUG": "0"
      }
    }
  }
}

笔记:

  • 替换 command 路径与您实际构建的二进制位置。
  • 在macOS/Linux上,使用绝对二进制路径,例如 /Users/you/path/notebooklm-mcp-go.
  • 如果您经常构建,请保持二进制路径稳定,这样客户端配置就不需要更新。

光标

游标从项目级别读取MCP配置 .cursor/mcp.json 或全球 ~/.cursor/mcp.json.

项目本地示例:

{
  "mcpServers": {
    "notebooklm": {
      "command": "${workspaceFolder}/notebooklm-mcp-go",
      "args": [],
      "env": {
        "DEBUG": "0"
      }
    }
  }
}

使用绝对路径的Windows示例:

{
  "mcpServers": {
    "notebooklm": {
      "command": "C:\\Users\\andyl\\Myprogram\\notebooklm-go\\notebooklm-mcp-go.exe",
      "args": [],
      "env": {
        "DEBUG": "0"
      }
    }
  }
}

笔记:

  • 如果将二进制文件保存在repo根目录中, ${workspaceFolder}/notebooklm-mcp-go 在macOS/Linux上很方便。
  • 在Windows上,更喜欢 .exe 路径。
  • 编辑后 mcp.json,重新启动Cursor或重新加载MCP服务器。

法典

Codex通过CLI和共享配置支持MCP。

CLI注册示例:

codex mcp add notebooklm -- C:\Users\andyl\Myprogram\notebooklm-go\notebooklm-mcp-go.exe

如果您更喜欢配置文件设置,请将其添加到 ~/.codex/config.toml:

[mcp_servers.notebooklm]
command = "C:\\Users\\andyl\\Myprogram\\notebooklm-go\\notebooklm-mcp-go.exe"
args = []

[mcp_servers.notebooklm.env]
DEBUG = "0"

macOS/Linux示例:

[mcp_servers.notebooklm]
command = "/absolute/path/to/notebooklm-mcp-go"
args = []

[mcp_servers.notebooklm.env]
DEBUG = "0"

笔记:

  • codex mcp list 可用于验证服务器是否已注册。
  • Codex在CLI和IDE扩展之间共享MCP配置。
  • 保持服务器名称简短且具有描述性,例如 notebooklm.

工具

核心

工具 说明
ask_question 向NotebookLM笔记本提问。支持会话连续性、笔记本选择和浏览器选项。

会话管理

工具 说明
list_sessions 列出所有活动浏览器会话,包括年龄、消息计数、上次活动
close_session 按ID关闭特定会话
reset_session 重置会话的聊天记录(重新加载笔记本页面)

系统

工具 说明
get_health 身份验证状态、活动会话、配置摘要
setup_auth 打开一个可见的浏览器进行手动谷歌登录
re_auth 切换帐户/新身份验证(清除所有数据)
cleanup_data 通过预览+确认对所有MCP数据文件进行深度清理

图书馆管理

工具 说明
add_notebook 将NotebookLM笔记本添加到持久库中
list_notebooks 列出所有带有元数据的笔记本
get_notebook 按ID获取特定笔记本
select_notebook 设置活动笔记本
update_notebook 更新笔记本元数据
remove_notebook 从库中删除笔记本
search_notebooks 按名称、描述、主题或标签搜索笔记本
get_library_stats 笔记本库的使用统计数据

每个工具的用途是什么

工具 何时使用 注意事项
ask_question 向NotebookLM提出一个基于笔记本来源的问题 支持 session_id, notebook_id, notebook_url,以及浏览器覆盖
list_sessions 检查活动的浏览器支持的聊天会话 可用于调试或重用会话上下文
close_session 结束一个会话并获得免费浏览器资源 需要 session_id
reset_session 保持相同的会话ID,但清除聊天历史记录 重新加载笔记本页面
get_health 检查身份验证状态、配置和当前会话统计信息 良好的第一个诊断命令
setup_auth NotebookLM首次登录谷歌 打开可见浏览器
re_auth 使用相同或不同的Google帐户重新登录 清除旧身份验证并关闭会话
cleanup_data 预览或删除本地NotebookLM MCP数据 支持 confirm 和 preserve_library
add_notebook 将NotebookLM笔记本保存到本地库 需要笔记本元数据
list_notebooks 显示本地库中的所有笔记本 包括元数据和URL
get_notebook 显示一个笔记本的详细信息 需要笔记本 id
select_notebook 设置使用的默认笔记本 ask_question 需要笔记本电脑 id
update_notebook 编辑已保存的笔记本元数据 需要笔记本 id
remove_notebook 从本地库中删除笔记本 不删除真实的NotebookLM笔记本
search_notebooks 按主题/名称/标签/描述查找笔记本 库增长后有用
get_library_stats 显示使用次数和活动笔记本状态 有利于操作可见性

推荐操作顺序

如果您是第一次使用此MCP,请按照以下顺序操作:

  1. setup_auth
  2. get_health
  3. add_notebook
  4. list_notebooks
  5. select_notebook
  6. ask_question

持续使用:

  1. get_health
  2. list_notebooks 或 search_notebooks
  3. ask_question
  4. list_sessions / reset_session / close_session 如果您需要会话管理

配置

环境变量

# NotebookLM
NOTEBOOK_URL=https://notebooklm.google.com/notebook/...

# Browser
HEADLESS=true                    # Run headless (default: true)
BROWSER_TIMEOUT=30000            # Timeout in ms

# Sessions
MAX_SESSIONS=10                  # Max concurrent sessions
SESSION_TIMEOUT=900              # Session idle timeout in seconds

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

# Stealth (human-like behavior)
STEALTH_ENABLED=true
STEALTH_HUMAN_TYPING=true
TYPING_WPM_MIN=160
TYPING_WPM_MAX=240
MIN_DELAY_MS=100
MAX_DELAY_MS=400

# Tool profile
NOTEBOOKLM_PROFILE=full          # minimal | standard | full
NOTEBOOKLM_DISABLED_TOOLS=cleanup_data,re_auth

CLI配置命令

# Show current settings
./notebooklm-mcp-go config get

# Set tool profile
./notebooklm-mcp-go config set profile minimal
./notebooklm-mcp-go config set profile standard
./notebooklm-mcp-go config set profile full

# Disable specific tools
./notebooklm-mcp-go config set disabled-tools "cleanup_data,re_auth"

# Reset to defaults
./notebooklm-mcp-go config reset

设置已保存到 ~/.config/notebooklm-mcp/settings.json.

CLI配置会影响什么

  • profile:限制哪些工具暴露给MCP客户端。
  • disabled-tools:隐藏选定的工具,即使当前配置文件通常允许它们。
  • 这些设置会影响服务器在启动时返回的工具列表。

档案

简介 包括的工具
minimal ask_question、get_health、setup_auth
standard +re_auth、list_sessions、close_session、list_notebook、select_notebook和add_notebook
full 全部16个工具(默认)

数据路径

平台 数据目录
Linux ~/.local/share/notebooklm-mcp/
macOS ~/Library/Application Support/notebooklm-mcp/
窗户 %APPDATA%\notebooklm-mcp\

图书馆: <data>/library.json
身份验证状态: <data>/browser_state/state.json
Chrome配置文件: <data>/chrome_profile/


建筑

Your Task
  └─► Claude / Codex / Cursor
        └─► MCP Server (JSON-RPC over stdio)
              └─► go-rod (Chrome DevTools Protocol)
                    └─► Chrome / Chromium
                          └─► NotebookLM (Gemini 2.5)
                                └─► Your Docs

封装结构

.
├── main.go                          # Entry point + CLI config
├── internal/
│   ├── config/config.go             # Configuration (env vars + defaults)
│   ├── auth/auth_manager.go         # Browser state / cookie persistence
│   ├── library/
│   │   ├── types.go                 # Library data types
│   │   └── library.go               # Persistent notebook library (library.json)
│   ├── session/session.go           # Browser sessions + session manager
│   ├── tools/
│   │   ├── definitions.go           # MCP tool definitions (schemas + descriptions)
│   │   └── handlers.go              # Tool implementation logic
│   ├── mcp/server.go                # JSON-RPC 2.0 MCP server (stdio transport)
│   └── utils/
│       ├── logger.go                # Structured logging to stderr
│       └── settings.go              # Profile/tool filtering settings
└── go.mod

首次设置

  1. 构建二进制文件: go build -o notebooklm-mcp-go .
  2. 向您的MCP客户端注册
  3. 问克劳德: “设置NotebookLM身份验证” → calls setup_auth
  4. Chrome窗口打开——登录您的谷歌帐户
  5. 登录后,身份验证状态会自动保存到磁盘
  6. 验证: “检查NotebookLM运行状况” → calls get_health
  7. 添加笔记本: “添加我的NotebookLM笔记本” → 克劳德引导你 add_notebook
  8. 开始查询: “向我的笔记本询问X” → calls ask_question

常见工作流

1.首次认证

  1. 通过客户端启动MCP服务器。
  2. 让代理人跑 setup_auth.
  3. 在浏览器窗口中登录谷歌。
  4. 让代理人跑 get_health.
  5. 确认 authenticated=true.

2.添加笔记本并查询

  1. 在NotebookLM中创建或打开笔记本。
  2. 复制其可共享的URL。
  3. 请代理通过添加 add_notebook.
  4. 可选呼叫 select_notebook.
  5. 通过以下方式提问 ask_question.

3.继续对话

  1. 问第一个问题 ask_question.
  2. 保留退回的 session_id.
  3. 用同样的方法问后续问题 session_id.
  4. 使用 reset_session 如果你想在不删除会话记录的情况下进行干净的对话。

4.故障排除

  • 如果NotebookLM停止按预期应答,请运行 get_health.
  • 如果Google帐户已更改或登录已过期,请运行 re_auth.
  • 如果浏览器/会话状态已损坏,请运行 cleanup_data 先预览,然后确认删除。
  • 如果要在清理过程中保留已保存的笔记本,请设置 preserve_library=true.

速率限制

免费谷歌账户: 50次查询/天.当达到限制时:

  • ask_question 返回a RateLimitError
  • 使用 re_auth 切换到其他Google帐户
  • 或者等到第二天

升级到 谷歌AI Pro/Ultra 上限为5倍。


许可证

MIT——与最初的TypeScript项目相同。

繁体中文

中文版请参考 README.zh-TW.md。