nanda mochammad
Applied AI

Let Claude Code set up the Zotero MCP for you: a prompt-first guide

9 min read

There is a manual way to connect Claude to your Zotero library: install a package, edit a config file, restart. I wrote that one up here. This is the lazy way, and honestly the one I reach for: if you already use Claude Code, you can ask it to do the whole setup, watch it work, and then check that it actually connected.

So this guide is less about commands and more about two things you do have to get right: what to say, and how to confirm it worked. You won’t install a single package by hand; Claude Code handles that part. Everything here works on macOS and Windows; where they differ, I’ve split the step.

Overview

What the Zotero MCP gives you, and where it stops

Once it’s connected, Claude can reach your Zotero library directly through a small bridge called an MCP server, so instead of pasting abstracts into chat, you ask.

How this works

You prompt, Claude Code does the rest

Claude Code can run commands and edit files on your machine. Put it in auto mode (its auto-accept mode, where it stops asking permission for each step) and a single, clear prompt is enough for it to install the Zotero bridge, register it, and check the connection.

Diagram: you prompt Claude Code; in auto mode it installs and configures the zotero-mcp server, which reads your Zotero library through the local API. You handle the prompts and the checks. Claude Code installs and configures it; you just prompt and check asks sets up reads You prompt & verify Claude Code auto mode zotero-mcp MCP server Zotero 7 local API · library
You give Claude Code a prompt and, at the end, verify. Everything in between (installing the server, wiring it up, running the connection check) is Claude Code's job, not yours.
Step 01: Two things to have ready

Before you start

You only need two things installed. Everything else, Claude Code will fetch for you.

  • Zotero 7, open it at least once. The connection relies on a feature that ships with version 7. To confirm you’re on 7, download Zotero and check Zotero → About Zotero (on Windows, Help → About) reads 7.x; the local connection needs version 7.
  • Claude Code, and confirm it actually runs before you start.

On macOS

Open Terminal (or iTerm). Check Claude Code is there:

claude --version

On Windows

Open Windows Terminal or PowerShell (Claude Code also runs under WSL if that’s your setup). Check:

claude --version

If that prints a version on either platform, you’re ready. If it doesn’t, install Claude Code first with npm install -g @anthropic-ai/claude-code (full instructions in the official setup docs), then re-run claude --version and come back once it prints a version.

Step 02: Turn on Zotero’s local connection

The one click Claude Code can’t do for you

Claude Code can’t reach inside Zotero’s settings window, so this single toggle is on you. It’s the same place on both platforms:

In Zotero, open Settings → Advanced (on macOS, Zotero → Settings → Advanced) and tick:

Allow other applications on this computer to communicate with Zotero

Then quit and reopen Zotero once, and leave it running. That switches on Zotero’s local API at http://localhost:23119, which is what the bridge talks to.

Step 03: Turn on auto mode and give it the prompt

The prompt is the whole job

Start Claude Code in a terminal by typing claude. Press Shift+Tab until the footer reads ⏵⏵ accept edits on (or bypass permissions), not plan or the plain default label. Then paste this:

Swap in your platform where it says so. That one paragraph tells Claude Code the goal (read my library), the method (local API, ZOTERO_LOCAL=true), where to put it (user scope), and, importantly, to prove it worked at the end. Asking for the proof in the same breath is what turns this from “probably done” into “verified.”

Step 04: Watch what it does

You don’t type these, but you’ll see them

In auto mode Claude Code works without stopping at each step. You’ll see it install a small Zotero bridge and then register it with a command that looks roughly like this:

claude mcp add --env ZOTERO_LOCAL=true --scope user zotero -- zotero-mcp

That’s the claude mcp add command doing the wiring: the name (zotero), the environment variable, the scope, and after the --, the program that runs the server. You don’t need to memorise it; it’s here so you recognise a working setup when it scrolls past. If Claude Code pauses to ask about something new, that’s normal; let it continue.

Step 05: Verify it’s really connected

Compare what you see to what you should see

This is the part people skip and then wonder why nothing works. Do all three checks.

1. Ask Claude Code to list its servers (or run it yourself in a normal terminal):

claude mcp list

2. Inside Claude Code, run the built-in panel:

/mcp

3. Actually use it. Ask in plain language:

Search my Zotero library for papers on retrieval-augmented generation and list three, with author and year.

Now line up your result against what it should be:

CheckWhat you should seeIf you see something else
claude mcp listA zotero line marked ✓ ConnectedNot listed, or ✗ failed → Step 02, then Step 06
/mcpzotero, connected, with a tool countPending or missing → restart Claude Code
Test questionReal titles from your library”Can’t reach Zotero” → Zotero isn’t open

If all three match the middle column, you’re done. Claude can read your shelves now.

Step 06: When the result doesn’t match

Tell Claude Code what you saw

The nice thing about doing this through Claude Code: when something’s off, you don’t debug alone. You describe the mismatch and let it fix it. Paste the exact output you got and say “this isn’t what we expected, fix it.” The usual culprits:

  • ✗ failed or not connected. Zotero isn’t running, or the local toggle from Step 02 is off. Open Zotero, confirm the setting, then ask Claude Code to retry.
  • Connected, but the test says it can’t reach the library. Same cause: Zotero must be open in the foreground for the local API to answer.
  • “command not found” during setup. The bridge installed somewhere the launcher can’t see. First find where it landed: run which zotero-mcp (macOS) or where zotero-mcp (Windows) in your terminal, copy the path it prints, then tell Claude Code: “use the full absolute path to the zotero server command,” and paste that path.
  • Windows only, the server won’t start. Some servers on Windows need to be launched through a wrapper. Tell Claude Code: “wrap the Zotero server command with cmd /c for Windows and update the config.”
  • Still stuck? Fully quit and reopen Claude Code. Local (stdio) servers are started fresh each session and aren’t reconnected automatically (docs), so a clean restart fixes a surprising amount.
macOS vs Windows, at a glance

The differences, in one place

Most of this is identical on both systems: you prompt, Claude Code does it. These are the only spots that actually differ:

 macOSWindows
Where you run Claude CodeTerminal or iTermWindows Terminal / PowerShell (or WSL)
Where its MCP config lives~/.claude.jsonC:\Users\you.claude.json
Launch wrapperNone neededMay need cmd /c (Step 06)
Zotero toggleSettings → AdvancedSettings → Advanced (same)

You shouldn’t have to touch the config file yourself (Claude Code manages it) but it’s worth knowing where it is if you ever want to look.

That’s it. Two prerequisites, one toggle, one good prompt, and three checks. The work moves to Claude Code; your job is to ask clearly and confirm honestly, which, when your reading list is the thing on the line, is exactly where your attention should be.

Cited sources