nanda mochammad
Applied AI

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

10 min read

Hi, and welcome to a setup guide. Today: connecting Claude to your Zotero library without doing the setup yourself, by letting Claude Code install and configure the Zotero MCP for you.

By the end of this article, you will be able to connect Claude to your Zotero library with one prompt. You will know which two things to prepare, what to type, and how to confirm it really worked, on both macOS and Windows.

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 use most. If you already use Claude Code, you can ask it to do the whole setup. You watch it work, then check that it actually connected.

This guide covers the 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. It goes through a small bridge called an MCP server. So instead of pasting abstracts into chat, you just 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). Then a single, clear prompt is enough. It will 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. That 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), and where to put it (user scope). It also asks Claude Code to prove it worked at the end. Asking for the proof in the same prompt 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. Then it registers 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

Skipping these checks is the usual reason nothing works later. Do all three.

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 library now.

Step 06: When the result doesn’t match

Tell Claude Code what you saw

When something’s off, you don’t debug alone. Describe the mismatch to Claude Code and let it fix it. Paste the exact output you got and say “this isn’t what we expected, fix it.” The usual causes:

  • ✗ 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 and 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). A clean restart fixes a lot.
macOS vs Windows, at a glance

The differences, in one place

Most of this is the same 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.

Recap

The goal was to connect Claude to your Zotero library with one prompt, and to know how to confirm it worked. The main points:

  • You only need two things ready: Zotero 7 and a working Claude Code.
  • One toggle is on you: Zotero’s “allow other applications” setting. Then keep Zotero open.
  • Put Claude Code in auto mode and paste the prompt. Ask for proof in the same prompt.
  • Verify with three checks: claude mcp list, /mcp, and a real question about your library.
  • If something is off, paste the output back to Claude Code. Most failures are Zotero not open or Claude Code needing a restart.

The work moves to Claude Code. Your job is to ask clearly and check the result.

I hope this guide helps you. Thanks for reading, and if it saved you some setup time, share it with someone who needs it.

Cited sources