zotero-mcp
Zotero MCP connects a Zotero research library to AI assistants through the Model Context Protocol. The README says one package, zotero-mcp-server, ships three ways in: an MCP server for chat apps without a shell (Claude Desktop, ChatGPT, Cherry Studio, Chorus), a zotero-cli with an agent skill for agents that have a shell (Claude Code, Codex, Cursor, Windsurf, Gemini CLI and others), and a Zotero Agent chat panel inside Zotero that knows which item, page and selection you have open. It states that the CLI and skill route keeps about 98 tokens in context until needed, against roughly 13k for the full MCP tool list.
The feature list covers search by title, author, tag, collection, full text or meaning (semantic search with local, OpenAI, Gemini or Ollama embeddings), reading metadata, BibTeX, full text and PDF page ranges with page images where text extraction garbles maths or figures, annotations placed on exact words, figures, tables or equations, and writes such as adding papers by DOI, URL, ISBN, BibTeX or file, managing collections and tags and merging duplicates. Scite citation tallies and retraction alerts are optional.
Install with `uv tool install zotero-mcp-server` or pip on Python 3.10+, then enable Zotero's local API under Settings, Advanced in Zotero 7+. In local mode reads come straight from zotero.sqlite. For writes, Zotero 10+ needs a one-time `zotero-mcp authorize-local`; older Zotero can write through the web API with ZOTERO_API_KEY and ZOTERO_LIBRARY_ID. Heavier features such as semantic search are optional extras. It is MIT licensed and the last push was 2026-10-15. This review is based on the README and repository data; we have not run it ourselves.
Features
Why choose it
Trade-offs
Maintenance check
- Last commit
- 2026-10-16
- Commits, last 90 days
- 100+
- Releases, last 90 days
- 21
- Latest release
- v0.15.1 (2026-10-16)
- Open issues
- 57
- Recent issues with at least one comment
- 9/14
Oldest week on the left; the latest four weeks are orange. Source: GitHub commit activity.
Status rule: archived on GitHub = Archived; last commit within 90 days = Active; 91 to 365 days = Slowing; older = Stale. All figures come from the GitHub API on the date shown.
Most discussed open issues
- #700 Zotero Agent plugin: all CLI detection fails on Windows (`/bin/sh` probe bypasses the existing `pathSearch`)6 comments · 2026-10-09
- #377 Feature request: rename an attachment's filename on disk, not just its title5 comments · 2026-07-11
- #493 Feature request: dedupe cross-library copies in semantic search results (with over-fetch so limit stays meaningful)4 comments · 2026-08-24
- #604 `update-db` without `--fulltext` indexes every annotation, the SQLite path does not, and the mismatch never self-heals3 comments · 2026-09-25
- #591 Attachment file helpers don't know which library they serve — group uploads go to the personal WebDAV3 comments · 2026-09-24
Issue titles are quoted from GitHub. Open the link to check whether a problem still applies to the version you use.
Compatibility
Quick start
Use cases
Alternatives
Comments
No comments yet. Be the first!