search_itemsLABSCO 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
USE CASES
Adding papers you are citing
Give a DOI and the item is created with its metadata filled in, or paste BibTeX and the entries land in the collection you name.
Filing a paper into the right collections
Find the item, then add it to several collections in one call, or take it out of one without deleting it.
Cleaning up duplicates in a library
Scan the library for items that share a title or DOI, then merge each set so metadata, tags and collections move to the item you keep.
15 tools
Listed in project docs. Your client may show a different list.
get_itemget_collectionsget_collection_itemsfind_duplicatesget_tagscreate_itemcreate_item_from_doiimport_bibtexupdate_itemcreate_collectionadd_to_collectionsremove_from_collectionmerge_duplicatesdelete_itemBEFORE YOU INSTALL
What to know first
Tools you get
15 tools named in the project's documentation.
Requires
- Python 3.11+ and uv
- ZOTERO_API_KEY in your environment
- ZOTERO_USER_ID in your environment
INSTALLATION
Connect your client
You clone this one yourself.
Server setup
# Clone the repo
git clone https://github.com/BirdInTheTree/zotero-mcp.git
cd zotero-mcp
uv syncMCP Clients
Claude Code
claude mcp add zotero \
-e ZOTERO_API_KEY=<YOUR_ZOTERO_API_KEY> \
-e ZOTERO_USER_ID=<YOUR_ZOTERO_USER_ID> \
-- uv run --directory <YOUR_PATH_TO_ZOTERO_MCP> python -m zotero_mcpClaude Desktop
{
"mcpServers": {
"zotero": {
"command": "uv",
"args": [
"run",
"--directory",
"<YOUR_PATH_TO_ZOTERO_MCP>",
"python",
"-m",
"zotero_mcp"
],
"env": {
"ZOTERO_API_KEY": "<YOUR_ZOTERO_API_KEY>",
"ZOTERO_USER_ID": "<YOUR_ZOTERO_USER_ID>"
}
}
}
}