# mcp-server-zotero-dev

Wires your AI assistant into a running Zotero 7+ so it can run JS, inspect the UI, read logs and rebuild the plugin you are working on.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 40
- Author: introfini
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/introfini/mcp-server-zotero-dev/tree/HEAD/packages/mcp-server
- Updated: 2026-09-20
- HTML: https://affpapa.org/en/nevibecode/mcp/mcp-server-zotero-dev

## What it does

The server ships 25 tools. They cover JavaScript execution in Zotero's privileged chrome context, DOM search and computed styles, debug log and error console reads, screenshots, builds through zotero-plugin-scaffold, plugin reload and read-only SELECT queries against the Zotero database.

Transport is Firefox's Remote Debugging Protocol, since Zotero 7+ runs on Firefox ESR. A companion add-on, MCP Bridge for Zotero, opens the DevTools server inside Zotero on port `6100`; this server then dials in over stdio. Skip the bridge and nothing connects. You also need Node.js 20 or newer.

Port, host and the Zotero data and profile paths are adjustable via `ZOTERO_RDP_PORT`, `ZOTERO_RDP_HOST`, `ZOTERO_DATA_DIR` and `ZOTERO_PROFILE_PATH`. Running Zotero with `-debugger` puts it on port `6000`, which is exactly why the bridge sticks to `6100`.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `ZOTERO_RDP_PORT`, `ZOTERO_RDP_HOST` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env ZOTERO_RDP_PORT=<ZOTERO_RDP_PORT> --env ZOTERO_RDP_HOST=<ZOTERO_RDP_HOST> --transport stdio mcp-server -- npx -y @introfini/mcp-server-zotero-dev
```
Replace <…> with your own values

### Codex

**Platform CLI**
```bash
codex mcp add mcp-server --env ZOTERO_RDP_PORT=<ZOTERO_RDP_PORT> --env ZOTERO_RDP_HOST=<ZOTERO_RDP_HOST> -- npx -y @introfini/mcp-server-zotero-dev
```
Replace <…> with your own values

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "mcp-server": {
            "command": "npx",
            "args": [
                "-y",
                "@introfini/mcp-server-zotero-dev"
            ],
            "env": {
                "ZOTERO_RDP_PORT": "<ZOTERO_RDP_PORT>",
                "ZOTERO_RDP_HOST": "<ZOTERO_RDP_HOST>"
            }
        }
    }
}
```
Replace <…> with your own values

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "mcp-server": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "@introfini/mcp-server-zotero-dev"
            ],
            "env": {
                "ZOTERO_RDP_PORT": "<ZOTERO_RDP_PORT>",
                "ZOTERO_RDP_HOST": "<ZOTERO_RDP_HOST>"
            }
        }
    }
}
```
Replace <…> with your own values

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e ZOTERO_RDP_PORT=<ZOTERO_RDP_PORT> -e ZOTERO_RDP_HOST=<ZOTERO_RDP_HOST> mcp-server npx -y @introfini/mcp-server-zotero-dev
```
Replace <…> with your own values

## When to use it
- run a JS snippet inside Zotero without restarting it
- locate a DOM node by CSS selector and read its styles
- pull errors from Zotero's console and fix the plugin
- rebuild the plugin and reload it in one pass
- query the Zotero database with a SELECT

## Example prompts
- Call `zotero_ping` and tell me which Zotero version answered.
- Find `#zotero-items-tree` and dump its computed styles.
- Read `zotero_read_errors` and explain why my plugin crashes on startup.

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 386989
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33918
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81115
- [browser-use](https://affpapa.org/en/nevibecode/mcp/browser-use.md) — MCP server · ★ 119160
- [Codebase Memory](https://affpapa.org/en/nevibecode/mcp/codebase-memory.md) — MCP server · ★ 47392
- [mcp-server](https://affpapa.org/en/nevibecode/mcp/mcp-server.md) — MCP server · ★ 43872

---
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
