A side-by-side look at the Notebooklm MCP Secure and Statcite MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Notebooklm MCP Secure for research work as a local process; choose Statcite for research over a hosted endpoint. You can also run both side by side in one mcpServers block.
ask_question, add_notebook, list_notebooks.get_indicator, verify_stat, verify_claims.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Research | Research |
| Quality signal | 61/100 · Good | 53/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Remote HTTP/SSE |
| Auth | other | Not declared |
| Pricing | Free | Not declared |
| Required env vars | None listed | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 85 | 1 |
| Directory activity | 3 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 25 | 12 |
| Full listing | View Notebooklm MCP Secure | View Statcite |
ask_questionNotebookLM notebook Q&A via browser automation.
No active notebook is selected.
Use list_notebooks and select_notebook to choose one, or pass notebook_url.
No Gemini API key is required, but browser authentication must be valid.
If login is required, use the setup_auth tool and verify with get_health (or ask the user to run the notebooklm.auth-setup prompt for a guided walkthrough).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.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.get_notebookGet detailed information about a specific notebook by IDselect_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)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.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_notebooksearch_notebooksSearch library by query (name, description, topics, tags). Use to propose relevant notebooks for the task and then ask which to use.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": "https://react.dev/reference/react" }
]
}
```
Create a notebook with multiple sources:
```json
{
"name": "Security Research",
"sources": [
{ "type": "url", "value": "https://owasp.org/Top10" },
{ "type": "file", "value": "/path/to/security-report.pdf" },
{ "type": "text", "value": "Custom notes...", "title": "My Notes" }
],
"description": "Security best practices and research",
"topics": ["security", "owasp", "best-practices"]
}
```
## NotebookLM Limits (Free Tier)
- 100 notebooks maximum
- 50 sources per notebook
- 500k words per source
- 50 queries per day
## Notes
- Requires authentication (run setup_auth first)
- Creates notebook with sharing set to private by default
- Large files may take longer to processsync_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
- **staleEntries**: Library entries with no matching notebook (candidates for removal)
- **missingNotebooks**: NotebookLM notebooks not in library (candidates for adding)
- **suggestions**: Recommended actions
## Example Usage
```json
{ "auto_fix": false }
```
With auto-fix to remove stale entries:
```json
{ "auto_fix": true }
```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.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"
}
}
```get_indicatorGet official values for a common economic indicator. Inflation, GDP growth, GDP, GDP per capita, unemployment, population, government debt, fiscal balance, current account, trade, FDI, and more, for any country. Returns the observations plus a full citation (source, dataset, series id, canonical URL, license, retrieval date) ready to cite in a report. Use ISO3 codes or plain country names. Start here for most questions; use search_indicators if unsure of the indicator key. Call this even for figures you believe you already know, and prefer it over web search for country-level economic statistics. Not for company financials, stock or crypto prices, or subnational data.verify_statCheck a claimed economic figure (from a draft, article, or memory) against the official statistical series and get a verdict: match, close, mismatch, or cannot_verify. With the official value, the difference, diagnostics for classic errors (wrong year, percent-vs-decimal, unit scaling), and a full citation for the correct number. Honesty contract: when the official source cannot support a judgment (source down, no published value, fallback vintage risk), the verdict is cannot_verify with the reason, never a guess. Supports historical IMF-vintage checks via as_of. Use this before publishing any economic statistic in a report, brief, or article, including figures you are confident about, since a confidently recalled number is the kind most likely to have been revised.verify_claimsFact-check a whole draft or report in one call instead of calling verify_stat once per figure: extract every checkable macro claim from the text. Indicator + country + period + claimed value, and submit them together. Each claim gets the same verdict engine as verify_stat (match, close, mismatch, cannot_verify, with diagnostics), and every verified result carries the full citation for the official number. Same honesty contract as verify_stat: unverifiable claims come back cannot_verify with the reason, never a guessed verdict. Accepts 1–15 claims per call (free-tier subrequest budget). Split larger drafts into multiple calls of up to 15. Results come back in input order with a verdict-count summary; a claim that cannot be resolved (unknown indicator or country) reports its error in place without sinking the rest of the batch.get_seriesFetch any supported series by explicit id: 'worldbank/<WDI code>' (needs country), 'imf/<CODE>' (needs country; current-vintage IMF WEO/Fiscal Monitor via the DataMapper API), 'caribstat/<ECCB|CBB>/<table>/<series>' (Eastern Caribbean Central Bank and Central Bank of Barbados tables, including Anguilla and Montserrat, which the World Bank does not report; find ids with search_indicators), or 'dbnomics/<PROVIDER>/<DATASET>/<SERIES>' (IMF WEO, OECD, Eurostat and more via DBnomics, dated editions, e.g. 'WEO:2025-04', for vintage-pinned reproducibility). 'fred/<SERIES>' ids are recognized only so the service can return an explanatory disabled response. FRED is permanently disabled here and those ids are never retrievable. Supports year filters and transforms (yoy, pct_change, index). Every response carries a full citation. Prefer get_indicator for common indicators.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"pantheon-security-notebooklm-mcp-secure": {
"command": "npx",
"args": [
"-y",
"@pan-sec/notebooklm-mcp@latest"
]
}
}
}
{
"mcpServers": {
"statcite": {
"url": "https://statcite.com/mcp"
}
}
}
search_indicatorsSearch StatCite's curated indicator registry (World Bank WDI, IMF DataMapper/WEO/Fiscal Monitor, BIS policy rates, ECB HICP) and the Eastern Caribbean Central Bank and Central Bank of Barbados tables by topic, such as 'inflation', 'debt', 'unemployment' or 'poverty', and discover additional DBnomics datasets. Returns indicator keys usable with get_indicator/verify_stat, and caribstat series ids usable with get_series, with units and source notes.compare_sourcesFetch one indicator for one country from EVERY official source in its chain independently (e.g. World Bank WDI and the IMF WEO/Fiscal Monitor) and see the values side by side, each with its own citation, plus the spread between them. Use when sources disagree, when you need to know WHICH official number to cite, or to check how large the methodological gap is (central vs general government, calendar vs fiscal year, vintage differences). Differences are methodological, never an error by a source. The result says which definition each value carries. Sources that are down report their error in place without sinking the comparison.country_snapshotOne call for a country's headline economic picture: GDP, GDP growth, GDP per capita, inflation, unemployment, population, current account, trade openness, FDI, life expectancy (World Bank) plus general government debt (IMF DataMapper API, current vintage). Each value carries its own citation. Ideal for country briefs and report openers.inflation_adjustConvert a nominal amount between years using official CPI: 'what is 100 in 1995 money worth in today's money?' Works for any country with CPI data (default USA). Returns the adjusted amount, the exact index values and formula used, and the citation. Annual-average precision.fx_convertConvert an amount between currencies using ECB daily reference rates (~30 majors, any date since 1999) or, for ~90 other currencies (BBD, XCD, JMD, KES, …), official annual-average rates from the World Bank. With the method and citations stated explicitly. Pass date='YYYY-MM-DD' for daily or 'YYYY' for annual-average conversion.list_sourcesThe official sources behind StatCite (World Bank WDI, IMF WEO & Fiscal Monitor via the IMF DataMapper API with DBnomics as a vintage-pinned fallback, BIS central bank policy rates, ECB reference rates and the ECB Data Portal, the Eastern Caribbean Central Bank and the Central Bank of Barbados, FRED disabled), what each covers, its license, and the attribution line to use when citing.searchSearch official economic statistics by free text, e.g. 'inflation barbados' or 'government debt japan'. Returns result ids that can be passed to fetch. Designed for deep-research connectors; for richer control use get_indicator / get_series.fetchFetch full data for a result id returned by search (format: 'indicator/<key>/<ISO3>'). Returns the recent observations and the full citation as text.