使用说明
笔记本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服务器。你通常会 不 手动调用其工具。 相反,你:
- 构建二进制文件
- 在您的MCP客户端中注册
- 让你的AI代理使用NotebookLM
- 客服通过MCP为您调用这些工具
典型用户流量
- 构建并注册服务器。
- 请您的代理人进行身份验证:
Set up NotebookLM authentication- 这叫
setup_auth并打开Chrome浏览器进行谷歌登录。
- 验证状态:
Check NotebookLM health- 这叫
get_health.
- 将笔记本添加到本地库:
Add my NotebookLM notebook- 代理应收集NotebookLM URL、描述、主题和用例,然后调用
add_notebook.
- 如果需要,请选择默认笔记本:
Use <notebook name> as my default notebook- 这叫
select_notebook.
- 开始提问:
Ask my notebook to summarize the API designAsk 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 authenticationShow NotebookLM server healthList my notebooksAdd this NotebookLM notebook to the librarySelect the notebook named <name>Ask the active notebook: what are the main design tradeoffs?Continue the previous NotebookLM session and ask for implementation stepsReset the current NotebookLM sessionClean 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,请按照以下顺序操作:
setup_authget_healthadd_notebooklist_notebooksselect_notebookask_question
持续使用:
get_healthlist_notebooks或search_notebooksask_questionlist_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
首次设置
- 构建二进制文件:
go build -o notebooklm-mcp-go . - 向您的MCP客户端注册
- 问克劳德: “设置NotebookLM身份验证” → calls
setup_auth - Chrome窗口打开——登录您的谷歌帐户
- 登录后,身份验证状态会自动保存到磁盘
- 验证: “检查NotebookLM运行状况” → calls
get_health - 添加笔记本: “添加我的NotebookLM笔记本” → 克劳德引导你
add_notebook - 开始查询: “向我的笔记本询问X” → calls
ask_question
常见工作流
1.首次认证
- 通过客户端启动MCP服务器。
- 让代理人跑
setup_auth. - 在浏览器窗口中登录谷歌。
- 让代理人跑
get_health. - 确认
authenticated=true.
2.添加笔记本并查询
- 在NotebookLM中创建或打开笔记本。
- 复制其可共享的URL。
- 请代理通过添加
add_notebook. - 可选呼叫
select_notebook. - 通过以下方式提问
ask_question.
3.继续对话
- 问第一个问题
ask_question. - 保留退回的
session_id. - 用同样的方法问后续问题
session_id. - 使用
reset_session如果你想在不删除会话记录的情况下进行干净的对话。
4.故障排除
- 如果NotebookLM停止按预期应答,请运行
get_health. - 如果Google帐户已更改或登录已过期,请运行
re_auth. - 如果浏览器/会话状态已损坏,请运行
cleanup_data先预览,然后确认删除。 - 如果要在清理过程中保留已保存的笔记本,请设置
preserve_library=true.
速率限制
免费谷歌账户: 50次查询/天.当达到限制时:
ask_question返回aRateLimitError- 使用
re_auth切换到其他Google帐户 - 或者等到第二天
升级到 谷歌AI Pro/Ultra 上限为5倍。
许可证
MIT——与最初的TypeScript项目相同。
繁体中文
中文版请参考 README.zh-TW.md。