# Cite Caddy

A remote MCP server that gives an assistant full read and write access to a Zotero library: items, collections, tags, attachments and notes.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI
- Author: herbertkokholm
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/herbertkokholm/cite-caddy
- Updated: 2026-10-15
- HTML: https://affpapa.org/en/nevibecode/mcp/cite-caddy

## What it does

Cite Caddy talks to Zotero through its Web API and exposes 39 tools. An assistant can search for items, add new ones, edit fields, apply tags, build and rename collections, pull down attachments and read their extracted text, handle notes, the trash and saved searches, and query Zotero's own item-type and field schema.

The server ships as a Docker container and expects a reverse proxy that terminates TLS in front of it. Clients only point at a URL, so there is nothing to run locally. In stdio mode the target library comes from `ZOTERO_LIBRARY_ID`, `ZOTERO_LIBRARY_TYPE` and `ZOTERO_API_KEY`; the key needs write permission, not read alone. In HTTP mode each caller supplies their own library ID, type and key through the `/login` form, and those keys are encrypted at rest with `MCP_TOKEN_STORE_KEY`.

Deleting and moving items deserves care. A Word document that cites an item through the Zotero plugin stores that item's key inside a live field code, and a library-to-library move is carried out as a removal followed by a fresh creation. Either operation breaks those citations without any warning: the document stays quiet and later shows stale field text. Calls that keep the key intact are fine. Six destructive tools, among them `delete_item_permanently` and `move_item_to_different_library`, take an optional `idempotency_key`, so a retry after an ambiguous response replays the earlier outcome rather than hitting Zotero again.

## Requirements
- Needs: Docker
- Remote server: `https://citecaddy.herbertkokholm.dk/mcp`

## Install

### Claude Code (native platform)

**Platform CLI: remote server**
```bash
claude mcp add --transport http cite-caddy https://citecaddy.herbertkokholm.dk/mcp
```

### Codex

**Platform CLI: remote server**
```bash
codex mcp add cite-caddy --url https://citecaddy.herbertkokholm.dk/mcp
```

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "cite-caddy": {
            "url": "https://citecaddy.herbertkokholm.dk/mcp"
        }
    }
}
```

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "cite-caddy": {
            "type": "http",
            "url": "https://citecaddy.herbertkokholm.dk/mcp"
        }
    }
}
```

### Gemini CLI

**Platform CLI: remote server**
```bash
gemini mcp add -t http cite-caddy https://citecaddy.herbertkokholm.dk/mcp
```

## When to use it
- look up an item in a Zotero library by its identifier
- tag a batch of items in one go
- sort items into collections and rename them
- download an attachment and read its extracted text
- clear out the trash and saved searches

## Example prompts
- Find every Zotero item whose DOI appears in `refs.txt` and tag them `to-read`
- Create a collection called Review 2025 and move the graph neural network papers into it
- Show me the notes on the item with key `ABCD1234`

## Similar
- [Zotero Native MCP](https://affpapa.org/en/nevibecode/mcp/zotero-native-mcp.md) — MCP server · ★ 11
- [cnki-export](https://affpapa.org/en/nevibecode/skills/cnki-export.md) — skill · 412 installs
- [Obsidian Vault MCP](https://affpapa.org/en/nevibecode/mcp/obsidian-vault-mcp.md) — MCP server · ★ 94
- [research-ideation](https://affpapa.org/en/nevibecode/skills/galaxy-dawn-research-ideation.md) — skill · 566 installs
- [zotero-obsidian-bridge](https://affpapa.org/en/nevibecode/skills/zotero-obsidian-bridge.md) — skill · 473 installs
- [Paper Distill MCP](https://affpapa.org/en/nevibecode/mcp/paper-distill-mcp.md) — MCP server · ★ 68

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
