使用说明
NotebookLM MCP服务器
使用浏览器自动化将Claude Code连接到Google NotebookLM。
🖥️ Claude代码集成 | 🤖 浏览器自动化 | 📚 笔记本LM工具
⚠️ 重要提示
- 没有官方API:这使用浏览器自动化,可能会因UI更改而中断
- 服务条款:可能违反NotebookLM ToS;仅供个人/教育使用
- 需要认证:需要具有NotebookLM访问权限的Google帐户
- 需要维护:NotebookLM更改时,UI选择器需要更新
为什么浏览器自动化(剧作家+Chromium)?
没有可用的公共API
NotebookLM(免费版https://notebooklm.google.com)不提供编程访问:
- ❌ 没有REST API
- ❌ 没有Python SDK
- ❌ 没有webhooks或集成
唯一的界面是web UI,这需要浏览器自动化。
技术要求
NotebookLM是一个JavaScript单页应用程序(SPA)。为了实现自动化,我们需要:
- JavaScript执行 -UI通过JavaScript动态呈现
- DOM操作 -点击按钮、填写表格、提取数据
- 谷歌OAuth -使用Google帐户进行身份验证
- 会话管理 -维护Cookie和身份验证状态
简单的HTTP客户端无法工作 因为:
- 如果不执行JavaScript,你会得到空的HTML:
<div id="root"></div> - 无法访问渲染的DOM元素
- 无法处理OAuth身份验证流
为什么选择Playwritt+Chromium?
剧作家 是Python最好的浏览器自动化工具:
- 具有自动等待功能的现代异步API
- Python原生支持
- 多架构(ARM64/AMD64)
- 积极开发
铬 作为浏览器引擎是必需的:
- 执行JavaScript并呈现UI
- 处理Google身份验证
- 提供完整的浏览器功能
备选方案:NotebookLM Enterprise API
谷歌提供 笔记本LM企业版 使用官方API,但它:
- 需要Google Cloud项目和企业许可
- 仅适用于企业版,不适用于免费NotebookLM
- API处于alpha(v1alpha)
这个项目的目标是免费的NotebookLM 无需企业要求即可访问。
🚀 快速开始
# 1. Install dependencies
uv sync
uv run playwright install chromium
# 2. Authenticate with Google
uv run python scripts/setup_auth.py
# 3. The .mcp.json file is already configured
# Just use Claude Code and start interacting with NotebookLM!
Claude代码中的示例用法
配置后,在Claude Code中尝试以下提示:
创建并填充笔记本:
Create a new NotebookLM notebook called "AI Research" and add these sources:
- https://arxiv.org/abs/2301.00001
- https://www.youtube.com/watch?v=example
查询您的笔记本:
List all my NotebookLM notebooks, then query the "AI Research" notebook about
the main findings and create a summary.
生成学习材料:
For my "Course Notes" notebook, generate a FAQ study guide and then
generate an audio overview.
组织来源:
Show me all sources in my "Research Papers" notebook and tell me
which ones are YouTube videos vs websites.
运输方式
NotebookLM MCP服务器支持两种传输模式:
标准传输(默认-推荐)
服务器由Claude Code自动启动和停止。每个项目都会生成自己的实例。
在以下情况下使用:
- ✅ 一次只做一个项目
- ✅ 您需要自动服务器生命周期管理
- ✅ 你喜欢简单
配置: 已在中设置 .mcp.json
HTTP传输(高级-多项目)
运行一个服务器实例,并从多个项目连接到它。
在以下情况下使用:
- ✅ 同时处理多个项目
- ✅ 您希望在多个项目间共享一台服务器
- ✅ 您需要减少资源使用
快速设置:
# Terminal 1: Start server once
cd /path/to/notebooklm-mcp
MCP_TRANSPORT=streamable-http uv run notebooklm-mcp
# Terminal 2+: In any project, create .mcp.json
{
"mcpServers": {
"notebooklm": {
"type": "http",
"url": "http://localhost:8080/mcp"
}
}
}
📖 完整指南: 看 HTTP传输指南 有关详细说明、后台服务和最佳实践。
测试MCP服务器
在使用Claude Code之前,使用MCP Inspector测试服务器:
# Install and run MCP Inspector
npx @modelcontextprotocol/inspector uv --directory /path/to/notebooklm-mcp run notebooklm-mcp
# Opens web interface at http://localhost:5173
# Try calling tools like list_notebooks(), create_notebook(), etc.
观察浏览器自动化(调试):
# Run with visible browser to see what's happening
NOTEBOOKLM_HEADLESS=false uv run notebooklm-mcp
特性
第1阶段-基本操作
- ✅ 列出所有笔记本
- ✅ 创建新笔记本
- ✅ 添加来源(网站、YouTube、文本)
- ✅ 使用AI查询笔记本
第2阶段-高级功能
- ✅ 生成学习指南(常见问题解答、简报文件、目录)
- ✅ 生成音频概述(播客)
- ✅ 获取笔记本源
安装
cd /path/to/notebooklm-mcp
# Install dependencies
uv sync
# Install Playwright browsers
uv run playwright install chromium
身份验证设置
运行一次此命令以验证您的Google帐户:
uv run python scripts/setup_auth.py
这将打开一个浏览器,您可以在其中:
- 登录您的Google帐户
- 导航到https://notebooklm.google.com
- 验证访问权限,然后按Enter键
您的会话已保存到 chrome-user-data/ (忽略了)。
配置
环境变量(可选)
您可以使用环境变量配置MCP服务器。有两种方法可以设置它们:
选项1:直接在终端设置(快速测试)
# Run with custom settings
NOTEBOOKLM_HEADLESS=false LOG_LEVEL=DEBUG uv run notebooklm-mcp
选项2:使用.env文件(持久配置)
创建一个 .env 文件 在项目根目录中 (旁边 README.md):
# From the project root directory
cd /path/to/notebooklm-mcp
cp .env.example .env
编辑 .env 使用您的首选设置:
# Example .env file content
NOTEBOOKLM_HEADLESS=true
LOG_LEVEL=INFO
这 .env 当您运行服务器时,文件会自动加载。
文件位置:
notebooklm-mcp/
├── .env # Your configuration file (create this)
├── .env.example # Template (already exists)
├── README.md
├── pyproject.toml
└── ...
可用设置
| 变量 | 默认值 | 描述 |
|---|---|---|
NOTEBOOKLM_HEADLESS |
true |
在无头模式下运行浏览器。吃起来 false 查看浏览器(有助于调试) |
LOG_LEVEL |
INFO |
日志详细程度: DEBUG, INFO, WARNING, ERROR |
注: 对于Claude Code的使用,您通常不需要 .env file-默认设置工作正常。这 .env 该文件主要用于调试。
Claude代码集成
这 .mcp.json 项目根目录中的文件配置MCP服务器:
{
"mcpServers": {
"notebooklm": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/notebooklm-mcp",
"run",
"notebooklm-mcp"
],
"env": {
"NOTEBOOKLM_HEADLESS": "true"
}
}
}
}
重要提示: 更新 --directory 路径以匹配您的实际项目位置。
配置后,当您在此目录中工作时,Claude Code将自动加载MCP服务器。
测试
与MCP检查员一起
npx @modelcontextprotocol/inspector uv --directory /path/to/notebooklm-mcp run notebooklm-mcp
观看浏览器自动化
NOTEBOOKLM_HEADLESS=false uv run notebooklm-mcp
克劳德密码
尝试以下提示:
- “列出我的NotebookLM笔记本”
- “创建一个名为“测试”的笔记本”
- “添加https://example.com到笔记本[ID]“
- “问笔记本[ID]:主要主题是什么?”
可用工具
list_notebooks()
列出所有可用的NotebookLM笔记本。
退货:带有id、标题和url的笔记本列表
输出示例:
[
{
"id": "abc123def456",
"title": "Research Notes",
"url": "https://notebooklm.google.com/notebook/abc123def456"
}
]
create_notebook(name: str)
创建一个新的NotebookLM笔记本。
参数:
name:笔记本的名称
退货:已创建笔记本详细信息
add_source(notebook_id: str, source_type: str, content: str)
将源添加到笔记本。
参数:
notebook_id:笔记本IDsource_type:“网站”、“youtube”或“文本”content:网站/youtube的URL,或原始文本
退货:状态消息
query_notebook(notebook_id: str, query: str)
问NotebookLM的AI一个关于笔记本来源的问题。
参数:
notebook_id:笔记本IDquery:要问的问题
退货:AI生成的响应为字符串
generate_study_guide(notebook_id: str, guide_type: str)
从笔记本来源生成学习指南。
参数:
notebook_id:笔记本IDguide_type:“faq”、“briefing.doc”或“内容表”
退货:状态消息
generate_audio_overview(notebook_id: str)
从笔记本来源生成音频概述(播客)。
备注:这是NotebookLM中的异步操作。音频生成可能需要几分钟才能完成。
参数:
notebook_id:笔记本ID
退货:状态消息
get_notebook_sources(notebook_id: str)
在笔记本中获取源列表。
参数:
notebook_id:笔记本ID
退货:带索引和标题的来源列表
故障排除
常见问题
克劳德代码中未显示MCP服务器
- 检查一下
.mcp.json存在于项目根目录中 - 验证JSON语法是否有效(无尾随逗号)
- 检查配置中指向项目目录的路径
- 重新启动Claude代码
- 跑
claude mcp list验证服务器是否已注册
身份验证已过期
# Re-run authentication setup
uv run python scripts/setup_auth.py
# Or delete chrome-user-data and start fresh
rm -rf chrome-user-data
uv run python scripts/setup_auth.py
剧作家/Chromium问题
# Reinstall Playwright browsers
uv run playwright install chromium --force
uv run playwright install-deps chromium
# On Linux, you may need system dependencies
sudo apt-get install -y \
libnss3 libnspr4 libatk1.0-0 libatk-bridge2.0-0 \
libcups2 libdrm2 libxkbcommon0 libxcomposite1 \
libxdamage1 libxfixes3 libxrandr2 libgbm1 \
libpango-1.0-0 libcairo2 libasound2
UI选择器不工作
NotebookLM UI可能已更改。检查DevTools中的UI并更新中的选择器 src/notebooklm_mcp/selectors.py.
浏览器自动化失败
# Run with visible browser to see what's happening
NOTEBOOKLM_HEADLESS=false uv run notebooklm-mcp
# Enable debug logging
LOG_LEVEL=DEBUG uv run notebooklm-mcp
工具在Claude代码中没有响应
- 检查MCP服务器是否已注册:
claude mcp list - 首先尝试简单的工具:“列出我的NotebookLM笔记本”
- 检查输出中的错误
- 重新启动Claude代码
项目结构
notebooklm-mcp/
├── src/notebooklm_mcp/
│ ├── __init__.py
│ ├── server.py # FastMCP server with tool definitions
│ ├── browser.py # Playwright browser manager
│ ├── selectors.py # NotebookLM UI selectors
│ └── utils.py # Helper functions
├── scripts/
│ └── setup_auth.py # Interactive Google login
├── chrome-user-data/ # Persistent browser profile (gitignored)
├── .mcp.json # Claude Code MCP server configuration
├── pyproject.toml
├── .env
└── README.md
许可证
MIT许可证-仅限个人/教育用途
免责声明
该项目不隶属于谷歌,也不得到谷歌的认可或赞助。使用风险自负。