nanda mochammad
Applied AI

Connect Claude to your Zotero library with a local MCP server

7 min read

Claude is good at reasoning over a paper once you paste it in. The friction is everything before that: finding the right PDF, copying the abstract, remembering which of your 600 references made that one argument. Meanwhile your whole library already lives in Zotero, indexed and annotated.

This guide closes that gap. We’ll connect Claude to Zotero with a local MCP server so you can say “search my library for papers on retrieval and summarise the three most relevant” and Claude actually reads your collection. No uploading, no copy-paste, and nothing leaving your computer. It takes about ten minutes.

What you’re building

Claude, talking to your own library, locally

The Model Context Protocol (MCP) is a standard way to give an AI assistant tools. Here, the tool is your Zotero library. A small server, zotero-mcp, sits between Claude Desktop and Zotero: Claude asks it to search or fetch, it calls Zotero’s built-in local API, and the answer comes back, all three pieces running on your own machine.

Diagram: Claude Desktop talks to a local zotero-mcp server, which calls Zotero's local API to read your library; every hop stays on your own computer. Runs entirely on your computer; nothing leaves it MCP HTTP reads Claude Desktop you ask in chat zotero-mcp MCP server Zotero 7 local API · :23119 Your library papers · PDFs · notes
Claude Desktop launches the zotero-mcp server over MCP; the server reads your library through Zotero's local API on localhost. No paper, query, or note is sent to an outside service.

Because we use the local API rather than Zotero’s web API, you need no account key and your data never touches zotero.org. The trade-off: Zotero has to be running on your machine. For reading and analysis, the thing you actually want, that’s the right deal.

Step 01: Prerequisites

Three things to have ready

  • Zotero 7 (the local API this relies on ships with version 7).
  • Claude Desktop (macOS or Windows), the MCP host. This needs the Claude Desktop app (claude.ai/download), not claude.ai in a browser tab; the web app can’t launch local servers.
  • Python 3.10+ and a way to install a Python tool. I recommend uv; pip or pipx work too.

Check your Python version first. You want 3.10 or newer:

python3 --version

If you don’t have uv yet, install it:

# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Step 02: Turn on Zotero’s local API

Let other apps talk to Zotero

Open Zotero and go to Settings → Advanced (on macOS, Zotero → Settings → Advanced). Tick:

Allow other applications on this computer to communicate with Zotero

That switches on a small local server inside Zotero at http://localhost:23119. Quit and reopen Zotero once so the change takes effect, and leave Zotero running whenever you want Claude to reach your library.

Step 03: Install the MCP server

One command

Install the zotero-mcp-server package with whichever tool you have. uv is the cleanest because it installs into an isolated environment and puts the zotero-mcp command on your path:

# recommended
uv tool install zotero-mcp-server

# or, if you prefer pip / pipx
pip install zotero-mcp-server
pipx install zotero-mcp-server

The package is zotero-mcp-server; the command it gives you is zotero-mcp. Confirm it landed:

zotero-mcp --help
Step 04: Point Claude at it

Let the setup command wire it up

The package ships a helper that writes the Claude Desktop config for you, the easiest path:

zotero-mcp setup

That edits Claude Desktop’s config file and registers the server with the correct absolute path. If you’d rather do it by hand, open the config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

…and add the zotero server under mcpServers:

{
  "mcpServers": {
    "zotero": {
      "command": "zotero-mcp",
      "env": {
        "ZOTERO_LOCAL": "true"
      }
    }
  }
}
Step 05: Restart and verify

Quit Claude completely, then test

Fully quit Claude Desktop (the Desktop app, not claude.ai in a browser, and closing the window isn’t enough, quit the app) and reopen it. MCP servers are only picked up on a fresh launch. To check it loaded: in Claude Desktop, click the tools/slider icon at the bottom-left of the message box, and you should see zotero listed with its tools. If it’s not there, the config didn’t load (usually the comma issue above, or Claude Desktop needs a full quit-and-reopen). Once it’s there, try:

Search my Zotero library for papers about retrieval-augmented generation and list the five most relevant with their authors and year.

Claude will call the Zotero tools and answer from your actual collection. If you want a command-line sanity check too:

zotero-mcp setup-info
Going further (optional)

Semantic search, and letting Claude write back

Two upgrades worth knowing about:

Semantic search. Out of the box you get keyword search. With the optional semantic extra, the server can also build an embedding index so Claude finds papers by meaning, not just matching words. This helps when you don’t remember the exact title:

uv tool install "zotero-mcp-server[semantic]"  # add the optional extra
zotero-mcp update-db                            # build the semantic index
zotero-mcp update-db --fulltext                 # include full text of PDFs

Writing to your library. The local setup is read-focused, well suited to searching, summarising, and quoting. If you want Claude to add items or create collections, add web-API credentials (an API key from your Zotero account and your library ID) alongside ZOTERO_LOCAL.

 Local API (this guide)Web API
SetupOne toggle in ZoteroAPI key + library ID
PrivacyStays on your deviceGoes via zotero.org
Zotero must be openYesNo
Add / edit itemsRead-focusedFull read + write
Best forReading, search, analysisHeadless or write-heavy use
What you can ask now

A few prompts to start with

  • “Find papers in my Thesis collection about chunking strategies and compare their methods.”
  • “Summarise the key findings of [title] and pull three quotable lines with page numbers.”
  • “What gaps or disagreements show up across these five papers?”
  • “List everything I’ve tagged to-read from 2024 onward, newest first.”

This is, quietly, retrieval-augmented generation over your own library, except the “retriever” is Zotero and the corpus is the reading you already trust. That’s what makes it useful for a literature review instead of a generic chat.

That’s the whole setup: a toggle, one install, one config block, and a restart. Ten minutes of plumbing for a research assistant that finally knows what’s on your shelves.

Cited sources