Zotero MCP: Turn Your Reference Library into an AI Research Assistant
A reference manager and a blank chat window solve different problems, and treating them as interchangeable is why so many DIY research-AI setups feel unreliable within a week. Zotero MCP turns an already-curated library into a Zotero AI research assistant that Claude, ChatGPT, or any Model Context Protocol client can query directly, so retrieval starts at the shelf a researcher already built rather than the open internet. That one change — bounding the assistant to a library instead of a blank prompt — is the entire argument for treating it as infrastructure rather than a convenience feature.
What the Server Actually Connects
Zotero MCP is an open-source server, built by developer Steven Yu and released under the MIT license, that exposes a Zotero library to any client speaking the Model Context Protocol: Claude Desktop, Claude Code, ChatGPT, Cursor, and similar tools. As of mid-September 2026 the project has passed 5,000 stars on GitHub with a commit landing that same week, a reasonable proxy for active maintenance rather than an abandoned weekend script (github.com/54yyyu/zotero-mcp). It runs in two modes: local, reading straight from the zotero.sqlite file on disk, or web, writing through Zotero's hosted API — useful when a library needs to stay in sync across a lab rather than one laptop.
What It Can Search, Read, and Write
The feature set matters more than the wrapper around it. Search covers title, author, tag, and collection metadata, plus an optional semantic mode running on local embeddings or a connected OpenAI, Gemini, or Ollama model. Reading extracts full text, BibTeX records, and specific page ranges from PDFs, falling back to page images when a scanned figure or equation would otherwise come out as garbled text. Writing covers adding a paper by DOI, URL, or ISBN, merging duplicate entries, and placing a highlight or note on the exact passage it refers to instead of a vague page number.
The Setup Gate Most People Skip
None of this works until Zotero's local API is switched on, and the toggle is easy to miss: in Zotero 7 and later, it lives under Settings → Advanced → "Allow other applications on this computer to communicate with Zotero." Skip that step and the server reports a connection error that looks like a bug in the MCP client rather than a setting sitting one menu away in the reference manager. Write access on newer Zotero versions needs one further authorization step, run once from the command line, before the assistant can add or edit anything in the library itself.
Where the Boundary Still Matters
Bounding retrieval to a personal library removes one specific failure mode: the assistant cannot invent a citation to a paper that was never in the collection, because it has nothing to invent from. It does not remove two others. Semantic search quality is capped by whichever embedding model was configured, so a thin or mismatched model returns thin or mismatched results without flagging that the search itself was weak. And nothing about the server checks whether a citation actually supports the sentence sitting next to it in a draft — that is a downstream question, not a retrieval one, covered in more depth in Source-Grounded AI for Researchers.
The same principle shows up on the synthesis side of the workflow: NotebookLM works the same way once a source set is uploaded — grounded, but only as complete as whatever was fed into it. Zotero MCP is the piece that makes assembling that source set less manual in the first place, since the library search and the citation-answering step run through the same connection.
Everything pulled out of a Zotero library through this server is still worth a downstream check before it reaches a manuscript. CiteCheck, an open-source citation verifier, does exactly that: it cross-checks a reference list's bibliographic metadata against CrossRef, PubMed, Semantic Scholar, and OpenAlex. It is MIT-licensed and installable straight from the source repository at github.com/tuyentran-md/cite_checker while the PyPI listing catches up with the codebase.