zotero-claude-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ZOTERO_API_KEY | No | Your Zotero API key, used for web API access. Read/write permission needed for write tools; read-only is fine for everything else. | |
| ZOTERO_USER_ID | No | Your numeric Zotero user ID, used for web API access. | |
| ZOTERO_DATA_DIR | No | Path to your Zotero data directory, if it is not found automatically. | |
| ZOTERO_LIBRARY_TYPE | No | Library type, e.g. 'user'. Defaults to 'user'. | user |
| ZOTERO_DEFAULT_SOURCE | No | Default source for read tools: 'local' or 'web'. Defaults to 'local'. | local |
| ZOTERO_BASE_ATTACHMENT_PATH | No | Base path for attachment files, if needed. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| zotero_searchA | Search the user's Zotero library for references by keyword, author, tag, item type, year or collection. Returns a ranked list with title, authors, year, venue and the item key needed by the other tools. Use this first for any question about what is in the user's library or to find a paper they have saved. |
| zotero_get_itemA | Fetch the complete record for one or more Zotero items by item key: every metadata field, all creators, tags, collections, attached notes (as plain text) and attachment file paths. Use after zotero_search when you need abstracts, DOIs, notes or the PDF path. |
| zotero_fulltext_searchA | Search the full text of PDFs and notes stored in the library (not just metadata), returning the parent references that contain the phrase. Use when the user asks which of their papers discuss or mention something. |
| zotero_collectionsA | List the library's collections as a tree, with item counts and collection keys. |
| zotero_collection_itemsA | List the references in a collection, by collection key or (local) name. |
| zotero_tagsA | List tags used in the library with how many items carry each one. |
| zotero_recentA | List the most recently added or modified references — useful for 'what have I saved lately'. |
| zotero_attachmentsA | Resolve the on-disk paths of files (PDFs, HTML snapshots) attached to the given items, so the PDF can then be read with the Read tool. Local source only. |
| zotero_bibliographyA | Format references as a bibliography or in-text citations in any CSL style (apa, chicago-note-bibliography, ieee, nature, vancouver, …). Uses zotero.org's citation processor when a web API key is configured; otherwise falls back to a plain author–date rendering from local metadata. |
| zotero_librariesA | List available libraries: local libraries on this machine and group libraries on zotero.org. |
| zotero_create_itemA | Save a new reference to the user's Zotero library via the web API (it then syncs to the desktop app). Requires a configured API key with write access. Ask the user before writing unless they clearly asked you to save something. |
| zotero_add_noteB | Attach a note to an existing Zotero item (or add a standalone note) via the web API. Requires a configured API key with write access. |
| zotero_create_collectionA | Create a collection (folder) in the user's Zotero library via the web API, optionally nested under a parent. If a collection with the same name already exists under that parent, its key is returned instead of making a duplicate. Returns the collection key. |
| zotero_update_collectionA | Rename a collection and/or move it under another parent (or to the top level) via the web API. |
| zotero_delete_collectionA | Delete a collection via the web API. The items in it are NOT deleted — they stay in the library and in any other collections. Refuses if the collection has subcollections. Always confirm with the user first. |
| zotero_add_to_collectionA | File existing items into a collection via the web API (items can be in several collections at once; this does not remove them from others). Works in batches, so pass all the keys in one call. Set create=true to make the collection if it doesn't exist. |
| zotero_remove_from_collectionA | Take items out of a collection via the web API. The items themselves stay in the library. |
| zotero_update_itemA | Edit an existing item's metadata via the web API: set or clear any fields (title, date, DOI, abstractNote, volume, pages, extra, …), replace its creators, add or remove tags. Only the fields you pass are changed. |
| zotero_tag_itemsA | Add and/or remove tags on many items at once via the web API. |
| zotero_rename_tagA | Rename a tag on every item that carries it (merging into the new name if it already exists), via the web API. |
| zotero_delete_tagsA | Remove tags from the whole library (from every item) via the web API. Items are untouched otherwise. Confirm with the user first. |
| zotero_trash_itemsA | Move items to the Zotero trash (recoverable), or restore them from it with restore=true, via the web API. Never deletes permanently. Confirm with the user first. |
| zotero_statusA | Report how this connector is configured: data directory, item counts, whether the web API key works, and what to fix if something is missing. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 23 tools
Each tool targets a distinct resource or action: search vs fulltext search vs recent, item retrieval vs attachment path resolution, and separate collection/tag operations are clearly scoped. The descriptions reinforce the boundaries, so an agent should rarely misselect.
All tools share the zotero_ prefix and most action tools follow verb_noun (create_item, update_collection, rename_tag, trash_items). A few noun-only names like zotero_recent, zotero_attachments, and zotero_collections break the otherwise consistent pattern, but the convention remains predictable and readable.
23 tools is on the heavy end for an MCP server, though the Zotero domain legitimately spans items, collections, tags, notes, search, bibliography, and configuration. The count feels justified but is slightly beyond the ideal well-scoped range.
The tool surface covers the core library lifecycle thoroughly: search and retrieval, item creation/update/trash, notes, collection CRUD, tag management, bibliography generation, attachment resolution, and status diagnostics. There are no major dead ends or obvious missing operations for the stated purpose.