Notebooklm MCP Secure
Security-hardened NotebookLM MCP with post-quantum encryption
Connector by Pantheon-Security · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/pantheon-security-notebooklm-mcp-secure
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 33 read · 17 write · 6 delete · 8 not yet classified
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Tools by what they do 64
Read from the source code; the running server may list different tools.
Read 33 · Look things up without changing anything.
ask_questioncleanup_datacollect_audit_evidencecompliance_dashboardcompliance_scoredeep_researchgemini_queryget_audio_statusget_consent_statusget_data_tableget_healthget_incident_status
Show 21 more tools
get_library_statsget_notebookget_notebook_chat_historyget_policyget_project_infoget_query_historyget_quotaget_research_statusget_video_statuslist_documentslist_evidence_packageslist_notebookslist_policieslist_sessionslist_sourceslist_webhooksquery_chunked_documentquery_documentsearch_notebooksverify_audit_log_integrityverify_evidence_integrity
Write 17 · Create, change, send or run things.
add_folderadd_notebookadd_sourcebatch_create_notebooksclose_sessionconfigure_webhookcreate_notebookdownload_audiogrant_consentrun_health_checkselect_notebookset_quota_tier
Show 5 more tools
submit_dsarsync_librarytest_webhookupdate_notebookupload_document
Delete 6 · Delete, drop, revoke or wipe things.
delete_documentremove_notebookremove_sourceremove_webhookreset_sessionrevoke_consent
Not yet classified 8 · We could not tell from the name and description.
export_libraryexport_user_datagenerate_audio_overviewgenerate_compliance_reportgenerate_data_tablegenerate_video_overviewreport_security_incidentrequest_data_erasure
Network hosts it talks to 8
accounts.google.com· found in codegithub.com· found in codehooks.slack.com· found in codenotebook.google.com· found in codenotebooklm.google.com· found in codeowasp.org· found in codepantheonsecurity.io· found in codereact.dev· found in code
Files it touches
/home/ross-churchill/Documents/notebooklm-mcp-secure/.medusa.yml/home/ross-churchill/Documents/notebooklm-mcp-secure/package.json/home/ross-churchill/Documents/notebooklm-mcp-secure/src/index.ts/home/ross-churchill/Documents/notebooklm-mcp-secure/src/tools/definitions/ask-question.ts/home/ross-churchill/Documents/notebooklm-mcp-secure/src/tools/definitions/system.ts/home/ross-churchill/Documents/notebooklm-mcp-secure/src/utils/secure-memory.ts/home/ross-churchill/Documents/notebooklm-mcp-secure/tests/secure-memory.test.ts/tmp/chat-history.json/tmp/notebooklm-sources-discovery.png/var/log- Your home directory (~)
- Any path the agent passes to its tools
Tools (64)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
add_folderAdd all files from a local folder as sources to a NotebookLM notebook. ## Use this when - User wants to add a folder of PDFs, docs, or text files to a notebook - Adding 5+ files at once (faster than calling add_source repeatedly) ## Behaviour - Scans the folder for supported file types (default: .pdf, .txt, .md, .docx) - Adds each file one-by-one with progress updates - Skips files that fail and reports them in the summary - If file count exceeds your tier's source limit, auto-splits into multiple notebooks ## Dry Run First (recommended for large folders) ```json { "folder_path": "/path/to/…
add_notebookAdd a NotebookLM notebook to the local library after explicit user confirmation. Provide the NotebookLM URL plus concise metadata: name, description, topics, and optional use cases/tags. Do not infer missing metadata; ask the user first.
add_sourceAdd a source to an existing NotebookLM notebook. If neither `notebook_id` nor `notebook_url` is provided, this tool uses the currently active notebook from the local library. ## Source Types - **url**: Web page URL - **text**: Text content (paste) - **file**: Local file path (PDF, DOCX, TXT) ## Example ```json { "notebook_id": "my-notebook", "source": { "type": "url", "value": "https://docs.example.com/api" } } ```
ask_questionDescription is built at runtime.
batch_create_notebooksCreate multiple NotebookLM notebooks in one operation. ## What This Tool Does - Creates up to 10 notebooks in a single batch operation - Reports progress for each notebook - Optionally continues on error or stops on first failure - Auto-adds created notebooks to your library ## Example Usage ```json { "notebooks": [ { "name": "React Documentation", "sources": [ { "type": "url", "value": "https://react.dev/reference" } ], "topics": ["react", "frontend"] }, { "name": "Node.js API", "sources": [ { "type": "url", "value": "https:/…
cleanup_dataPreview or delete NotebookLM MCP data across known install, browser, cache, log, backup, and trash locations. Run first with confirm=false, then rerun with confirm=true after review. Close all Chrome/Chromium instances before deleting browser data. Set preserve_library=true to keep the local notebook library. Optional categories (Claude project caches, editor logs, trash) are previewed but NOT deleted unless include_optional=true.
close_sessionClose a specific session by session ID. Ask before closing if the user might still need it.
collect_audit_evidenceCollect evidence package for compliance audits. Creates a verifiable package with checksums.
compliance_dashboardGet comprehensive compliance dashboard with GDPR, SOC2, and CSSF status. Shows overall compliance score, health status, and key metrics.
compliance_scoreGet current compliance score (0-100) for each regulation and overall. Includes detailed breakdown by category.
configure_webhookAdd or update a webhook endpoint for event notifications. ## Supported Formats - generic: Standard JSON payload - slack: Slack webhook format - discord: Discord webhook format - teams: Microsoft Teams format ## Events Subscribe to specific events or use '*' for all events: - question_answered, notebook_created, notebook_deleted - source_added, source_removed - session_created, session_expired - auth_required, rate_limit_hit, security_incident - quota_warning, audio_generated, batch_complete ## Example ```json { "name": "Slack Notifications", "url": "https://hooks.slack.com/...", "form…
create_notebookCreate a new NotebookLM notebook with sources programmatically. ## What This Tool Does - Creates a NEW notebook in your NotebookLM account - Uploads sources (URLs, text, files) to the notebook - Returns the notebook URL for immediate use - Optionally adds to your local library ## Supported Source Types - **url**: Web page URL (documentation, articles, etc.) - **text**: Raw text content (code, notes, etc.) - **file**: Local file path (PDF, DOCX, TXT) ## Example Usage Create a notebook from API documentation: ```json { "name": "React Docs", "sources": [ { "type": "url", "value": "htt…
deep_researchPerform deep research using Gemini's Deep Research agent. > **⚠️ REQUIRES GEMINI_API_KEY** - Do NOT use this tool unless GEMINI_API_KEY is configured. For notebook queries, use ask_question instead (no API key needed). This runs in the background and can take 1-5 minutes to complete. ## When to Use - ONLY when GEMINI_API_KEY is configured - You need comprehensive research on a topic NOT in your notebooks - No specific NotebookLM notebook is relevant ## When NOT to Use - **Use ask_question instead** for queries about your NotebookLM notebooks (no API key needed) - If GEMINI_API_KEY is not s…
delete_documentDelete an uploaded document from Gemini. ## What This Does - Removes a file from Gemini Files API - File will no longer be available for queries - Frees up storage space ## Notes - Files auto-delete after 48 hours anyway - Use this to immediately remove sensitive documents ## Requirements - GEMINI_API_KEY environment variable must be set
download_audioDownload the generated audio overview file. ## Requirements - Audio must be in "ready" status - Use get_audio_status to check before downloading ## Output Downloads to specified path or ~/notebooklm-audio-{timestamp}.mp3 ## Example ```json { "notebook_id": "my-research", "output_path": "/path/to/save/podcast.mp3" } ```
Show 49 more tools
export_libraryExport your notebook library to a backup file. ## Formats - **json**: Full backup with all metadata (recommended for restore) - **csv**: Simple list for spreadsheets (name, url, topics, last_used) ## Default Location If no output_path specified, saves to: ~/notebooklm-library-backup-{date}.{format} ## Example Usage ```json { "format": "json" } ``` Export to specific location: ```json { "format": "csv", "output_path": "/path/to/backup.csv" } ```
export_user_dataExport all user data in machine-readable format (GDPR Article 20 - Right to Data Portability).
gemini_queryQuick query to Gemini model with optional grounding tools. > **⚠️ REQUIRES GEMINI_API_KEY** - Do NOT use this tool unless GEMINI_API_KEY is configured. For notebook queries, use ask_question instead (no API key needed). Supports: - Google Search grounding for current information - Code execution for calculations - URL analysis for web content ## Requirements - GEMINI_API_KEY environment variable MUST be set ## When to Use (ONLY if API key is configured) - Quick factual questions NOT in your notebooks - Current events (with google_search tool) - Code calculations (with code_execution tool) …
generate_audio_overviewGenerate an AI-powered audio overview (podcast-style) for a notebook. ## What This Tool Does - Triggers NotebookLM's audio overview generation - Audio overviews are ~5-15 minute podcast-style summaries - Generation takes 2-5 minutes typically - Returns immediately with status (check with get_audio_status) ## Requirements - Notebook must have at least one source - Audio generation may not be available on all notebooks ## Example ```json { "notebook_id": "my-research" } ```
generate_compliance_reportGenerate a compliance audit report. Supports multiple report types and formats.
generate_data_tableGenerate a structured Data Table from notebook sources. ## What This Tool Does - Opens the Studio panel in NotebookLM - Generates a structured tabular extraction from notebook content - Tables organize key information from sources into rows and columns - Generation typically takes 1-3 minutes - Returns immediately with status (check with get_data_table) ## Requirements - Notebook must have at least one source - Authentication required (run setup_auth first) ## Example ```json { "notebook_id": "my-research" } ```
generate_video_overviewGenerate an AI-powered Video Overview for a notebook. ## What This Tool Does - Opens the Studio panel in NotebookLM - Generates a visual video summary of notebook content - Supports multiple visual styles and formats - Generation takes 3-10 minutes typically - Returns immediately with status (check with get_video_status) - NotebookLM does not currently expose a supported video download path through this MCP server; use the NotebookLM UI to download ready videos. ## Visual Styles - **auto-select** — Let NotebookLM choose the best style (default) - **custom** — Custom visual style - **classic*…
get_audio_statusCheck the audio overview generation status for a notebook. ## Returns - status: "not_started" | "generating" | "ready" | "failed" | "unknown" - progress: Generation progress (0-100) if generating - duration: Audio duration in seconds if ready ## Example ```json { "notebook_id": "my-research" } ```
get_consent_statusGet current consent status for all data processing purposes.
get_data_tableExtract the generated Data Table content from a notebook. ## What This Tool Does - Navigates to the notebook's Studio panel - Extracts the table data (headers and rows) as structured JSON - Returns the full table content for analysis ## Returns - table.headers: Column headers - table.rows: Array of row arrays - table.totalRows: Number of rows - table.totalColumns: Number of columns ## Requirements - Data table must be generated first (use generate_data_table) - Returns error if table is not yet ready ## Example ```json { "notebook_id": "my-research" } ```
get_healthGet server health status including authentication state, active sessions, and configuration. Use this to verify the server is ready before starting research workflows. **Deep Check Mode (v2026.1.1)** Set `deep_check: true` to actually verify the NotebookLM chat UI loads. This catches stale sessions where cookies exist but the UI won't load. Returns `chat_ui_accessible: true/false`. If authenticated=false and having persistent issues: Suggest to the user that a fresh start (cleanup_data with preserve_library=true, followed by setup_auth) may help, and ask for their confirmation before running…
get_incident_statusGet status of security incidents including open, investigating, and resolved counts.
get_library_statsGet statistics about your notebook library (total notebooks, usage, etc.)
get_notebookGet detailed information about a specific notebook by ID
get_notebook_chat_historyExtract conversation history from a NotebookLM notebook's chat interface. This tool uses browser automation to navigate to a notebook and extract all Q&A pairs from the chat UI. This is useful for: - Recovering previous research conversations - Auditing what queries were made in a notebook - Understanding quota usage from direct NotebookLM browser usage - Resuming context from previous sessions ## Context Management Use `preview_only: true` to get a quick count before extracting full content. Use `output_file` to export to JSON instead of returning to context. Use `offset` with `limit` for p…
get_policyGet detailed information about a specific compliance policy.
get_project_infoGet current project context and library location. Detects the project from the current working directory using: 1. Git repository root (looks for .git directory) 2. package.json location (for npm projects) 3. Current directory as fallback Returns: - project: { id, name, path, type } or null if using global library - library_path: Path to the active library.json file - is_project_library: Whether using per-project or global library Use this to understand which library context is active.
get_query_historyRetrieve past NotebookLM queries and answers for reviewing research sessions. Use this tool to: - Review past research conversations - Find specific information from previous queries - Track which notebooks and sessions you've used - Search through question and answer content Returns query entries with question, answer, notebook, session, and timing info.
get_quotaGet current quota status including license tier, usage, and limits. Returns: - tier: 'free', 'pro', 'ultra', or 'unknown' - notebooks: used/limit/remaining/percent - sources: limit per notebook - queries: used/limit/remaining/percent/should_stop/reset_time - warnings: array of warning messages Quota Limits by Tier: - Free: 100 notebooks, 50 sources/notebook, 50 queries/day - Pro: 500 notebooks, 300 sources/notebook, 500 queries/day - Ultra: 500 notebooks, 600 sources/notebook, 5000 queries/day Use sync=true to fetch actual quota from Google's NotebookLM UI (requires browser). Without sync, …
get_research_statusCheck the status of a background deep research task. Use this when you started deep_research with wait_for_completion=false. ## Returns - status: pending | running | completed | failed - answer: The research result (if completed) - error: Error message (if failed)
get_video_statusCheck the Video Overview generation status for a notebook. ## Returns - status: "not_started" | "generating" | "ready" | "failed" | "unknown" - progress: Generation progress (0-100) if generating - duration: Video duration in seconds if ready ## Example ```json { "notebook_id": "my-research" } ```
grant_consentGrant consent for a specific data processing purpose.
list_documentsList all documents uploaded to Gemini. ## What This Does - Shows all files currently stored in Gemini Files API - Files expire 48 hours after upload - Returns file names, sizes, and expiration times ## Use Cases - Check what documents are available for querying - Find file IDs for query_document - Monitor storage usage ## Requirements - GEMINI_API_KEY environment variable must be set
list_evidence_packagesList all saved evidence packages with their metadata.
list_notebooksList all library notebooks with metadata (name, topics, use cases, URL). Use this to present options, then ask which notebook to use for the task.
list_policiesList all compliance policies with their status and review dates.
list_sessionsList all active sessions with stats (age, message count, last activity). Use to continue the most relevant session instead of starting from scratch.
list_sourcesList sources in a notebook. Provide notebook_id or notebook_url; if neither is provided, the active notebook from the local library is used. Returns source id, title, type, and status.
list_webhooksList all configured webhooks with their status and statistics. Returns array of webhooks with: id, name, url, enabled, events, format.
query_chunked_documentQuery a large document that was automatically chunked during upload. ## What This Does - Queries each chunk of a large document - Aggregates results into a single coherent answer - Handles documents of any size (1000+ pages) ## When to Use - After upload_document returns wasChunked=true - When you have multiple chunk file IDs to query together - For comprehensive analysis of large PDFs ## How It Works 1. Queries each chunk with your question 2. Collects answers from all chunks 3. Uses Gemini to synthesize a unified response 4. Returns aggregated answer with all sources ## Example If upload…
query_documentAsk questions about an uploaded document. ## What This Does - Queries a document previously uploaded with upload_document - Uses Gemini's document understanding (text, images, charts, tables) - Returns answers grounded in the document content ## Features - Full document understanding (not just text extraction) - Can analyze charts, diagrams, and tables in PDFs - Multi-document queries (pass additional file IDs) - Fast API-based (no browser automation) ## When to Use - Quick document analysis without browser - Comparing multiple documents - Extracting specific information ## Requirements - …
remove_notebookDangerous — requires explicit user confirmation. ## Confirmation Workflow 1) User requests removal ("Remove the React notebook") 2) Look up full name to confirm 3) Ask: "Remove '[notebook_name]' from your library? (Does not delete the actual NotebookLM notebook)" 4) Only on explicit "Yes" → call remove_notebook Never remove without permission or based on assumptions. Example: User: "Delete the old React notebook" You: "Remove 'React Best Practices' from your library?" User: "Yes" → call remove_notebook
remove_sourceRemove a source from a NotebookLM notebook. If neither `notebook_id` nor `notebook_url` is provided, this tool uses the currently active notebook from the local library. ## Usage 1. First call list_sources to get source IDs 2. Then call remove_source with the source ID ## Example ```json { "notebook_id": "my-notebook", "source_id": "source-0" } ```
remove_webhookRemove a configured webhook by ID.
report_security_incidentReport a security incident for investigation and tracking.
request_data_erasureRequest erasure of personal data (GDPR Article 17 - Right to Erasure). Creates an erasure request for review.
reset_sessionReset a session's chat history (keep same session ID). Use for a clean slate when the task changes; ask the user before resetting.
revoke_consentRevoke previously granted consent for a data processing purpose.
run_health_checkRun a comprehensive health check of all compliance components.
search_notebooksSearch library by query (name, description, topics, tags). Use to propose relevant notebooks for the task and then ask which to use.
select_notebookSet a notebook as the active default (used when ask_question has no notebook_id). ## When To Use - User switches context: "Let's work on React now" - User asks explicitly to activate a notebook - Obvious task change requires another notebook ## Auto-Switching - Safe to auto-switch if the context is clear and you announce it: "Switching to React notebook for this task..." - If ambiguous, ask: "Switch to [notebook] for this task?" ## Example User: "Now let's build the React frontend" You: "Switching to React notebook..." (call select_notebook)
set_quota_tierManually set your NotebookLM license tier. Use this if: - Auto-detection failed (shows 'unknown') - You want to override the detected tier - You upgraded/downgraded your plan Tiers: - free: 100 notebooks, 50 sources, 50 queries/day - pro: 500 notebooks, 300 sources, 500 queries/day - ultra: 500 notebooks, 600 sources, 5000 queries/day
submit_dsarSubmit a Data Subject Access Request (GDPR Article 15-17, 20). Initiates the DSAR workflow.
sync_librarySync your local library with actual NotebookLM notebooks. ## What This Tool Does - Navigates to NotebookLM and extracts all your notebooks - Compares with local library entries - Detects stale entries (notebooks deleted or URLs changed) - Identifies notebooks not in your library - Optionally auto-removes stale entries ## When To Use - Library seems out of sync with NotebookLM - After deleting notebooks in NotebookLM - To discover new notebooks to add - Before setting up automation workflows ## Output Returns a sync report with: - **matched**: Library entries that match actual notebooks - **…
test_webhookSend a test event to a webhook to verify it's working. Sends a sample 'question_answered' event and returns success/failure.
update_notebookUpdate notebook metadata based on user intent. ## Pattern 1) Identify target notebook and fields (topics, description, use_cases, tags, url) 2) Propose the exact change back to the user 3) After explicit confirmation, call this tool ## Examples - User: "React notebook also covers Next.js 14" You: "Add 'Next.js 14' to topics for React?" User: "Yes" → call update_notebook - User: "Include error handling in n8n description" You: "Update the n8n description to mention error handling?" User: "Yes" → call update_notebook Tip: You may update multiple fields at once if requested.
upload_documentUpload a document (PDF, text, etc.) to Gemini for querying. > **⚠️ REQUIRES GEMINI_API_KEY** - For adding documents to NotebookLM notebooks (no API key), use create_notebook or add_source instead. ## What This Does - Uploads a local file to Gemini's Files API - File is retained for 48 hours - Returns a file ID for use with query_document ## Auto-Chunking for Large PDFs (v1.10.0) - PDFs over 50MB or 1000 pages are automatically split into chunks - Each chunk is uploaded separately and tracked - Use query_chunked_document or pass all chunk IDs to query_document - Returns wasChunked=true and a…
verify_audit_log_integrityVerify the integrity of compliance audit logs using hash chain verification.
verify_evidence_integrityVerify the integrity of an evidence package using cryptographic checksums.
Signals
- Stars
- 87
- Forks
- 19
- Open issues
- 1
- Contributors
- 3
- Weekly downloads
- 92
- Last commit
- Sep 3, 2026 (1 month ago)
- Last release
- Sep 3, 2026 (1 month ago)
- Last package publish
- Aug 29, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.Pantheon-Security/notebooklm-mcp-secure- Version
- 2026.5.0
- Auth
- No auth
- Packages
- npm @pan-sec/notebooklm-mcp
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
Notebooklm MCP Secure. Agent Mart. https://agentmart.dev/connectors/pantheon-security-notebooklm-mcp-secure (last updated 2026-10-24)