← Back to directory
Z

Zotero MCP

Community
Connect your Zotero research library to Claude, ChatGPT, and other AI assistants for search, reading, annotation, and adding.
Category
Other #16 of 230
Stars
★ 5.5k Very popular
Transport
stdio (local process)
Runtime
Python 3.10+ · Docker
Credentials
Optional API key
License
MIT
Last commit
Tools
37
69FMRS · C

Zotero MCP is a feature-rich server that seamlessly integrates your Zotero library with AI assistants. It offers core capabilities like search, semantic search, annotation extraction, and item management, with optional extensions for scite citation intelligence and advanced PDF handling. Setup is straightforward via CLI or manual config, and the documentation is comprehensive. The main risks involve API key handling and external service dependencies, which users should manage carefully. Overall, it is highly suitable for researchers and students.

Strongest · Documentation 16/20 Weakest · Reliability 11/20

Reliability
11/20
Security and permissions
13/20
Maintenance
15/20
Documentation
16/20
Setup experience
14/20
Why each score
Reliability 11/20
Evidence: server.json declares a clear stdio launch command (zotero-mcp-server serve) with version 0.9.1 and a real package; README organizes tools into group-controlled surfaces with ZOTERO_MCP_TOOLSETS; the repo is not archived and includes tests (README states 294 pytest cases) and CI workflows under .github/workflows. Deductions: static review only — nothing executed, so the init/tool-list handshake and declared-vs-actual tool behavior are not directly verified; README/manifest are untrusted evidence; test coverage of key server paths is not fully visible from the supplied files.
Security and permissions 13/20
Evidence: API keys are supplied through environment variables and ZOTERO_API_KEY is marked isSecret in the manifest; local mode is the default, avoiding unnecessary cloud exposure; hybrid/write mode requires explicit credentials; optional tool groups are off by default, reducing surface area; no evidence of malware, real token examples, or irreversible destructive defaults. Deductions: no code-level credential handling or log-redaction details were reviewed; confirmation flows for destructive write operations (merge/delete-like actions) are not explicit in the manifest/README; external network calls (scite, WebDAV, embedding APIs) lack complete data-flow disclosure.
Maintenance 15/20
Evidence: repository is active and unarchived, version 0.9.1 with an update command; MIT license present; PyPI package release visible. Deductions: no security-response channel or dependency-update policy is evidenced; issue response time and release cadence cannot be confirmed from static sources.
Documentation 16/20
Evidence: README covers quick install, optional extras, semantic search, environment variables, CLI, Docker, tool lists, troubleshooting, and test plan; client config examples for Claude, Cherry Studio, and Autohand are concrete; docs site link provided; tool parameters and constraints (toolsets, context cost, pdf_max_pages) are disclosed. Deductions: advanced features like OpenAI Batch depend on external services with limited cost/rate-limit guidance; troubleshooting is self-reported without log-level reviewable evidence.
Setup experience 14/20
Evidence: uv/pip/pipx installs, zotero-mcp setup auto-configuration, Claude/Cherry Studio JSON examples, Docker images, CLI self-check commands, and local/hybrid/web modes are documented; Zotero local API toggle screenshot referenced. Deductions: static review, so install was not executed; cross-platform details and recovery from GUI PATH issues are only partially covered despite an absolute-path tip.

Static review · not runListed 2026-08-07

Read the FMRS scoring method →

Fit and risk

What it can accessReads local filesWrites / deletes local filesUses the networkConnects to a database

Best for

  • Researchers, students, and academics who want to integrate their Zotero library with AI assistants.
  • Users who need quick retrieval, summarization, and annotation of papers.
  • Those looking for semantic search to discover related research.
  • Users who want to automate library management tasks like bulk adding and deduplication.

Not for

  • Users who don't need AI integration and just want a terminal interface (use zotero-cli).
  • Users who don't use Zotero.
  • Users who require fully offline operation without local Zotero installation (web API mode still needs internet).

Required permissions

  • Reads local Zotero database files (default path).
  • Writes to Zotero via Web API in hybrid mode (add, update, delete items).
  • Accesses Zotero attachment files (e.g., PDFs) to extract full text and annotations.
  • When semantic search is enabled, calls embedding model APIs (e.g., OpenAI, Gemini) and stores index data.
  • When scite tools are enabled, calls scite.ai public API.

Risks and side effects

  • AI assistants may misinterpret or misread library data; verify important information manually.
  • Web API mode requires a Zotero API key; if compromised, unauthorized access to your library is possible.
  • Semantic search indexes may contain sensitive content; protect stored embeddings.
  • Enabled optional tool groups (e.g., scite) trigger external network requests.

Setup

Before you start

