Skip to main content

Curator for Zotero

Curator for Zotero is a research-focused MCP server for Zotero. It lets AI coding and research assistants search a library, inspect metadata, read long attachments in manageable sections, export citations, and safely organize items with dry-run-first write tools.

This project is independently maintained and is based on the MIT-licensed kujenga/zotero-mcp. See ACKNOWLEDGEMENTS.md and LICENSE.

Why Curator

The original Python MCP server required each client to know a repository-local virtual-environment path. Curator is a published Python package, so Codex, Claude Desktop, Cursor, Claude Code, and other clients can launch it with one stable command:

uvx --from zotero-curator zotero-curator serve

Curator adds long-document navigation, saved searches, optional PDF and semantic-search features, safe BibTeX workflows, arXiv import, central settings, diagnostics, and guarded organization tools.

Quick start

Install uv, open Zotero, and enable:

Zotero Settings → Advanced → Allow other applications on this computer to communicate with Zotero

Then configure and validate local mode:

uvx --from zotero-curator zotero-curator setup --local
uvx --from zotero-curator zotero-curator doctor

For GUI-launched macOS clients, use the absolute uvx path returned by:

command -v uvx

Common Homebrew paths are /opt/homebrew/bin/uvx on Apple Silicon and /usr/local/bin/uvx on Intel Macs.

MCP client configuration

Claude Desktop, Cursor, and other JSON-style clients:

{
  "mcpServers": {
    "zotero": {
      "command": "/opt/homebrew/bin/uvx",
      "args": ["--from", "zotero-curator", "zotero-curator", "serve"]
    }
  }
}

Codex:

[mcp_servers.zotero]
type = "stdio"
command = "/opt/homebrew/bin/uvx"
args = ["--from", "zotero-curator", "zotero-curator", "serve"]
startup_timeout_sec = 30

Replace /opt/homebrew/bin/uvx with your command -v uvx result.

Generate or install client configuration safely:

uvx --from zotero-curator zotero-curator mcp-config --uvx --format json
uvx --from zotero-curator zotero-curator mcp-config --uvx --format toml
uvx --from zotero-curator zotero-curator install-client --uvx
uvx --from zotero-curator zotero-curator install-client --uvx --apply

The installer backs up existing client configuration and defaults to dry-run mode.

Documentation

Detailed, version-controlled documentation lives in docs/:

Major capabilities

Research and navigation

  • Search by title, creator, year, tag, DOI, or indexed text.
  • Inspect metadata, child notes, attachments, collections, tags, and saved searches.
  • Read long documents by chunk, within-document search, heuristic outline, or section.
  • Use optional page-aware PDF reads and local semantic search.

Citation workflow

Curator exports selected Zotero items directly to managed BibTeX or BibLaTeX files and can validate LaTeX citations:

zotero-curator export-bibtex ITEMKEY1 ITEMKEY2 --out references.bib --mode auto
zotero-curator validate-citations --tex paper.tex --bib references.bib

auto prefers Better BibTeX when available for supported personal-library exports, then falls back to Zotero's exporter. Curator records the actual exporter, citation keys, generated cite command, and fallback reason.

arXiv import

Preview an import:

uvx --from zotero-curator zotero-curator add-arxiv https://arxiv.org/abs/2410.03529

Real imports require Web API mode, a write-enabled API key, global write enablement, and --apply. See Research workflows.

Guarded organization tools

Curator can create and rename collections, update tags and collection membership, patch selected metadata, create child notes, and apply multi-step organization plans.

All write tools default to dry_run=true. Real writes require:

  1. Web API mode.
  2. A Zotero API key with write permission.
  3. write_enabled = true or ZOTERO_WRITE_ENABLED=true.
  4. dry_run=false on the individual call.

Zotero's local API is treated as read-only because Local API v3 currently accepts only GET requests.

Optional extras

Keep the base install small or request additional features:

uvx --from 'zotero-curator[pdf]' zotero-curator serve
uvx --from 'zotero-curator[semantic]' zotero-curator serve
uvx --from 'zotero-curator[all]' zotero-curator serve

The pdf extra enables page-aware stored-PDF reads and bookmark extraction. The semantic extra provides a local Chroma index with cross-process locking.

Let an agent set it up

Copy this prompt into a local coding agent:

Install Curator for Zotero for me by following this repo's AGENTS.md. Use the published uvx workflow and configure these MCP clients: CLIENTS_TO_CONFIGURE.

Replace CLIENTS_TO_CONFIGURE with the applications you use.

Development

git clone https://github.com/JGSphaela/Curator-for-Zotero.git
cd Curator-for-Zotero
uv sync --extra dev
uv run zotero-curator doctor
uv run pytest
uv run ruff check .

The package exposes zotero-curator and the compatibility alias zotero-mcp.

Metadata

Release files for zotero-curator 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for zotero-curator 0.1.3
File Size Uploaded Provenance Actions
zotero_curator-0.1.3.tar.gz 333.1 kB Without provenance Details for zotero_curator-0.1.3.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for zotero-curator 0.1.3
File Interpreter ABI Platform Actions
zotero_curator-0.1.3-py3-none-any.whl Python 3 none any Details for zotero_curator-0.1.3-py3-none-any.whl

Total release size: 376.3 kB

Release files / zotero_curator-0.1.3.tar.gz

Download URL zotero_curator-0.1.3.tar.gz
Size 333.1 kB
Tags Source
SHA-256 checksum
How to use checksums
272f104ea22b1531482ebb3207e5c01f7fad2e4a7d3d0199fb8493f8e7140ddc
BLAKE2b-256 checksum
How to use checksums
243e4a4752eb90599eeb6ec63f4096643978a7012398d99a583fc8ab46dd96f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / zotero_curator-0.1.3-py3-none-any.whl

Download URL zotero_curator-0.1.3-py3-none-any.whl
Size 43.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6b736bc2de3616c1a1660f8cf3cd2ec0d04093878bd9de998177d4acc40448f2
BLAKE2b-256 checksum
How to use checksums
007accfa7651eca5b8d5494fafaeaae18c4c11d00cbe9666557ea0914da20daa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for zotero-curator 0.1.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page