MCP.so
Sign In

Zotero MCP Server

@kaliaboi

Basic information

Category

Other

License

MIT

Transports

stdio

Author

kaliaboi

About Zotero MCP Server

A connector for Claude Desktop to work with collection and sources on your Zotero Cloud.

Zotero MCP Server config

Add this server to your MCP-compatible client using the configuration below.

{
  "mcpServers": {
    "mcp-zotero": {
      "command": "npx",
      "args": [
        "mcp-zotero"
      ]
    }
  }
}

Zotero MCP Server tools

5

List all collections in your library

Get items in a specific collection

Get detailed information about a paper

Search your entire library

Get recently added papers

Overview

What is Zotero MCP Server?

Zotero MCP Server is a community-built zotero mcp connector that lets Claude and other MCP clients read your Zotero library: list collections, open items, search references and see recently added papers through the Zotero Web API.

It is an open-source Node.js project by kaliaboi (MIT license), published on npm as mcp-zotero. It is not made by the Zotero team. It talks to your Zotero cloud library (zotero.org) with an API key, so your library must be synced online; it does not read the Zotero desktop database directly.

How to use Zotero MCP Server?

You need Node.js (for npx/npm), a Zotero account with your library synced, and two values: a Zotero API key and your numeric user ID.

  1. Create an API key at https://www.zotero.org/settings/keys.
  2. Look up your user ID with the key:
curl -H "Zotero-API-Key: YOUR_API_KEY" https://api.zotero.org/keys/current

The JSON response contains a userID field; that number is your ZOTERO_USER_ID.

  1. Set the environment variables and check that they work:
export ZOTERO_API_KEY="your-api-key"
export ZOTERO_USER_ID="user-id-from-curl"

curl -H "Zotero-API-Key: $ZOTERO_API_KEY" \
     "https://api.zotero.org/users/$ZOTERO_USER_ID/collections"

If you see your collections, the credentials are valid.

  1. Install and run the server:
# Install globally
npm install -g mcp-zotero
mcp-zotero

# Or run directly with npx
npx mcp-zotero

The server exits with "Missing ZOTERO_API_KEY or ZOTERO_USER_ID environment variables" if either value is not set, so every client config below passes them in env.

Claude Desktop

Add this to claude_desktop_config.json (from the README; put your values in quotes):

{
  "mcpServers": {
    "zotero": {
      "command": "mcp-zotero",
      "env": {
        "ZOTERO_API_KEY": "YOUR_API_KEY",
        "ZOTERO_USER_ID": "YOUR_USER_ID"
      }
    }
  }
}

This form needs the global install. Without it, use "command": "npx" and "args": ["mcp-zotero"], as in the config shown on this page.

Claude Code

claude mcp add zotero \
  -e ZOTERO_API_KEY=YOUR_API_KEY \
  -e ZOTERO_USER_ID=YOUR_USER_ID \
  -- npx -y mcp-zotero

Cursor

Add the same mcpServers block to ~/.cursor/mcp.json (or .cursor/mcp.json in a project), using npx and mcp-zotero as the command and args, with both variables in env.

Key features of Zotero MCP Server

  • Lists every collection in your personal Zotero library with its key.
  • Returns the items in a collection with title, authors, date, item type, abstract, tags, DOI, URL and publication title.
  • Fetches full details for one item by its key, including the collections it belongs to.
  • Runs a Zotero Web API search across the whole library from a plain-text query.
  • Shows recently added papers sorted by date added (10 by default, capped at 100).
  • Small codebase: one TypeScript file using zotero-api-client and the official MCP SDK, stdio transport.
  • Distributed on npm as mcp-zotero; a Dockerfile and Smithery config are in the repo.

Zotero MCP Server tools

The server exposes five read-only tools, in two groups:

  • Browsing: get_collections lists your collections and their keys; get_collection_items takes a collection key and returns its items; get_item_details takes an item key and returns the full metadata for that paper.
  • Finding: search_library takes a query and searches the entire library; get_recent returns the newest additions, with an optional limit.

None of the tools create, edit or delete items. Claude can read and summarize your references, but cannot change your library through this server.

Use cases of Zotero MCP Server

  • Literature review prep: "List the papers in my 'Thesis – Chapter 2' collection and group them by method."
  • Find a half-remembered source: "Search my Zotero library for papers on transformer interpretability and give me their DOIs."
  • Quick citation details: "Get the details for this item and format the authors, year and journal for a reference list."
  • Catch up on recent reading: "Show the 20 papers I added most recently and summarize their abstracts."
  • Tag and topic overviews: "Which tags appear most often across the items in my 'Climate policy' collection?"

Zotero MCP Server vs alternatives

The main alternative is zotero-mcp by 54yyyu, a separate and much more actively developed community project written in Python (pip install zotero-mcp-server). It can connect through Zotero 7's local API (ZOTERO_LOCAL=true) as well as the Web API, and its README lists extras such as semantic search, PDF and annotation support, and an automatic zotero-mcp setup for Claude Desktop.

Pick kaliaboi's mcp-zotero server if you want a small, read-only Node.js server that only needs an API key and covers browsing and search. Pick 54yyyu's zotero-mcp server if you want local-library access without a cloud key, full-text or semantic search, or annotations. Neither is an official Zotero product.

Troubleshooting Zotero MCP Server

  • Server won't start / missing variables: check echo $ZOTERO_API_KEY and echo $ZOTERO_USER_ID, and make sure both are set in the client's env block, not only in your shell.
  • Command not found: run npm list -g mcp-zotero to check the global install. If it is broken, run npm uninstall -g mcp-zotero and then npm install -g mcp-zotero, or switch the config to npx.
  • Empty results: run the curl .../collections check above. A wrong user ID (not your username), an expired key, or a library that is not synced to zotero.org all return nothing.
  • Only some items or collections come back: an open issue (#14) reports that only the first page of Zotero API results (about 25 entries) is returned for collections and collection items. Very large libraries may look incomplete.
  • "fetch failed" on every call: an open issue (#18) reports that the server fails on networks that reach the internet only through an HTTP(S) proxy.

Frequently asked questions

1

Is Zotero MCP Server official?

No. It is a community project by kaliaboi, published under the MIT license. Zotero itself does not ship an MCP server.

2

Is the Zotero MCP Server free?

Yes. The server is open source and free on npm, and it uses the Zotero Web API with a free API key from your Zotero account settings.

3

Which credentials does it need?

Two environment variables: `ZOTERO_API_KEY` (created at zotero.org/settings/keys) and `ZOTERO_USER_ID` (the numeric `userID` returned by `https://api.zotero.org/keys/current`).

4

Does it work with my local Zotero desktop library?

Not directly. It reads your synced cloud library through the Web API, so items must be synced to zotero.org. For local access, see the 54yyyu zotero-mcp project mentioned above.

5

Can it read group libraries?

The code queries only your personal user library. Support for group libraries is an open feature request (#2).

6

Can Claude edit or delete my Zotero items?

No. All five tools only read data. You can also create the API key with read-only access to limit what the key can do.

7

Does this zotero mcp server work with Claude Code and Cursor?

Yes. It is a standard stdio MCP server, so any client that runs local MCP servers can launch it with `npx mcp-zotero` and the two environment variables. The README documents Claude Desktop; the Claude Code and Cursor setups above use the same command.

8

Is the project still maintained?

The repository is not archived, but its last code push was in February 2025, and several issues (pagination, proxy support, group libraries) are still open.

Comments

More Other MCP servers