Runtime:Python 3.10+ · Docker

ZOTERO_API_KEY optionalsecret Zotero Web API key from https://www.zotero.org/settings/keys; needed when ZOTERO_LOCAL is false or for writes in hybrid mode.
OPENAI_API_KEY optionalsecret OpenAI API key (platform.openai.com) required for OpenAI embeddings.
GEMINI_API_KEY optionalsecret Google Gemini API key required for Gemini embeddings.
ZOTERO_WEBDAV_PASSWORD optionalsecret Optional WebDAV password.
Other optional settings (18)
ZOTERO_LOCAL optional Set to true to read from the local Zotero desktop app; requires Zotero 7+ with the local API enabled in settings.
ZOTERO_LIBRARY_ID optional Zotero user or group library ID; your numeric userID is shown on the same API keys page.
ZOTERO_LIBRARY_TYPE optional Whether the library ID is a personal (user) or group library; defaults to user.
ZOTERO_MCP_TOOLSETS optional Comma-separated list of optional tool groups to expose (all/none/named groups); controls the tool surface.
ZOTERO_EMBEDDING_MODEL optional Embedding provider for semantic search: default, openai, gemini, or ollama.
OPENAI_EMBEDDING_MODEL optional OpenAI embedding model name, e.g. text-embedding-3-small or text-embedding-3-large.
OPENAI_BASE_URL optional Optional custom OpenAI-compatible endpoint URL.
GEMINI_EMBEDDING_MODEL optional Gemini embedding model name, e.g. gemini-embedding-001.
GEMINI_BASE_URL optional Optional custom Gemini-compatible endpoint URL.
OLLAMA_EMBEDDING_MODEL optional Model name for local Ollama embeddings, e.g. nomic-embed-text or bge-m3.
OLLAMA_BASE_URL optional Ollama server URL, default http://localhost:11434.
ZOTERO_DB_PATH optional Custom path to zotero.sqlite; auto-detected when unset.
ZOTERO_WEBDAV_URL optional Optional WebDAV folder URL for direct attachment downloads in remote mode.
ZOTERO_WEBDAV_USERNAME optional Optional WebDAV username.
ZOTERO_MCP_SCHEMA_REFRESH optional Set to 0 to disable the weekly background refresh of Zotero's item-type schema.
ZOTERO_MCP_SCHEMA_CACHE optional Custom path for the schema cache, default ~/.cache/zotero-mcp/schema..
ZOTERO_APP optional Docker container runtime mode: server (default) or cli.
ZOTERO_TRANSPORT optional Transport method inside the Docker container, default stdio.
  1. Install Python 3.10+ and Zotero 7+.
  2. Install zotero-mcp-server via uv, pip, or pipx (base install includes core tools; optional extras like [semantic], [pdf], [scite] are available).
  3. Run zotero-mcp setup for auto-configuration (supports Claude Desktop), or manually add the JSON config to your MCP client as shown in the docs.
  4. Ensure the local API is enabled in Zotero settings (Settings > Advanced).
  5. Restart your MCP client and verify the connection.
claude_desktop_config.json
{
  "mcpServers": {
    "zotero": {
      "command": "zotero-mcp",
      "env": {
        "ZOTERO_LOCAL": "true",
        "ZOTERO_API_KEY": "YOUR_API_KEY",
        "ZOTERO_LIBRARY_ID": "YOUR_LIBRARY_ID"
      }
    }
  }
}

Shown for Claude Desktop. Other clients may use a different file or key (VS Code uses "servers") — the configurator below converts it.

.vscode/mcp.json
{
  "servers": {
    "zotero": {
      "command": "zotero-mcp",
      "env": {
        "ZOTERO_LOCAL": "true",
        "ZOTERO_API_KEY": "YOUR_API_KEY",
        "ZOTERO_LIBRARY_ID": "YOUR_LIBRARY_ID"
      }
    }
  }
}

Goes in your project's .vscode/mcp.json (VS Code uses a "servers" key).

Terminal
claude mcp add zotero -e ZOTERO_LOCAL=true -e ZOTERO_API_KEY=YOUR_API_KEY -e ZOTERO_LIBRARY_ID=YOUR_LIBRARY_ID -- zotero-mcp

Run it in a terminal; replace any <…> placeholders with your own values first.

Check that it works

After running zotero-mcp setup, restart your client and check that zotero_ tools such as zotero_search_items and zotero_get_item_metadata appear in the client's tool list; a prompt like "Search my library for papers on machine learning" returning real results confirms the connection.

