Integrations — references, MCP servers, and APIs¶
Everything external is opt-in and declared in research-config.yml. Secrets always live in .env and are referenced as ${VARS} — never written into committed files.
Reference manager¶
Set references.provider. All citation-aware skills read through one interface, so the provider is swappable.
bibtex (default — works with any manager)¶
Export your library as BibTeX (or CSL-JSON / RIS) from any tool — Zotero, Mendeley, EndNote, Paperpile — and save it as the file named in references.bibtex_path (default references/library.bib, git-ignored). That's it: zero external service, works offline. The scripts/references/bibtex.py helper reads and looks up entries.
zotero (opt-in — richest, live library)¶
Uses the community zotero-mcp server for live search, full text, and PDFs.
- Install it:
pip install zotero-mcp(oruvx zotero-mcp). - Get an API key + your user id from https://www.zotero.org/settings/keys.
- Put
ZOTERO_API_KEY=…(andZOTERO_LIBRARY_ID=…) in.env; setreferences.zotero.user_idin the config. - Set
references.provider: zotero, re-run./setup.sh— the Zotero MCP block is written into.mcp.json.
mendeley (via .bib export)¶
There is no turnkey Mendeley MCP today. Mendeley offers a REST API (OAuth 2.0, app registration, 1-hour tokens), but wiring it is a project in itself. The supported path now:
- In Mendeley Reference Manager, export your library as BibTeX.
- Save it as
references/library.biband setreferences.provider: bibtex.
You get everything the drafting and literature skills need. A future mendeley module (a thin MCP wrapper over the REST API) is the place to add live sync — contributions welcome.
MCP servers — connect anything¶
.mcp.json is generated by ./setup.sh from your config, enabling only the connectors you turn on, with secrets as ${ENV} references. To add your own server:
- Copy a block from
.mcp.json.template(or write a new one) into a local edit of.mcp.json, or — better — add it tosettings.local.jsonso it survives re-renders. - Give it a name, point it at its
command/url, and add any secrets to.envas${VARS}. - Keep literal keys out of committed files. The
scrub_checkgate will flag them.
Common additions: a SQLite/DuckDB MCP (to let the assistant query your Tier-1 database), a filesystem MCP, or any domain-specific server your field provides.
Email digests (optional)¶
If you connect a Gmail MCP in your Claude account and set integrations.gmail.enabled: true, the (optional) scheduled digest job can draft a weekly literature summary to yourself. See the scheduled-jobs module for setup. Note: scheduled headless runs need the exact MCP tool name in their allowlist, or the step is silently skipped.