🚀 NotebookLM MCP
NotebookLM MCP 是一款專業的 MCP 服務器,用於實現 Google NotebookLM 的自動化操作。它已發佈到 PyPI,可直接用於生產環境。





✨ 主要特性
- 🔥 FastMCP v2:基於現代裝飾器的 MCP 框架
- ⚡ UV Python 管理器:極速依賴管理
- 🚀 多傳輸協議支持:支持 STDIO、HTTP、SSE
- 🎯 類型安全:完整的 Pydantic 驗證
- 🔒 持久認證:自動管理 Google 會話
- 📊 豐富的命令行界面:藉助 Taskfile 實現自動化,擁有美觀的終端界面
- 🐳 生產就緒:支持 Docker 部署,並提供監控功能
🚀 快速開始
🎯 終端用戶(推薦)
curl -LsSf https://astral.sh/uv/install.sh | sh
uv add notebooklm-mcp
uv run notebooklm-mcp init https://notebooklm.google.com/notebook/YOUR_NOTEBOOK_ID
初始化後會發生什麼:
- ✅ 創建
notebooklm-config.json 文件,保存你的配置信息
- ✅ 創建
chrome_profile_notebooklm/ 文件夾,用於持久認證
- ✅ 打開瀏覽器進行一次性 Google 登錄(如有需要)
- ✅ 保存會話,以便後續無頭操作
uv run notebooklm-mcp --config notebooklm-config.json server
uv run notebooklm-mcp --config notebooklm-config.json server --transport http --port 8001
uv run notebooklm-mcp --config notebooklm-config.json chat --message "Who are you ?"
👨💻 開發者
如果你想為這個項目做貢獻,可以查看我們的 Taskfile,以獲得更好的開發體驗:
git clone https://github.com/khengyun/notebooklm-mcp.git
cd notebooklm-mcp
task setup
task --list
📦 安裝指南
替代安裝方式
如果你更喜歡使用 pip 而不是 UV,可以按照以下步驟安裝:
pip install notebooklm-mcp
notebooklm-mcp init https://notebooklm.google.com/notebook/YOUR_NOTEBOOK_ID
notebooklm-mcp --config notebooklm-config.json server
📁 初始化後的項目結構
運行 init 命令後,你的工作目錄將包含以下內容:
your-project/
├── notebooklm-config.json # 配置文件
├── chrome_profile_notebooklm/ # 瀏覽器配置文件(用於持久認證)
│ ├── Default/ # Chrome 配置文件數據
│ ├── SingletonSocket # 會話文件
│ └── ... # 其他 Chrome 數據
└── your-other-files
關鍵文件說明:
notebooklm-config.json:包含筆記本 ID、服務器設置、認證配置等信息
chrome_profile_notebooklm/:存儲 Google 認證會話,支持無頭操作
🛠️ 可用工具
| 工具 |
描述 |
參數 |
healthcheck |
服務器健康狀態檢查 |
無 |
send_chat_message |
向 NotebookLM 發送消息 |
message: str, wait_for_response: bool |
get_chat_response |
超時獲取響應 |
timeout: int |
chat_with_notebook |
完整的交互操作 |
message: str, notebook_id?: str |
navigate_to_notebook |
切換筆記本 |
notebook_id: str |
get_default_notebook |
獲取當前筆記本 |
無 |
set_default_notebook |
設置默認筆記本 |
notebook_id: str |
get_quick_response |
即時響應 |
無 |
👨💻 開發者工作流
對於貢獻者和高級用戶,為了提高生產力,我們提供了一個包含 20 多個自動化任務的綜合 Taskfile:
task deps-add -- requests
task deps-add-dev -- pytest
task deps-remove -- requests
task deps-list
task deps-update
task test
task test-quick
task test-coverage
task enforce-test
task lint
task format
task build
task clean
task server-stdio
task server-http
task server-sse
task --list
💡 使用建議:安裝 Task 可獲得最佳開發體驗:go install github.com/go-task/task/v3/cmd/task@latest
🌐 傳輸選項
STDIO(默認)
task server-stdio
HTTP
task server-http
SSE
task server-sse
💻 使用示例
HTTP 客戶端測試
from fastmcp import Client
from fastmcp.client.transports import StreamableHttpTransport
transport = StreamableHttpTransport(url="http://localhost:8001/mcp")
async with Client(transport) as client:
tools = await client.list_tools()
result = await client.call_tool("healthcheck", {})
命令行測試
curl -X POST http://localhost:8001/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}'
LangGraph 集成示例
from fastmcp import Client
from fastmcp.client.transports import StreamableHttpTransport
transport = StreamableHttpTransport(url="http://localhost:8001/mcp")
client = Client(transport)
tools = await client.list_tools()
CrewAI 集成示例
from crewai_tools import BaseTool
from fastmcp import Client
class NotebookLMTool(BaseTool):
name = "notebooklm"
description = "Chat with NotebookLM"
async def _arun(self, message: str):
client = Client("http://localhost:8001/mcp")
result = await client.call_tool("chat_with_notebook", {"message": message})
return result
🔒 認證
自動設置
notebooklm-mcp init https://notebooklm.google.com/notebook/abc123
notebooklm-mcp --config notebooklm-config.json server
手動設置
notebooklm-mcp --config notebooklm-config.json server
notebooklm-mcp --config notebooklm-config.json test --notebook YOUR_NOTEBOOK_ID
🐳 Docker 部署
快速開始
uv run notebooklm-mcp init https://notebooklm.google.com/notebook/YOUR_NOTEBOOK_ID
docker build -t notebooklm-mcp .
docker run -d \
--name notebooklm-mcp \
--restart unless-stopped \
-v $(pwd)/notebooklm-config.json:/app/notebooklm-config.json:ro \
-v $(pwd)/chrome_profile_notebooklm:/app/chrome_profile_notebooklm \
notebooklm-mcp:latest
使用 Docker Compose
version: '3.8'
services:
notebooklm-mcp:
image: notebooklm-mcp:latest
build: .
restart: unless-stopped
volumes:
- ./notebooklm-config.json:/app/notebooklm-config.json:ro
- ./chrome_profile_notebooklm:/app/chrome_profile_notebooklm
在運行一次 init 命令,確保 notebooklm-config.json 和 chrome_profile_notebooklm/ 存在後,使用 docker compose up -d 啟動服務。服務器默認以 STDIO 模式運行;如果你的客戶端需要 HTTP/SSE 端口,請在 docker-compose.yml 中取消註釋相應端口。
⚙️ 配置
配置文件 (notebooklm-config.json)
{
"default_notebook_id": "your-notebook-id",
"headless": true,
"timeout": 30,
"auth": {
"profile_dir": "./chrome_profile_notebooklm"
},
"debug": false
}
環境變量
export NOTEBOOKLM_NOTEBOOK_ID="your-notebook-id"
export NOTEBOOKLM_HEADLESS=true
export NOTEBOOKLM_DEBUG=false
🚀 性能
FastMCP v2 的優勢
- ⚡ 工具註冊速度快 5 倍:使用裝飾器實現
- 📋 自動生成模式:根據 Python 類型提示生成
- 🔒 內置驗證:使用 Pydantic 進行驗證
- 🧪 更好的測試和調試能力
- 📊 全棧類型安全
性能對比
| 特性 |
傳統 MCP |
FastMCP v2 |
| 工具註冊 |
手動定義模式 |
自動生成 |
| 類型驗證 |
手動驗證 |
自動驗證 |
| 錯誤處理 |
基本處理 |
增強處理 |
| 開發速度 |
標準速度 |
快 5 倍 |
| HTTP 支持 |
有限支持 |
全面支持 |
🛠️ 開發
環境搭建
git clone https://github.com/khengyun/notebooklm-mcp
cd notebooklm-mcp
uv sync --all-groups
pip install -e ".[dev]"
測試
uv run pytest
uv run pytest --cov=notebooklm_mcp
uv run pytest tests/test_integration.py
task test
task test-coverage
代碼質量
uv run black src/ tests/
uv run ruff check src/ tests/
uv run mypy src/
task format
task lint
📚 詳細文檔
- 快速設置指南 - 2 分鐘快速上手
- HTTP 服務器指南 - Web 測試與集成
- FastMCP v2 指南 - 現代 MCP 特性
- Docker 部署 - 生產環境部署
- API 參考 - 完整的工具文檔
🔗 相關項目
📄 許可證
本項目採用 MIT 許可證,詳情請參閱 LICENSE 文件。
🆘 支持
本項目由 ❤️ FastMCP v2 構建 - 讓現代 MCP 開發變得簡單!