
Zotero MCP Plugin by cookjohn: Setup for Claude, Cursor and Other Apps
Lets Claude, Cursor and other assistants search your Zotero library, read PDFs and highlights, and organize collections.
Zotero MCP is a Zotero plugin that runs a small server on your own computer. Your assistant can then search your library, read PDF text and highlights, and browse collections. You install it in Zotero as an add-on, so there is no account, API key or separate program. Zotero must be open while you use it, and editing your library is off until you switch on Write Operations in the plugin settings.
Good for
- Researchers who want Claude or Cursor to answer questions from their own papers
- Students doing literature reviews who need quotes and highlights pulled from PDFs
- Zotero users who want to tidy tags and collections by asking in plain words
Works in
12 should work
Tap an app to see how to set it up and any known problems.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Supports hosted MCP servers.
Client does not support this transport.
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 --transport http zotero-mcp http://127.0.0.1:23120/mcp 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 Zotero 7+ running with the Zotero MCP plugin.
Read-only mode: Leave Write Operations switched off in the Zotero MCP plugin preferences (it is off by default).
Install the plugin first: download the latest zotero-mcp-plugin .xpi from the project's releases page, add it in Zotero under Tools, then Add-ons, restart Zotero, and make sure the server is enabled in the plugin preferences (default port 23120). The plugin documents this command for Claude Code.
From the project README. Source.
Tools
Lists your Zotero libraries
Returns the personal and group libraries your Zotero app has, with basic details for each.
Try: “Which Zotero libraries do I have?”
Read ·
get_librariesFinds items in your library by many filters
Searches titles, authors, years, tags and item types with AND/OR logic and relevance scoring, and pages through results.
Try: “Find papers from 2022 to 2024 about graph neural networks in my library.”
Read ·
search_libraryFinds a library by name
Looks up libraries by name, which helps when you have several group libraries.
Try: “Find my lab group library.”
Read ·
search_librariesFinds highlights and notes by color or tag
Searches PDF highlights, notes and other annotations by text, color or tag and ranks the best matches.
Try: “Show my yellow highlights that mention sample size.”
Read ·
search_annotationsShows full details for one item
Returns the complete record for one item: authors, date, DOI, tags, attachments and more.
Try: “Show the details for item key ABCD1234.”
Read ·
get_item_detailsReads the highlights on specific items
Returns the annotations and comments you made on named items, filtered by color or tag, with your exact wording.
Try: “Quote my highlights on the Smith 2021 paper.”
Read ·
get_annotationsReads the text of PDFs, notes and abstracts
Extracts full text from PDFs, attachments, notes, abstracts and saved web pages. Text from scanned PDFs may contain errors.
Try: “Read the full text of the Smith 2021 PDF and summarize the methods.”
Read ·
get_contentLists your collections
Returns your collections (folders) in a paged list.
Try: “List all my collections.”
Read ·
get_collectionsFinds collections by name
Searches collection names for a keyword.
Try: “Find my collection about thesis chapters.”
Read ·
search_collectionsShows details of one collection
Returns the details of one collection by its key.
Try: “Tell me about the collection with key XYZ123.”
Read ·
get_collection_detailsLists the items in a collection
Returns the items inside one collection, with paging.
Try: “What papers are in my Literature Review collection?”
Read ·
get_collection_itemsLists folders inside a collection
Returns the subcollections of a collection, and can go all the way down.
Try: “Show the whole folder tree under Thesis.”
Read ·
get_subcollectionsCreates a new collection
Makes a new collection, optionally inside a parent collection. Needs Write Operations turned on in the plugin.
Try: “Create a collection called Chapter 3 Sources.”
Write ·
create_collectionRenames or moves a collection
Renames a collection or moves it under another parent, or to the top level. Needs Write Operations turned on in the plugin.
Try: “Rename the collection Misc to Reading Queue.”
Write ·
update_collectionDeletes a collection
Deletes a collection. Its items stay in your library unless the call asks to trash them too. Needs Write Operations turned on in the plugin.
Try: “Delete my empty collection Old Drafts.”
Delete ·
delete_collectionAdds items to a collection
Puts one or more items into a collection by key. Needs Write Operations turned on in the plugin.
Try: “Add these three papers to my Methods collection.”
Write ·
add_items_to_collectionTakes items out of a collection
Removes items from a collection without deleting them from your library. Needs Write Operations turned on in the plugin.
Try: “Remove the Jones 2019 paper from the Reading Queue collection.”
Write ·
remove_items_from_collectionSearches inside the text of your PDFs
Finds words across the content of your documents and returns snippets with surrounding context.
Try: “Which of my PDFs mention "difference-in-differences"?”
Read ·
search_fulltextGets an item abstract
Returns the abstract of one item as text or JSON.
Try: “Show me the abstract of the Smith 2021 paper.”
Read ·
get_item_abstractFinds papers by meaning, not just keywords
Matches your question to your library by concept using embedding vectors, including across languages. The plugin can turn this off.
Try: “Find papers in my library about how people trust automated systems.”
Read ·
semantic_searchFinds papers similar to one you pick
Returns items that are conceptually close to a given item.
Try: “Find papers similar to the Smith 2021 paper.”
Read ·
find_similarChecks the semantic search index
Reports whether semantic search is ready and index statistics.
Try: “Is my semantic search index up to date?”
Read ·
semantic_statusBrowses the cached full-text store
Lists, searches, fetches and gives stats on the plugin cache of extracted PDF text. It only reads.
Try: “How many documents are in the full-text cache?”
Read ·
fulltext_databaseCreates or edits a note
Creates a note, replaces its content, or appends to it. Markdown is converted. Needs Write Operations turned on in the plugin.
Try: “Add a note to the Smith 2021 paper summarizing its main finding.”
Write ·
write_noteAdds or removes tags
Adds, removes or replaces tags on items. Needs Write Operations turned on in the plugin.
Try: “Tag these five papers with "to-read".”
Write ·
write_tagEdits item fields
Changes title, abstract, date, DOI, authors and other fields on an item. Needs Write Operations turned on in the plugin.
Try: “Fix the publication year of this item to 2020.”
Write ·
write_metadataCreates items or imports a file
Creates a new item, moves a stray attachment under a parent item, or imports a local file as an attachment. Needs Write Operations turned on in the plugin.
Try: “Import ~/Papers/draft.pdf and attach it to the Smith 2021 item.”
Write ·
write_itemAdds papers by DOI, arXiv ID, ISBN or PMID
Uses Zotero own lookup to add items from identifiers, including metadata and attachment download. Needs Write Operations turned on in the plugin.
Try: “Add arXiv 1706.03762 to my library.”
Write ·
add_by_identifier
Read from the source code
Permissions
low risk · 4 things to watch
Low risk
Out of the box it can only read your Zotero library and PDF text, and only from your own computer. If you switch on Write Operations, it can also edit notes, tags and metadata and delete collections, so switch it on only for a session where you want edits.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only modeHow to turn it on
Watch out for
Turning on Write Operations lets it edit and delete
With the switch on, the assistant can change notes, tags and metadata, move items between collections and delete a collection. Leave it off unless you need edits. github.com
A collection delete can trash its items
delete_collection keeps the items by default but can send them to the Zotero trash when asked. Zotero trash is recoverable until you empty it. github.com
Remote access setting opens it to your network
If you tick "Allow remote access", the server listens on every network interface instead of only your computer, and it has no sign-in. Keep it off. github.com
Semantic search can send text to an embedding API
Semantic search uses an OpenAI-style or Ollama embedding service. With a cloud service, text from your library goes to that provider; Ollama keeps it on your machine. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | Write Operations is off by default in the plugin preferences; the write tools are hidden from the tool list and collection edit tools refuse to run until you switch it on. |
|---|---|
| Sign-in and keys | No sign-in. The server listens on 127.0.0.1 and no credentials are used. |
Questions
Is Zotero MCP official?
No. It is a community project by cookjohn, not made by Zotero.
Do I need an API key or a Zotero account login?
No. It runs inside the Zotero app on your computer and talks to your assistant at a local address, so there is no key or sign-in.
Which AI apps does it work with?
The plugin generates settings for Claude Code, Claude Desktop, Cursor, Codex CLI, Gemini CLI, Cline and others such as Cherry Studio. Claude Desktop and Cursor connect through the mcp-remote helper. Pick your app in the install box above.
Can I stop it from changing my library?
Yes, and that is the default. Write Operations is off in the plugin settings, so note, tag, metadata and import tools are hidden and collection edit tools refuse to run. Search, read and highlight tools stay available.
Does it work when Zotero is closed?
No. The server lives inside the Zotero app, so Zotero must be running with the plugin's server enabled. It listens on port 23120 unless you change it in the plugin preferences.
Why does `npx zotero-mcp` not install this?
The npm package called zotero-mcp is an older standalone build, last published in August 2025, that needs a plugin running. The current project puts the server inside the plugin, so follow the install box instead.
Does it send my library to a third party?
Not by itself. Reading and searching happen locally. Only semantic search with a cloud embedding service sends text out, and you control that setting.
Information
updated Nov 2, 2026
- Publisher
- Community
- Transport
- Streamable HTTP
- Auth
- None
- Version
- 1.1.0
- License
- MIT
- Last commit
- Sep 9, 2026
- Open issues
- 13
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 5Hide
- github.com · github.com
- github.com · github.com
- github.com · github.com
- github.com · github.com
- registry.npmjs.org · registry.npmjs.org