Zotero MCP
Connects a Zotero library to Claude and other agents: search papers, annotate, cite, and search by meaning
Medium risk
We rate an entry medium when the tool runs code, makes network calls or reads project files. Check what exactly it does before installing.
Why this level
- Can write to the Zotero library: add, merge, and remove entries
Install
Manual install
uv tool install zotero-mcp-serverCan be replaced with pip install zotero-mcp-server. Needs Python 3.10 or newer.
This is third-party code. Review the repository files before installing.
What it does
The server reads and writes a Zotero library: it searches by title, author, tag, or collection, by full text, or by meaning through embeddings. It reads metadata, BibTeX, full text, and individual PDF pages, and can send page images when text extraction garbles formulas and tables. It places highlights and area boxes on exact words, equations, or figures, writes notes, and reads annotations already made in Zotero. It can add papers by DOI, URL, ISBN, or BibTeX, merge duplicates, and manage collections and tags. It works locally against zotero.sqlite or through Zotero's web API.
Who it is for. For researchers and students who keep a Zotero library and want to discuss papers directly with an agent.
Good fit when
- You need to find papers in your library by topic or keywords
- You need a summary or breakdown of a specific paper
- You need to place annotations on exact PDF passages or gather citations
Not a fit when
- You do not use Zotero to store your papers
- You only need read-only access without a shell, in which case the plain MCP server is enough without the agent skill
Example request
Find papers on attention mechanisms in my library and highlight their key findingsLimitations
Local mode requires enabling the setting in Zotero 7 or newer that allows other applications to talk to it. Writes on older Zotero versions need a web API key and library ID. Semantic search and PDF handling install as separate optional extras.
How to disable. Remove the zotero entry from your client's MCP configuration, or uninstall the package with uv tool uninstall zotero-mcp-server.
MCP
- Transport
- stdio
- Authentication
- API key
| Environment variables | |
|---|---|
| ZOTERO_LOCAL | Enables local mode against zotero.sqlite instead of the web API |
| ZOTERO_API_KEY secret | Zotero web API key, needed for writes on Zotero versions older than 10 |
| ZOTERO_LIBRARY_ID | Zotero library ID for access through the web API |
Security check
- Can write to the Zotero library: add, merge, and remove entries
README in short
The README walks through a quick start: install via uv or pip, enable the local API in Zotero's settings, then either auto-configure Claude Desktop with zotero-mcp setup or edit the config by hand. It explains the choice between the full MCP server for shell-less clients and the lightweight zotero-cli agent skill for Claude Code, Cursor, Codex, Windsurf, Gemini CLI, and others. A table lists optional extras for semantic search, PDF handling, and Scite citation checks. MIT licensed.
FAQ
How does the agent skill differ from the MCP server?
The MCP server sends every tool's schema on each request, while the skill for shell-capable agents costs a few dozen tokens and expands only when actually needed.
Does Zotero need to stay running?
For local mode yes, the Zotero app must be open with the local API permission enabled.
Related
166 skills for scientific work: bioinformatics, cheminformatics, clinical data, geospatial analysis and 100+ databases
Google's open-source MCP server for databases: ready tools for Postgres, MySQL, BigQuery, Spanner and more, plus custom tools in tools.yaml
Official Hugging Face skills: Hub operations via the hf CLI, datasets, model training, Spaces, evals and deployment
A visualization language for agents and an MCP server: neat charts from a simple semantic spec