笔记本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 as my default notebook - 这叫 select_notebook.
- 开始提问:
- 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 authenticationShow NotebookLM server healthList my notebooksAdd this NotebookLM notebook to the librarySelect the notebook namedAsk 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_authCLI配置命令
# 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\ |
图书馆: /library.json\ 身份验证状态: /browser_state/state.json\ Chrome配置文件: /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。
