account_settings
Account settings
Read the account's quota windows, or set the output language when output_language is given. The language setting slot is not live-verified (the call is sent, but Google may ignore or reject it).
output_language
io.github.candidloom-hub由 GitHub 账号 candidloom-hub 发布v0.3.3更新于 Nov 4, 2026
Fast MCP server for Google NotebookLM: notebooks, sources, cited chat, research. Unofficial.
非官方 MCP 服务器,让助手操作你的 Google NotebookLM 笔记本:来源、带引用的问答、研究、笔记与 Studio 产物。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
参照 仓库 中的启动说明。
[Release] [License: Apache-2.0]
Let your AI assistant use your Google NotebookLM notebooks: one small, fast program, nothing else to install.
Windows (open PowerShell, paste, press Enter):
macOS and Linux (open Terminal, paste, press Enter):
The installer checks the download, installs sourcebolt for your user only, and then offers sourcebolt setup. Setup finds your AI apps, connects the ones you pick (keeping a backup of their settings), and opens a browser window so you can sign in to Google. Your password goes only to Google.
Quick start · Install · Connect your app · Tools · FAQ · Docs
Independent project. sourcebolt is not made by, endorsed by or sponsored by Google. "NotebookLM" is a trademark of Google LLC. NotebookLM has no public API for personal accounts, so sourcebolt uses the same internal web calls the NotebookLM website makes. Read Limits and risk before you rely on it.
sourcebolt is an MCP server. MCP (Model Context Protocol) is the standard way AI apps such as Claude, Cursor, VS Code and Codex call outside tools. Once sourcebolt is connected, you can ask your assistant things like:
The assistant calls sourcebolt, sourcebolt talks to NotebookLM with your own Google session, and the answer comes back with citations from your sources.
Measured on the GitHub Actions runner (2 CPUs, AMD EPYC 7763), v0.2.0, medians. Method and raw data: bench/RESULTS.md and docs/performance.md.
Install. Download the file for your system from the latest release and put sourcebolt on your PATH. Step-by-step commands are in Install.
Sign in. Start Brave or Chrome with a debugging port, sign in to NotebookLM in that window, then run:
You should see Saved profile "default" for notebook.google.com (N notebooks visible). The browser commands for each system are in docs/auth.md. From the release after v0.2.0, sourcebolt setup does steps 2 to 4 for you (docs/getting-started.md).
Check it.
Every line should start with ok.
Connect your AI app. For Claude Code:
After v0.2.0 you can instead install the Claude Code plugin, which adds the server and the sourcebolt skill (the program must still be on your PATH):
Other apps: Connect your AI app. One-click install links: docs/install-links.md.
Ask a question. In your app, type: "Use sourcebolt to list my NotebookLM notebooks, then ask the first one for a one-paragraph summary with citations."
The full walkthrough with expected output is in docs/getting-started.md.
The current release is v0.3.3. Not sure which way to pick? See docs/install.md, or use the one-line installer (it verifies the download's checksum, needs no admin rights, and -Uninstall / --uninstall undoes it):
Installing through an AI agent such as Cline? Point it at llms-install.md: agent-ready steps, where you still sign in to Google yourself.
Windows (PowerShell). This puts sourcebolt.exe in a folder in your user profile and adds that folder to your PATH. For an ARM64 PC, replace amd64 with arm64.
Open a new terminal, then run sourcebolt --version. It prints sourcebolt 0.3.3.
macOS and Linux (bash). Set OS to darwin or linux and ARCH to amd64 or arm64.
If sourcebolt is not found, add ~/.local/bin to your PATH. Each release has a checksums.txt with a keyless cosign signature and a CycloneDX SBOM (software bill of materials) per archive; docs/security.md shows how to check them.
The image has no OS keyring, so the profile key is kept in a file inside the /config volume. Protect that volume like a password. The 0.2.0-browser tag adds a browser for the fallback path. Signing in inside a container: docs/auth.md.
Sign in first. All apps start the same command: sourcebolt serve. If sourcebolt is not on your PATH, use the full path to the program instead (on Windows, for example C:\\Users\\you\\AppData\\Local\\Programs\\sourcebolt\\sourcebolt.exe inside JSON).
The JSON format used by Claude Desktop, Cursor and Windsurf:
File locations, VS Code JSON, Codex TOML, the HTTP mode and which snippets were tested: docs/clients.md.
Small tool budget? Add "--tools", "minimal" to args to expose only the 8 core tools.
Grouped by task. Every tool, option and state is in the generated reference, docs/tools.md.
Some options are not available yet, for example Drive and file uploads and the Studio option values no live capture has confirmed. They return a clear UNSUPPORTED_BY_TRANSPORT error instead of failing silently. SKILL.md tells an agent which tool to use when.
-browser Docker image).Turn the browser paths off with --no-browser-fallback. server_info shows which path served the last call. Details: docs/auth.md.
Is this an official Google product? No. It is an independent open-source project.
Does sourcebolt see my Google password? No. You sign in yourself, in a normal browser window. sourcebolt keeps only the session cookies, encrypted on your disk.
Can the AI read my cookies? No tool accepts or returns cookies or passwords. Sign-in works only from the command line.
Does it send my data anywhere else? No. It talks only to NotebookLM. URLs you add as sources are fetched by Google, not by your computer.
Is it free? Yes. Apache-2.0, no paid tier.
More answers: docs/faq.md. Something broken? docs/troubleshooting.md.
Start at docs/index.md. Highlights:
Bug reports and pull requests are welcome on GitHub Issues. Before you open one:
sourcebolt --version and sourcebolt doctor and include the output. Remove any cookies or tokens first.go vet ./... and go test ./....docs/tools.md is generated. Change the tool descriptions in code, then run go run ./tools/gendocs > docs/tools.md.Apache-2.0. See LICENSE and NOTICE.
sourcebolt is written from scratch. No source code from other projects was copied. Designs and knowledge of the NotebookLM wire format were learned, with thanks, from these MIT- or Apache-2.0-licensed projects (see NOTICE and research/notes/). Projects with no license or a copyleft license were read for behavior only, and nothing from them was used.
来源:README.md,提交 26d1cc3
Account settings
Read the account's quota windows, or set the output language when output_language is given. The language setting slot is not live-verified (the call is sent, but Google may ignore or reject it).
output_languageSign in
Not available through MCP: sign-in needs the local credential store, and cookies should not pass through a chat. Returns UNSUPPORTED_BY_TRANSPORT with the CLI command to run instead (sourcebolt login --import, --browser or --attach).
filehostmethod必填profileSign out
Not available through MCP: the credential store is only reachable from the CLI. Returns UNSUPPORTED_BY_TRANSPORT with the command to run instead (sourcebolt logout).
confirmprofileAsk a notebook
Ask a question about a notebook's sources. Streams partial text as progress notifications. Returns the answer, citations (source, cited text, UTF-16 offsets) and the conversation id. save_as_note also saves the answer as a note (note_id, or note_error when it could not be saved). wait=false returns a job_id; poll with chat_status. Not retried after sending.
waitsourcesnotebook必填question必填save_as_noteconversation_idnew_conversationConfigure chat
Change a notebook's chat settings: mode (default, learning_guide, or custom with custom_prompt) and response_length (default, longer or shorter). Unset fields keep their value. mode default with response_length default resets the notebook to the web app's defaults.
modenotebook必填custom_promptresponse_lengthChat history
Read a notebook conversation (oldest turn first within a page), with cursor paging. format=markdown adds a rendered transcript. Turn layout is not yet live-verified.
limitcursorformatnotebook必填conversation_idChat job status
Status and result of a detached chat_ask (wait=false): running, done, failed or cancelled. Jobs live in memory and are dropped an hour after they finish or when the server restarts.
job_id必填Delete
Delete notebooks, sources, notes, artifacts, chat history, labels or collections. Without confirm:true it only returns a preview of what would be deleted and changes nothing. Items are matched strictly (exact id, unique id prefix or exact title) against a fresh list. source, note and chat_history need notebook; chat_history deletes the whole history of the given conversations; it reaches only the newest 20 conversations of a notebook, and its preview shows their created and updated times and, when the whole history can be read, the first question. Kinds artifact, label and collection are not available yet and return UNSUPPORTED_BY_TRANSPORT.
ids必填kind必填confirmnotebookCancel job
Cancel a running detached job (chat_ask with wait=false, deep research). For an ask with a known conversation the server-side generation is also stopped, best effort.
job_id必填List labels
List a notebook's source labels with emoji and the ids of the sources in each. Collections are not available yet.
scopenotebook必填Update label
Rename a label, set its emoji, or add/remove sources. Actions auto and create (and notebook collections) are not available yet and return UNSUPPORTED_BY_TRANSPORT. Payload shapes are not live-verified.
nameemojiitemslabel必填scopeaction必填notebook必填List notes
List the notes of a notebook with id, title and content. Deleted notes are not shown.
notebook必填include_mind_mapsSave note
Create a note, or update an existing one (note = id or title). from_turn (save a chat turn as a note) is not available yet and returns UNSUPPORTED_BY_TRANSPORT.
notetitlecontentnotebook必填from_turnCreate notebook
Create a notebook with a title and optionally add sources in the same call (same items as source_add). The create call is sent once and never retried. emoji is accepted but ignored (no known wire slot). If the rename or the source add fails, the notebook still exists and its id is returned with warnings.
emojititle必填sourcesList notebooks
List NotebookLM notebooks with id, title, source count and ownership. Filter by title and scope. Returns 20 by default; has_more says whether to page with offset. Cached 30 s.
limitqueryscopeoffsetrefreshOpen notebook
Open one notebook by id or title: its sources with status, summary and suggested questions.
notebook必填Update notebook
Rename a notebook (title, verified by read-back) and/or drop it from the recently viewed list (remove_from_recent). emoji, pinned, alias and tags are not available yet and are ignored with a note.
tagsaliasemojititlepinnednotebook必填remove_from_recentImport research
Import research candidates as notebook sources, by urls (from research_status), report, or all. Candidates are matched by URL against a fresh read, so results reordered since research_status still import the intended ones; an unknown URL is NOT_FOUND. Candidates already in the notebook are skipped, so a retry is safe. Reports added, skipped and failed per candidate.
alljob必填urlsreportnotebook必填Start research
Start a web or Drive research job in a notebook (fast or deep). Returns a job handle; poll with research_status, then import with research_import. Queries under 4 words are rejected unless force is true. Mode discover is not yet available (UNSUPPORTED_BY_TRANSPORT).
modeforcequery必填corpusnotebook必填Research status
Check research jobs of a notebook and list their candidates (pick them by url in research_import). With wait_seconds (0-120) polls every 3 s, reporting progress, until the job is done.
jobnotebook必填wait_secondsinclude_reportServer info
Show the sourcebolt version, active Google profile, NotebookLM host, enabled tools and which transport served the last call. No Google call unless include_usage is set.
include_usageShare status
Show who a notebook is shared with and whether the link is public.
notebook必填Update sharing
Change notebook sharing: link visibility (public) and per-user roles (viewer, editor, remove). Widening access or removing people requires confirm:true; without it a preview is returned and nothing is sent. The link setting and the user changes are sent as two calls; if only one applies, status is partial and parts says which applied and which failed. Payload shapes are not live-verified. view_level and artifact sharing are not available yet.
usersnotifypublicconfirmmessageartifactnotebook必填view_levelAdd sources
Add sources to a notebook: public URLs (YouTube auto-detected) and pasted text, in one call. Returns a per-item outcome. Drive and file items are not yet available (UNSUPPORTED_BY_TRANSPORT). URLs to private or internal addresses are rejected.
items必填notebook必填List sources
List a notebook's sources with type and processing status; optionally filter by status.
statusnotebook必填Read source
Read a source's full text, markdown, or guide (summary and keywords), paged by character offset (max_chars default 20000; see truncated and next_offset).
modeoffsetsource必填notebook必填max_charsUpdate source
Rename a source (title) and/or check whether it is up to date (check_freshness). refresh is not yet available (UNSUPPORTED_BY_TRANSPORT).
titlesource必填refreshnotebook必填check_freshnessGenerate studio artifact
Generate a Studio artifact: audio, video, report, interactive_report, slide_deck, mind_map, quiz, flashcards, infographic or data_table. Each kind takes only the option values a live capture has proven (the enums); other values the web app offers return UNSUPPORTED_BY_TRANSPORT naming the option, before any call. Omitted options take the web app's defaults. instructions is optional for audio, video, slide_deck and quiz, required for report, mind_map, flashcards and data_table, and refused by infographic and interactive_report (each as captured). video.generate_later asks for deferred generation (cinematic format only). report needs report.title and report.description plus instructions as the prompt (suggest surface report returns ready-made triples). Checks the account quota first and returns a QUOTA error when it is used up. Artifacts are built from the notebook's sources only, not notes (the web app can add notes; that is not supported). Returns the new artifact as pending; poll studio_list for its status. Not retried after sending.
kind必填quizaudiovideoreportsourceslanguagenotebook必填flashcardsslide_deckinfographicinstructionsList studio artifacts
List a notebook's Studio artifacts (audio, video, report, slide_deck, mind_map, quiz, flashcards, infographic, data_table) with kind and status (pending while queued or generating, then ready or failed). Pass artifact to read one with its interactive content (HTML or mind-map tree) when Google has any.
kindstatusartifactnotebook必填Suggestions
Suggested prompts for a surface: chat, report or studio_options. The followups surface is not yet available (UNSUPPORTED_BY_TRANSPORT until a live capture pins it).
querysourcessurface必填notebook已满足适用检查项的 90%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
irm https://raw.githubusercontent.com/candidloom-hub/sourcebolt/main/install.ps1 | iexcurl -fsSL https://raw.githubusercontent.com/candidloom-hub/sourcebolt/main/install.sh | shsourcebolt login --attach http://127.0.0.1:9222sourcebolt doctorclaude mcp add sourcebolt -- sourcebolt serve/plugin install sourcebolt --marketplace candidloom-hub/sourceboltirm https://raw.githubusercontent.com/candidloom-hub/sourcebolt/main/install.ps1 | iex # Windows PowerShellcurl -fsSL https://raw.githubusercontent.com/candidloom-hub/sourcebolt/main/install.sh | sh # macOS, Linux$dir = "$env:LOCALAPPDATA\Programs\sourcebolt"New-Item -ItemType Directory -Force $dir | Out-NullInvoke-WebRequest https://github.com/candidloom-hub/sourcebolt/releases/download/v0.3.3/sourcebolt_0.3.3_windows_amd64.zip -OutFile "$env:TEMP\sourcebolt.zip"Expand-Archive "$env:TEMP\sourcebolt.zip" -DestinationPath $dir -Force[Environment]::SetEnvironmentVariable("Path", [Environment]::GetEnvironmentVariable("Path", "User") + ";$dir", "User")OS=linux ARCH=amd64curl -fsSLO "https://github.com/candidloom-hub/sourcebolt/releases/download/v0.3.3/sourcebolt_0.3.3_${OS}_${ARCH}.tar.gz"tar -xzf "sourcebolt_0.3.3_${OS}_${ARCH}.tar.gz" sourceboltmkdir -p ~/.local/bin && mv sourcebolt ~/.local/bin/sourcebolt --versiongo install github.com/candidloom-hub/sourcebolt/cmd/sourcebolt@latestdocker run -i --rm -v sourcebolt-config:/config ghcr.io/candidloom-hub/sourcebolt:0.3.3{ "mcpServers": { "sourcebolt": { "command": "sourcebolt", "args": ["serve"] } }}