Zoteus: search your Zotero library and cite with page numbers
A Zotero MCP server: agents search your library by keyword or meaning, quote PDFs with page numbers, format citations in any CSL style, add papers by DOI.
Project and installation docs
View projecthttps://github.com/oscardvs/zoteus
The worst part of writing with a model is invented citations: confident prose, with page numbers and quotes that don’t match the source. Zoteus connects the agent to your own Zotero library, so the passages it quotes come from your PDFs with page numbers, and references are formatted from real item data. It had only about 50 stars as of 2026-10-06, yet its README and docs are far more complete than most in this space.
What it does
- Search your library: hybrid keyword and semantic search over titles, abstracts, creators and tags, plus full-text search in PDFs and notes, with page numbers on every hit.
- Check the source:
zotero_get_fulltextreturns the passage with character offsets, nearest heading and page locator, andzotero_pdf_imagesrenders a PDF page as an image so figures and equations are visible too. - Citations and intake: citeproc-js formats bibliographies in any CSL style, a DOI or arXiv ID files a new item with metadata, and
zotero_importreads BibTeX, RIS and more. - Write-back and notes: create items, tag and organize, add highlights and notes with
zotero_annotate, and usezotero_scholarto check references, citing works and retractions via OpenAlex.
Who it’s for
- Grad students and academics with hundreds or thousands of items who need page-level evidence from the agent.
- Systematic-review teams that need evidence tables and correctly formatted references.
Setup
Needs Node.js and the Zotero desktop app running (allow other applications to communicate with Zotero under Advanced settings). In Claude Code:
claude mcp add --transport stdio zoteus -- npx -y @oscardvs/zoteus
Sync, group libraries and metadata edits also need ZOTERO_API_KEY.
Our take
There are several Zotero servers; this one stands out for how far it takes verifiability. Passages carry page numbers and offsets, quotes in evidence tables can’t drift from their source, and references go through standard citeproc-js. Reading a personal library needs no cloud key, so data stays local. Mind the write access: it can edit items, annotate and move things to the trash. Permanent deletion stays off unless ZOTEUS_ALLOW_DELETE=true, and ZOTEUS_READ_ONLY=true makes it read-only. Full-text semantic indexing is off by default; on a large library, turning it on with an embedding API gets expensive. The project is young, mostly one maintainer, with a paid hosted option. Licensed MIT.