
Zotero MCP, the community server for your Zotero library
Lets Claude, ChatGPT or Cursor search, read, cite and annotate the papers in your Zotero library.
Zotero MCP connects your Zotero library to Claude, ChatGPT, Cursor and other assistants, so you can search papers, read full text, pull citations and add highlights from a chat. It is a free community project by Steven Yu, not made by Zotero. By default it reads your library from the Zotero desktop app with no account or key; adding or changing items needs Zotero 10 and a one-time approval, or a Zotero web API key. The full tool set is large, so in Claude Code or Cursor the maintainer suggests the lighter agent skill instead.
Good for
- Researchers and grad students who want Claude to find and summarize papers they already saved
- Writers who need BibTeX and citations pulled from their own library while drafting
- Anyone with a large library who wants to search it by meaning, not just keywords
- Readers who want highlights and notes added to PDFs from a chat
- Claude Code or Cursor users who want a low-context agent skill for Zotero
Works in
2 supported · 1 with issues · 10 should work
Tap an app to see how to set it up and any known problems.
The README covers it: add the same entry to ~/.claude.json, or install the lighter agent skill instead. GitHub
The README covers it: run the setup command, or add the entry to Claude Desktop's config file by hand.
Works through Developer Mode and a tunnel to your computer, with no sign-in, so keep the tunnel address private.
Known problems
- Open
The web mode has no password option, so anyone with the tunnel address can use it
Workaround: Stop the tunnel whenever you are not using it and never share its address.
Since Oct 2026 · GitHub
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Install Zotero MCP
Claude Code
- 1
Copy this prompt.
Add the Zotero MCP server to Claude Code. Run this command: claude mcp add zotero -e ZOTERO_LOCAL=true -- uvx zotero-mcp-server Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires uv (Python).
Read-only mode: Leave out the API key and library ID, and do not approve the Zotero write dialog (choose Deny). It can then only read your library.
Keep Zotero open with "Allow other applications on this computer to communicate with Zotero" ticked in Settings, Advanced. To let it add or edit items on Zotero 10+, run zotero-mcp authorize-local once and choose Always Allow. The maintainer suggests the agent skill (zotero-mcp install-skill) for Claude Code instead: it uses far less context than the 41-tool server.
Built from the package data we hold. Not yet tested by us.
Tools
Finds papers in your library by topic or meaning, not just exact words
Searches your library by meaning using an index of your papers, so a question like 'papers on mindfulness therapy' finds relevant items even when the words differ. Needs the semantic search add-on and an index built first.
Try: “Find papers in my library about how attention replaced recurrence in language models”
Read ·
zotero_semantic_searchSearches your library by title, author, year or abstract text
Looks up items whose title, authors, year or abstract contain the words you give it. Works best with short queries like an author and a year.
Try: “Find the Brewer 2011 paper in my Zotero library”
Read ·
zotero_search_itemsFilters your library by several fields at once, like date range and item type
Runs a structured search that combines conditions on fields such as date, item type or publication, joined by AND or OR.
Try: “Show journal articles in my library published between 2018 and 2020 about sleep”
Read ·
zotero_advanced_searchFinds items with certain tags, with OR and exclude options
Lists items carrying the tags you name. You can combine tags, accept either of two tags, or exclude a tag.
Try: “Show papers tagged methods or methodology but not draft”
Read ·
zotero_search_by_tagLooks up one item by its Better BibTeX citation key
Finds the single item that has the citation key you give it, as assigned by the Better BibTeX plugin, and returns its details.
Try: “Look up Smith2024 in my library”
Read ·
zotero_search_by_citation_keyLists the items you added most recently
Shows the newest additions to your library, optionally within one collection. Good for 'what did I save this week?'.
Try: “What papers did I add to Zotero this week?”
Read ·
zotero_get_recentShows full details for one item: authors, date, DOI, abstract, tags
Fetches the complete record for one item, including title, authors, date, DOI, publisher, tags and abstract. Can also return it as BibTeX.
Try: “Give me the BibTeX entry for the Vaswani 2017 paper”
Read ·
zotero_get_item_metadataReads the full text of a saved paper's PDF or EPUB
Returns the extracted text of an item's main PDF or EPUB so the assistant can read the whole paper. Long papers use a lot of context.
Try: “Read this paper and summarize its key findings”
Read ·
zotero_get_item_fulltextReads chosen pages of a PDF, as text or as page images
Reads a page range of a paper's PDF as text, and flags pages where math, figures or tables come out garbled. It can return those pages as images instead.
Try: “Read pages 4 to 6 of the attention paper and explain the equation on page 4”
Read ·
zotero_read_pdf_pagesShows a PDF's table of contents with page numbers
Pulls the outline or bookmarks from a PDF so the assistant can find the right section before reading the full text.
Try: “Show me the table of contents of this book chapter PDF”
Read ·
zotero_get_pdf_outlineShows all your collections and subcollections as a tree
Lists every collection in the active library, with nested subcollections, so you can see how your library is organized.
Try: “Show me how my Zotero collections are organized”
Read ·
zotero_get_collectionsFinds a collection by name
Searches collection names in the active library and returns the matching collections.
Try: “Find my collection called Thesis chapter 2”
Read ·
zotero_search_collectionsLists the items in one collection
Shows every item filed in a collection, with or without abstracts, and optionally items in its subcollections too.
Try: “List everything in my Literature Review collection”
Read ·
zotero_get_collection_itemsLists every tag used in your library
Returns all the tags in the active library, useful before filtering or retagging items.
Try: “What tags do I use in my library?”
Read ·
zotero_get_tagsLists an item's attachments, notes and annotations
Shows the files, notes and annotations attached to one or more items, such as which PDF belongs to a paper.
Try: “What files and notes are attached to this paper?”
Read ·
zotero_get_item_childrenPulls the highlights and comments from a paper's PDF
Collects highlights and attached comments from a paper's PDF or EPUB, or across the library.
Try: “Show all my highlights from the Devlin 2019 paper”
Read ·
zotero_get_annotationsLists your notes, or searches note and annotation text
Lists notes for one item or the whole library, or searches the text of your notes and annotations for a phrase.
Try: “Search my notes for reinforcement learning”
Read ·
zotero_get_notesGathers highlights and notes across papers into one digest per paper
Collects every highlight, comment and note within a collection or set of papers and groups them by paper, so the assistant can write a literature summary from them.
Try: “Gather my highlights and notes from the Sleep collection so you can write a summary”
Read ·
zotero_synthesize_annotationsFormats a bibliography or in-text citations in a citation style
Uses Zotero's own citation engine to produce a formatted reference list or in-text citations for chosen items or a collection, ready to paste into a manuscript.
Try: “Make an APA bibliography of everything in my Chapter 3 collection”
Read ·
zotero_export_bibliographyShows items you linked as related to a paper
Lists the items linked to one item through Zotero's related items field.
Try: “Which items are marked as related to this preprint?”
Read ·
zotero_get_item_relatedFinds papers a work cites and papers that cite it, via OpenAlex
Follows a paper's citation trail in OpenAlex, a free scholarly index, to find what it cites and newer work citing it, and marks which ones are already in your library.
Try: “Find newer papers that cite this one and are not in my library yet”
Network ·
zotero_find_related_papersShows which items are missing a PDF
Checks your library or one collection for items with and without a downloaded PDF, listing DOIs for the missing ones.
Try: “Which papers in my Thesis collection have no PDF?”
Read ·
zotero_library_coverageShows how often a paper is supported or disputed, and any retraction
Fetches a Scite citation report for one paper: how many later works support, contrast or mention it, plus retraction or correction notices.
Try: “Has this paper been retracted, and how is it cited?”
Network ·
scite_enrich_itemSearches your library and adds Scite citation counts to each result
Runs a library search and adds Scite's supporting, contrasting and mentioning counts and any notices to every result.
Try: “Search my library for CRISPR papers and show how each is cited”
Network ·
scite_enrich_searchChecks your papers for retractions and corrections
Scans items in your library against Scite for retractions, corrections and expressions of concern, and lists only the flagged ones.
Try: “Check my reading list for any retracted papers”
Network ·
scite_check_retractionsLists your personal and group libraries
Shows every library it can reach, your own and group libraries, with item counts.
Try: “Which Zotero libraries can you see?”
Read ·
zotero_list_librariesSwitches which library the assistant works in
Sets the active library, personal or a group, for every later search and edit in the session.
Try: “Switch to my lab's group library”
Read ·
zotero_switch_libraryLists your Zotero RSS feed subscriptions
Shows the RSS feeds subscribed in your Zotero desktop app, with item counts and when each was last checked.
Try: “Which RSS feeds do I follow in Zotero?”
Read ·
zotero_list_feedsShows recent items from one RSS feed
Fetches the latest titles, authors and links from one of your Zotero RSS feeds.
Try: “What is new in my Nature feed?”
Read ·
zotero_get_feed_itemsAdds papers by DOI, URL, ISBN, BibTeX or a PDF file, with open PDFs
Creates new items from a DOI, web address, ISBN, BibTeX, CSL JSON or a local file, can file them into collections, and attaches an open-access PDF when one exists.
Try: “Add 10.48550/arXiv.1706.03762 to my Transformers collection”
Write ·
zotero_add_itemEdits an item's details, like title, date, DOI or tags
Changes the metadata fields you name on an existing item and leaves the rest as is.
Try: “Fix the publication year on this item to 2019”
Write ·
zotero_update_itemAdds or removes tags on many items at once
Edits many items in one go: adds or removes tags and edits lines in the Extra field, selecting items by key, search or tag.
Try: “Tag every paper in my search results about sleep with to-read”
Write ·
zotero_batch_updateHighlights text, boxes a figure or adds a sticky note in a PDF
Adds a highlight on exact words, an area box over a figure or table, or a sticky note at a spot in a PDF.
Try: “Highlight the main claims in this paper and box its key figures”
Write ·
zotero_create_annotationChanges an annotation's comment, color or tags
Edits an existing highlight or note annotation: its text, comment, color or tags.
Try: “Change my yellow highlights on page 3 to red”
Write ·
zotero_update_annotationCreates, edits or trashes a note on an item
Writes a new note on an item, changes an existing note, or moves a note to the Trash.
Try: “Add a note to this paper summarizing its method”
Delete ·
zotero_manage_noteCreates a new collection or subcollection
Makes a new collection, optionally inside an existing one.
Try: “Create a collection called Chapter 4 under Thesis”
Write ·
zotero_create_collectionRenames a collection or moves it under another
Renames a collection or moves it to a new parent while keeping its items and subcollections.
Try: “Rename my Misc collection to Background reading”
Write ·
zotero_update_collectionAdds items to or removes them from collections
Changes which collections existing items are filed in, without creating new collections.
Try: “Move these five papers into my Methods collection”
Write ·
zotero_set_item_collectionsMoves an attachment or note under a different item
Sets, changes or clears the parent item of an attachment or note.
Try: “Attach this loose PDF to the right paper”
Write ·
zotero_set_item_parentAttaches a file or PDF link to an item you already have
Uploads a local file or a PDF from a web address as an attachment to an existing item.
Try: “Attach this PDF I downloaded to the Smith 2024 item”
Write ·
zotero_attach_fileLinks two items as related
Creates a two-way related link between two items, for example a preprint and its published version.
Try: “Mark the preprint and the journal version of this paper as related”
Write ·
zotero_add_item_relationRemoves a related link between two items
Deletes the related-items link between two items.
Try: “Unlink these two papers”
Delete ·
zotero_remove_item_relationFinds duplicate items in your library
Scans the library or a collection for items that look like duplicates and lists them for review without changing anything.
Try: “Find duplicate papers in my library”
Read ·
zotero_find_duplicatesMerges duplicate items into one and trashes the extras
Moves tags, notes, annotations and attachments onto the item you keep and sends the duplicates to the Trash. Shows a preview first unless you confirm.
Try: “Merge the duplicate copies of the BERT paper”
Delete ·
zotero_merge_duplicatesMoves an item to Zotero's Trash
Sends an item to the Trash, where you can still restore it until you empty the Trash.
Try: “Delete the blank test item I added”
Delete ·
zotero_delete_itemDeletes a collection and its subcollections, not the items in it
Removes a collection and its subcollections for good. The items inside stay in your library.
Try: “Delete my Old drafts collection”
Delete ·
zotero_delete_collectionPermanently deletes an annotation
Removes a highlight or other annotation outright; it cannot be undone.
Try: “Delete the highlight I just made on page 2”
Delete ·
zotero_delete_annotationUsed by the assistant behind the scenes
Finds where figures and tables sit on a PDF page
Detects figure, table and equation regions on a page so area boxes land on the right spot.
Try: “Find the figures on page 5 so you can box them”
Read ·
zotero_get_page_layoutFinds where an attachment's file is stored on your computer
Returns the local file path of an item's attachments, so the assistant can open a large PDF directly. Local mode only.
Try: “Where is the PDF for this book saved on my computer?”
Files ·
zotero_get_attachment_pathChecks whether it can save changes to your library, and how
Reports whether writes go through the local Zotero app, the web API, both or neither, and what to do if none works.
Try: “Can you make changes to my Zotero library?”
Read ·
zotero_write_capabilitiesAsks Zotero to let it save changes; you approve in a dialog
Opens a dialog in the Zotero app asking you to allow writes to your local library. Nothing changes until you click Allow.
Try: “Ask Zotero for permission to add items”
Write ·
zotero_authorize_local_writesBuilds or refreshes the index used for search by meaning
Indexes new or changed items for semantic search; run it after first install or after adding papers.
Try: “Update the search index with the papers I added today”
Write ·
zotero_update_search_databaseChecks whether search by meaning is ready
Reports how many items are indexed, when it was last updated and which embedding model it uses.
Try: “Is semantic search set up?”
Read ·
zotero_get_search_database_statusSearch step ChatGPT uses for deep research
A search endpoint ChatGPT needs for its connectors; other assistants use the regular library search instead.
Try: “Search my Zotero library for climate papers (ChatGPT deep research)”
Read ·
searchFetch step ChatGPT uses to read a result
A fetch endpoint ChatGPT needs to read one search result; other assistants use the regular read tools instead.
Try: “Open that result (ChatGPT deep research)”
Read ·
fetch
Read from the source code
Pros and cons
Good
- Free and open source under the MIT license.
- Reads your library from the Zotero app with no account or API key.
- Searches by title, tag, full text or meaning across your saved papers.
- Adds papers by DOI, URL, ISBN or BibTeX, with open-access PDFs attached.
- Places highlights and boxes on the exact words or figures in a PDF.
- Optional tool groups let you load only what you need.
- A lighter agent skill for Claude Code, Cursor and Codex uses far less context.
- Actively maintained, with frequent releases.
Watch out
- Community project, not made or supported by Zotero.
- The default tool set uses about 17,000 tokens of context per request.
- Writes on Zotero 9 and older need a Zotero web API key.
- ChatGPT only works through a tunnel to your computer, with no password.
- Semantic search needs an extra install and an index you build first.
- Needs Python 3.10 or later on your computer.
Permissions
medium risk · 5 things to watch
Medium risk
Once you allow writes, the assistant can edit items, trash items and notes, and permanently delete annotations and collections. Start in local read-only mode and approve writes only when you need them.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only modeHow to turn it on
Watch out for
It can delete annotations and collections
With writes on, it can permanently delete annotations and collections and move items and notes to the Trash. Leave writes off unless you need them. github.com
The ChatGPT setup has no password
Anyone with the tunnel address can use every tool. Stop the tunnel when you are done and never share its address. github.com
Your papers are sent to the AI service
Whatever the assistant reads from your library goes to that AI provider. OpenAI or Gemini search indexing also sends your text to them. github.com
One shared web server shares the library choice
If several clients use one HTTP server, switching libraries in one changes it for all. Run one server per person. github.com
The write approval is saved on your computer
Revoke it with the authorize-local revoke command and with Clear Write Authorizations in Zotero's Advanced settings. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | Run in local mode (ZOTERO_LOCAL=true) without running 'zotero-mcp authorize-local' and without ZOTERO_API_KEY/ZOTERO_LIBRARY_ID: the server can read but has no write path. On Zotero 10+, choose Deny if the authorization dialog appears. |
|---|---|
| Talks to | Your Zotero desktop app on this computer. Zotero web API (only in web or hybrid mode). Your embedding provider, if you pick OpenAI or Gemini for semantic search. Scite and OpenAlex, only when those optional tool groups are on |
| Sign-in and keys | Local write key saved in ~/.config/zotero-mcp/config.json (owner-only) after Always Allow; web API key in your client config's env. |
Alternatives
Use this server for the widest feature set and the most active upkeep. Pick cookjohn's plugin if you would rather install a Zotero add-on than Python.
| Server | Official | Runs | Can change things | GitHub stars |
|---|---|---|---|---|
| Zotero MCPThis page | Community | Local | Yes | 5.7K |
| cookjohn zotero-mcp | Community | Zotero plugin | Yes | 1.3K |
| kujenga Zotero MCP | Community | Local | – | 162 |
| Zotero Native MCP | Community | Local | Yes | 12 |
What people say
People like how much of their library it can search and dislike how much context it uses and how much prompting it takes to shape the results.
What people like
- A user with a 9,000-item library says it works great with semantic search.
- After trying other Zotero servers, the same user went back to this one.
Common complaints
- It can be hard to get results in the shape you want without extra prompting or a Claude skill.
- The default tool set takes about 17,000 tokens of context on every request.
In their words
“It works great, but it can be difficult to use well, and difficult to output the results as I like them”fulaoshiBlogMay 2026
“I have recently gone back to using 54yyyu/zotero-mcp, but I haven't really tested the most recent versions of cookjohn/zotero-mcp. It would be nice to see a detailed comparison.”fulaoshi
Questions
Is Zotero MCP free?
Yes. The server is free and open source under the MIT license. You only pay if you choose OpenAI or Gemini for semantic search, which those providers bill.
Is it made by Zotero?
No. It is a community project by Steven Yu (54yyyu) on GitHub. Zotero does not publish its own MCP server.
Do I need a Zotero API key?
No, not for local mode. With the Zotero desktop app running and its local API turned on, it reads your library with no key. You need a web API key only to reach your library without the desktop app, or to write on Zotero 9 and older.
Does Zotero have to be open?
Yes, in local mode. Keep Zotero running and tick "Allow other applications on this computer to communicate with Zotero" in Settings, Advanced. If searches return nothing, that setting is the usual cause.
Can it add or change items in my library?
Yes, once you allow it. On Zotero 10 or newer you approve writes once in a Zotero dialog; on older versions you add a Zotero web API key. Without either, it only reads.
Can it delete things?
Yes, once writes are on. It can move items and notes to Zotero's Trash, where you can restore them, merge duplicates, and permanently delete annotations and whole collections. Items inside a deleted collection stay in your library.
Can I use it with ChatGPT?
Yes, but it takes more work. You turn on ChatGPT Developer Mode, run the server in web mode and open a tunnel such as ngrok to your computer. That address has no password, so keep it private and close it when done.
Why does it use so much of Claude's context?
Its default 41 tools add about 17,000 tokens to every request. Turn off tool groups you do not need, or in Claude Code, Cursor or Codex use the agent skill it ships, which costs about 100 tokens until it is used.
Which package do I install, zotero-mcp or zotero-mcp-server?
zotero-mcp-server. The package named zotero-mcp on PyPI is a different, smaller project by kujenga.
Zotero MCP vs cookjohn's zotero-mcp plugin?
This one is a Python program with more tools and more frequent releases. cookjohn's version runs inside Zotero as an add-on, so there is no Python to install, and your assistant connects to it over a local address.
Examples
Find papers in your library on a topic
Find papers in my library on attention mechanisms
SourceSummarize a paper you saved
Summarize the key findings of this paper
SourceHighlight claims and box figures in a PDF
Highlight the main claims in this paper and box its key figures
SourceSearch your notes and annotations
Search my notes and annotations for mentions of 'reinforcement learning'
SourceExport BibTeX for a set of papers
Export the BibTeX citation for papers on machine learning
SourceSearch a 9,000-item library in several languages by meaning, with a Claude skill on top
Source
Information
updated Nov 2, 2026
- Publisher
- Community
- Package
zotero-mcp-server- Registry
- PyPI
- Transport
- stdio, Streamable HTTP
- Auth
- None
- Version
- 0.15.1
- License
- MIT
- Last commit
- Oct 16, 2026
- Open issues
- 48
- Listed in
- Official MCP registry
Other Zotero MCP servers
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 15Hide
- github.com · github.com
- github.com · github.com
- github.com · github.com
- zotero-mcp tool source (v0.15.2) · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- forums.zotero.org · forums.zotero.org
- github.com · github.com
- github.com · github.com