Skip to main content
Glama
Jayaram-Nambiar

zotero-mcp

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ZOTERO_API_KEYYesYour private Zotero API key, created at zotero.org/settings/keys with access to your personal library (and write access if agents should modify records). Required to access the Zotero API.
ZOTERO_USER_IDYesYour numeric Zotero user ID, found on your zotero.org API key settings page. It is a number, not your username. Required for Word citations.

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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_zoteroA

Search the user's Zotero library by title, creator, or year.

Attachments, notes, and annotations are omitted. Results are one page; follow next_start until it is null.

list_zotero_itemsB

Page through bibliographic items in the library or in one collection.

list_zotero_collectionsA

List collections in the user's library, following Zotero's 100-item pages.

get_zotero_itemB

Fetch one reference, including its abstract and a Vancouver bibliography line.

zotero_apiA

Send one Zotero Web API v3 request to the configured user library.

Reads may still use the local app through the bibliography tools. This tool always uses api.zotero.org, including GET, so the response matches the account the API key can change. Create items with POST items and a JSON array. Put collection keys inside each item's collections array. Update one item with PATCH items/ITEMKEY or PUT of the full item data, and send its current version. Delete with DELETE and confirm_delete true.

upload_zotero_fileA

Store a local file on an attachment item through the Web API upload flow.

Create the attachment first with zotero_api. A new child attachment uses itemType attachment, linkMode imported_file, parentItem, and contentType. Files already stored with the same MD5 are left unchanged. The upload limit here is 100 MB.

embed_zotero_word_fieldsA

Replace citation markers with Word fields the Zotero plugin can refresh.

Markers: {{zotero:ITEMKEY}}, {{zotero:KEY1+KEY2}}, {{zotero:ITEMKEY|locator=12|label=page|prefix=see|suffix=.}}, and {{zotero:bibliography}}. Open the result in Word and choose Zotero, Refresh.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 7 tools

Disambiguation4/5

The read tools are clearly separated by action: search_zotero (query), list_zotero_items (paginate), list_zotero_collections (collections), and get_zotero_item (single fetch). The only fuzzy boundary is zotero_api, which is a raw catch-all that can technically do everything the other tools do, but its description frames it explicitly as the Web API escape hatch, so confusion is limited.

Naming Consistency4/5

All names use snake_case with a verb-led pattern (search_, list_, get_, upload_, embed_) plus a domain noun. The placement of 'zotero' varies (search_zotero vs list_zotero_items vs zotero_api), which is a minor cosmetic inconsistency but nothing confusing.

Tool Count5/5

Seven tools is well-scoped for a Zotero library server, with dedicated read tools plus file upload, word-field embedding, and a raw API fallback. Each tool earns its place without redundancy.

Completeness4/5

Reads (search, list items, list collections, get item), file upload, and word-field embedding are covered, and zotero_api provides the create/update/delete path so there are no hard dead ends. However, first-class create/update/delete and collection management are only reachable via the raw API, leaving minor ergonomic gaps.

Maintenance

ActivityMaintained
ResponsivenessNo issues