LabscoMCP early access ↗
BirdInTheTreeMCP SERVER

Zotero Read and Write

Build and tidy a Zotero library from the conversation — add papers by DOI or BibTeX, file them into collections, and merge the duplicates.

by BirdInTheTree ↗Academic Literature & CitationsCommunity

LABSCO SUMMARY

Papers go into Zotero by DOI or BibTeX, and duplicates get merged, not only found.

A DOI becomes an item with its metadata filled in, BibTeX lands in the collection you name, and one call files an item into several collections. Merging carries metadata, tags and collections over to the item you keep before the rest are deleted, so a cleanup does not lose what the copies held.

What it is

A read-and-write Zotero server on the Zotero Web API — it searches and reads the library, and also creates, updates, files, merges and deletes items.

What you get

  • search_items runs a full-text search with collection, type and tag filters, and get_item returns one item's detailed metadata or its BibTeX export.
  • get_collections lists collections with their hierarchy and item counts, get_collection_items lists the items in one, and get_tags lists tags with item counts.
  • create_item_from_doi adds an item by DOI and fills in its metadata through the Zotero translator and CrossRef; create_item builds one from field data, and import_bibtex brings BibTeX entries into a collection.
  • update_item changes an item's fields with version conflict protection.
  • create_collection makes a collection, optionally under a parent; add_to_collections files an item into several at once, and remove_from_collection takes it out without deleting it.
  • find_duplicates matches items by title or DOI, or scans the whole library; merge_duplicates moves metadata, tags and collections onto the item you keep and deletes the rest, and delete_item removes a single item.

Requirements

A Zotero Web API key and your Zotero user ID, plus Python 3.11+ and uv.

Setup effort

Build from source — git clone https://github.com/BirdInTheTree/zotero-mcp.git