/ Directory / Playground / Zotero MCP
● Community 54yyyu 🔑 Needs your key

Zotero MCP

by 54yyyu · 54yyyu/zotero-mcp

Chat with your Zotero library — search 10k papers, pull citations, and extract note quotes without leaving Claude.

Zotero MCP connects Claude to your Zotero library (local or web). Every tool respects your existing collections and tags. Great for lit-review synthesis, citation management, and turning highlights into outlines.

Why use it

Key features

Live Demo

What it looks like in practice

zotero-mcp.replay ▶ ready
0/0

Install

Pick your client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "zotero-mcp": {
      "command": "uvx",
      "args": [
        "zotero-mcp"
      ]
    }
  }
}

Open Claude Desktop → Settings → Developer → Edit Config. Restart after saving.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "zotero-mcp": {
      "command": "uvx",
      "args": [
        "zotero-mcp"
      ]
    }
  }
}

Cursor uses the same mcpServers schema as Claude Desktop. Project config wins over global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "zotero-mcp": {
      "command": "uvx",
      "args": [
        "zotero-mcp"
      ]
    }
  }
}

Click the MCP Servers icon in the Cline sidebar, then "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "zotero-mcp": {
      "command": "uvx",
      "args": [
        "zotero-mcp"
      ]
    }
  }
}

Same shape as Claude Desktop. Restart Windsurf to pick up changes.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "zotero-mcp",
      "command": "uvx",
      "args": [
        "zotero-mcp"
      ]
    }
  ]
}

Continue uses an array of server objects rather than a map.

~/.config/zed/settings.json
{
  "context_servers": {
    "zotero-mcp": {
      "command": {
        "path": "uvx",
        "args": [
          "zotero-mcp"
        ]
      }
    }
  }
}

Add to context_servers. Zed hot-reloads on save.

claude mcp add zotero-mcp -- uvx zotero-mcp

One-liner. Verify with claude mcp list. Remove with claude mcp remove.

Use Cases

Real-world ways to use Zotero MCP

Synthesize a literature review from tagged papers

👤 Grad students, researchers ⏱ ~60 min intermediate

When to use: You've tagged 30 papers with #thesis-ch3 and need to write section 3.2.

Prerequisites
  • Zotero running (local API enabled) — Zotero 7: Settings → Advanced → enable local API
  • API key if using web — zotero.org/settings/keys
Flow
  1. Pull the set
    List every item tagged thesis-ch3 in my Zotero. Just titles + years + first author.✓ Copied
    → Clean inventory, ~30 items
  2. Cluster
    Group those by methodological approach. Cite each item by zotero key.✓ Copied
    → 3–5 clusters with per-cluster citations
  3. Extract + write
    For cluster "quantitative RCTs", pull my highlights from each item and draft a synthesis paragraph with in-line citations.✓ Copied
    → Paragraph with (Author, Year) citations backed by actual highlights

Outcome: A drafted section 3.2 you can edit instead of starting from blank.

Pitfalls
  • PDF has no highlights, just scans — Run OCR in Zotero first (right-click → OCR PDF), then re-pull
Combine with: filesystem

Generate the bibliography for a paper you're writing

👤 Anyone writing with LaTeX ⏱ ~15 min beginner

When to use: You've cited 40 items across a draft and need a single references.bib.

Flow
  1. Scan for cites
    In /paper/main.tex, list every \cite{} key.✓ Copied
    → All cite keys enumerated
  2. Resolve
    For each, pull BibTeX from Zotero and write the result to /paper/references.bib. Flag any key with no match.✓ Copied
    → bib file written; unresolved cites listed

Outcome: A clean references.bib tied to your Zotero — no manual copy-paste.

Pitfalls
  • Cite key mismatch (Better BibTeX vs default) — Install the Better BibTeX extension in Zotero for stable pinned keys
Combine with: filesystem

Combinations

Pair with other MCPs for X10 leverage

zotero-mcp + filesystem

Write the extracted synthesis to your paper draft

Write the synthesis from Zotero into /paper/section-3-2.md.✓ Copied
zotero-mcp + memory

Remember per-paper key arguments across sessions

Store the 1-sentence thesis of each item from cluster A in memory.✓ Copied

Tools

What this MCP exposes

ToolInputsWhen to callCost
search_items query: str, tag?: str, collection?: str Find items in library free
get_item key: str Inspect one item in depth free
get_annotations key: str Pull your highlights/notes on a PDF free
get_bibtex keys: str[] Build bibliography for a draft free
list_collections none Navigate your organization free

Cost & Limits

What this costs to run

API quota
Local API: unlimited. Web API: rate-limited by Zotero.
Tokens per call
Item metadata ~200 tokens; annotations can run large
Monetary
Free
Tip
Prefer search_items with tag filters over listing all items

Security

Permissions, secrets, blast radius

Minimum scopes: library:read
Credential storage: API key in env var (web mode only)
Data egress: api.zotero.org (web mode) or localhost (local mode)
Never grant: library:write unless truly needed

Troubleshooting

Common errors and fixes

ECONNREFUSED localhost:23119

Zotero isn't running, or local API is disabled. Open Zotero; Settings → Advanced → enable local API.

Verify: `curl http://localhost:23119/api/users/0/items`
Web API 403

API key missing the library read scope. Regenerate at zotero.org/settings/keys.

BibTeX keys are auto-generated nonsense

Install Better BibTeX add-on and set a stable citekey format

Alternatives

Zotero MCP vs others

AlternativeWhen to use it insteadTradeoff
Obsidian MCPYour notes live in Obsidian, not ZoteroDifferent data model — not paper-centric
Direct Zotero CSL exportOne-time export, no LLM involvementNo querying, no synthesis

More

Resources

📖 Read the official README on GitHub

🐙 Browse open issues

🔍 Browse all 400+ MCP servers and Skills