Troubleshooting

  1. No results found: Ensure Zotero is running and the local API is enabled (Settings > Advanced).
  2. Connection issues: Check API key and library ID configuration if using web API.
  3. Full text unavailable: Make sure you are using Zotero 7+.
  4. Semantic search errors: Run `zotero-mcp update-db --force-rebuild` to rebuild the index, or delete `~/.config/zotero-mcp/chroma_db/` and rebuild.
  5. Tools not available: Check ZOTERO_MCP_TOOLSETS setting to ensure the required tool groups are enabled.
  6. CLI command not found: Use absolute path or run `zotero-mcp setup-info` to find the path.

Things to try

Once connected, you can ask your AI assistant things like:

  • Search my library for papers on machine learning
  • Extract all PDF annotations from my paper on neural networks
  • Add the paper with DOI 10.1038/s41586-021-03819-2 to my Reading List collection
  • Find papers conceptually similar to deep learning in computer vision

Tools 37

zotero_semantic_search read-only
AI-powered similarity search using embedding models for conceptual matches.
zotero_update_search_database writes
Manually update the semantic search database.
zotero_get_search_database_status read-only
Check the status and configuration of the semantic search database.
zotero_search_items read-only
Search your library by keywords.
zotero_advanced_search read-only
Perform complex searches with multiple criteria.
zotero_get_collections read-only
List all collections.
zotero_get_collection_items read-only
Get items in a collection.
zotero_get_tags read-only
List all tags.
Show 29 more tools
zotero_get_recent read-only
Get recently added items.
zotero_search_by_tag read-only
Search your library using custom tag filters.
zotero_get_item_metadata read-only
Get detailed metadata for an item (supports markdown, json, bibtex formats).
zotero_get_item_fulltext read-only
Get full text content for an item.
zotero_get_item_children read-only
Get attachments and notes for an item or multiple items.
zotero_get_annotations read-only
Get annotations, including direct PDF extraction; supports json format for structured output.
zotero_synthesize_annotations read-only
Build a per-paper annotation/note digest.
zotero_get_notes read-only
Retrieve notes; pass query to search note and annotation text.
zotero_create_annotation writes
Create a highlight or area annotation.
zotero_manage_note writes
Create, update, or delete a note.
zotero_get_page_layout read-only
Detect figure/table regions on a PDF page for precise area annotation placement.
zotero_add_by_doi writes
Add a paper by DOI with automatic metadata and open-access PDF attachment.
zotero_add_by_url writes
Add a paper by URL (arXiv, DOI links, generic webpages).
zotero_add_by_isbn writes
Add a book by ISBN.
zotero_add_by_bibtex writes
Add one or more items from BibTeX.
zotero_add_by_csl_json
Add one or more items from CSL JSON.
zotero_add_from_file writes
Import a local PDF or EPUB file with automatic DOI extraction.
zotero_attach_file writes
Attach a local file or PDF URL to an existing item.
zotero_create_collection writes
Create a new collection.
zotero_search_collections read-only
Search collections by name to find their keys.
zotero_manage_collections writes
Add or remove items from collections.
zotero_update_item writes
Update metadata for an existing item (title, tags, abstract, date, etc.).
zotero_find_duplicates read-only
Find duplicate items by title and/or DOI.
zotero_merge_duplicates destructive
Merge duplicate items with dry-run preview.
zotero_get_pdf_outline read-only
Extract the table of contents / outline from a PDF attachment.
zotero_search_by_citation_key read-only
Look up items by BetterBibTeX citation key.
zotero_get_item_related read-only
Get all related items for a specific Zotero item.
zotero_add_item_relation writes
Add a related item relationship (bidirectional link).
zotero_remove_item_relation destructive
Remove a related item relationship.

Use cases

Search your library, get summaries, and analyze papers through AI assistants.
Use semantic search to find conceptually similar papers.
Extract PDF annotations and notes for literature reviews.
Add papers quickly via DOI, URL, or local files.
Find and merge duplicates, manage collections and tags.
Optionally enable scite citation tallies and retraction alerts.

Supported clients

Claude Desktop
Claude Code
ChatGPT
Cherry Studio

Listed from the project's documentation, not tested by this site.

Overview

Zotero MCP connects your Zotero research library with AI assistants via the Model Context Protocol. It supports both local and web access, offering AI-powered semantic search (optional extra), paper search, summaries, citation analysis, PDF annotation extraction, and write operations like adding papers by DOI or URL, managing collections, and merging duplicates. Requires Zotero 7+ with local API enabled or a Zotero Web API key for write operations. Optional tool groups (e.g., scite, duplicates) can be enabled via environment variables.

Similar servers

BioMCP 75 · B

One binary. One grammar. Evidence from the biomedical sources you already trust.

★ 659 · Tools 11 Compare with this →

Source revision eb016b1b746d Data synced 2026-10-19 Read the FMRS scoring method