Skip to main content

MCP server for adding papers and books to Zotero by DOI, arXiv ID, or ISBN

Project description

zotero-library-mcp

An MCP server that lets AI assistants add papers and books to your Zotero library by DOI, arXiv ID, or ISBN — and manage your collections, tags, and items.

Tools

Adding papers

  • add_paper_by_doi — Resolve a DOI via CrossRef and add the paper to Zotero (with duplicate detection)
  • add_papers_by_dois — Batch-add up to 50 papers at once
  • add_paper_by_arxiv_id — Add a preprint by arXiv ID (uses DOI when available, falls back to arXiv metadata)

Adding books

  • add_book_by_isbn — Resolve an ISBN via Open Library and add the book to Zotero (with duplicate detection)

Searching & browsing

  • search_library — Search your Zotero library by title, author, tag, etc.
  • get_item_details — View full metadata for any item
  • get_recent_items — List recently added items
  • get_unfiled_items — Get items not in any collection

Reading & annotating

  • get_item_fulltext — Get the full text of an indexed PDF
  • get_bibtex — Export BibTeX for one or more items, a collection, or your full library (with optional save_path to write a .bib file directly)
  • get_annotations — List all highlights and annotations on a paper's PDF
  • create_annotation — Highlight a text passage in a PDF (searches for the exact text and creates a visible highlight in Zotero's reader)
  • add_note — Add a note to an item

File attachments

  • attach_file — Attach a local file to an item
  • download_pdf — Download a PDF attachment to a local file (useful when Zotero's fulltext index is incomplete)

Collections

  • list_collections — List all collections (with nesting)
  • create_collection — Create a new collection (optionally nested under a parent)
  • get_collection_items — Browse items in a collection
  • add_to_collection — Add an existing item to a collection
  • remove_from_collection — Remove an item from a collection (keeps it in your library)

Tags

  • add_tags — Add one or more tags to an item
  • remove_tags — Remove tags from an item

Verification

  • verify_items — Re-check recent items against CrossRef to catch bad DOIs or title mismatches

Deleting

  • delete_item — Permanently delete an item from your library
  • delete_collection — Permanently delete a collection

Prerequisites

  1. A Zotero account
  2. A Zotero API key with write permissions: https://www.zotero.org/settings/keys
  3. Your Zotero library ID (shown on the same page, or in your profile URL)
  4. uv installed

Quick Start

Claude Code

claude mcp add zotero \
  -e ZOTERO_LIBRARY_ID=your_library_id \
  -e ZOTERO_API_KEY=your_api_key \
  -- uvx --from git+https://github.com/RaulSimpetru/zotero-library-mcp zotero-mcp

WebDAV setup

To use WebDAV file storage (e.g. Synology, Nextcloud), include the WebDAV variables:

claude mcp add zotero \
  -e ZOTERO_LIBRARY_ID=your_library_id \
  -e ZOTERO_API_KEY=your_api_key \
  -e ZOTERO_WEBDAV_URL=https://your-webdav-server.com \
  -e ZOTERO_WEBDAV_USER=your_username \
  -e ZOTERO_WEBDAV_PASSWORD=your_password \
  -- uvx --from git+https://github.com/RaulSimpetru/zotero-library-mcp zotero-mcp

Claude Desktop

Add this to your claude_desktop_config.json:

{
  "mcpServers": {
    "zotero": {
      "command": "/full/path/to/uvx",
      "args": ["--from", "git+https://github.com/RaulSimpetru/zotero-library-mcp", "zotero-mcp"],
      "env": {
        "ZOTERO_LIBRARY_ID": "your_library_id",
        "ZOTERO_API_KEY": "your_api_key",
        "ZOTERO_WEBDAV_URL": "https://your-webdav-server.com",
        "ZOTERO_WEBDAV_USER": "your_username",
        "ZOTERO_WEBDAV_PASSWORD": "your_password"
      }
    }
  }
}

Note: Claude Desktop doesn't inherit your shell's PATH, so you need the full path to uvx. Find it with which uvx in your terminal.

Run standalone

ZOTERO_LIBRARY_ID=your_id ZOTERO_API_KEY=your_key \
  uvx --from git+https://github.com/RaulSimpetru/zotero-library-mcp zotero-mcp

Environment Variables

Variable Required Description
ZOTERO_LIBRARY_ID Yes Your Zotero user or group library ID
ZOTERO_API_KEY Yes API key with read/write permissions
ZOTERO_LIBRARY_TYPE No user (default) or group
CROSSREF_MAILTO No Your email for CrossRef polite pool (faster API access)
ZOTERO_WEBDAV_URL No WebDAV URL for file storage (e.g. https://dav.example.com)
ZOTERO_WEBDAV_USER No WebDAV username
ZOTERO_WEBDAV_PASSWORD No WebDAV password

Note: If all three ZOTERO_WEBDAV_* variables are set, file attachments are uploaded to your WebDAV server instead of Zotero's built-in storage. The server automatically appends /zotero to the base URL, matching Zotero Desktop's behavior.

How it works

  1. You provide a DOI, arXiv ID, or ISBN
  2. The server queries the appropriate API to get full metadata:
  3. Metadata is mapped to Zotero's item format (title, authors, journal/publisher, date, etc.)
  4. The item is created in your Zotero library via the Zotero Web API

License

MIT

mcp-name: io.github.RaulSimpetru/zotero-library-mcp

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zotero_library_mcp-0.4.2.tar.gz (73.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zotero_library_mcp-0.4.2-py3-none-any.whl (16.3 kB view details)

Uploaded Python 3

File details

Details for the file zotero_library_mcp-0.4.2.tar.gz.

File metadata

  • Download URL: zotero_library_mcp-0.4.2.tar.gz
  • Upload date:
  • Size: 73.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for zotero_library_mcp-0.4.2.tar.gz
Algorithm Hash digest
SHA256 41b548f4f36ec697d2e6f07475ce3683d08b4758394f35eae23355dcd2e90bd5
MD5 c208cadb383ab4c2d6b743598b4de248
BLAKE2b-256 1cd5eb7e6a0a35642cfb2f0c82d020a945912e96c95bc997f51a145e99863c3d

See more details on using hashes here.

File details

Details for the file zotero_library_mcp-0.4.2-py3-none-any.whl.

File metadata

  • Download URL: zotero_library_mcp-0.4.2-py3-none-any.whl
  • Upload date:
  • Size: 16.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for zotero_library_mcp-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9c9d35184db3a27e547a30c73d6028750a1dde600101bd0e0f744f09fe24b117
MD5 5e690ad88de2e55aae375129e1a0fff0
BLAKE2b-256 fcdc3fec4f6b317162b9d4a293bc7f7e4bcc1fabe166d10690a984689f2510f7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page