# Zotero MCP server

> Search, read, annotate and add papers in your Zotero research library, using the local app or the web API.

- Listing: https://mcp.tc/i/zotero
- Connect: this is a local (stdio) server; install it on your machine (see Install). The listing link is a page, not an MCP endpoint.
- Type: local (stdio)
- Auth: API key
- Category: [Docs & Knowledge](https://mcp.tc/c/docs-knowledge)
- Vendor: 54yyyu (Steven Yu)
- Homepage: <https://stevenyuyy.com/zotero-mcp/>
- Docs: <https://stevenyuyy.com/zotero-mcp/>
- Repository: <https://github.com/54yyyu/zotero-mcp>
- Package: pypi `zotero-mcp-server`

## About

Connects an AI assistant to a Zotero research library. You can search by title, author, tag, collection, full text or meaning (semantic search), read metadata, BibTeX and PDF text, place highlights and notes on PDFs, and add papers by DOI, URL, ISBN, BibTeX or file. Collections, tags and duplicates can be managed, and optional Scite citation tallies are available.

Runs locally over stdio as the Python package zotero-mcp-server (uvx or pip, Python 3.10+). Local mode reads from the Zotero 7+ desktop app with its local API enabled and needs no key. Web or hybrid mode needs ZOTERO\_API\_KEY and ZOTERO\_LIBRARY\_ID. Optional tool groups are chosen with ZOTERO\_MCP\_TOOLSETS.

## What it can do

- Search the library by title, author, tag, collection, full text or meaning
- Read item metadata, BibTeX, full text and PDF page ranges
- Create highlights, area boxes and notes on PDFs
- Add papers by DOI, URL, ISBN, BibTeX or file
- Manage collections and tags and merge duplicates
- Check citation tallies and retraction alerts with Scite (optional)

## Example prompts

- "Find papers in my library on attention mechanisms"
- "Summarize the key findings of this paper"
- "Highlight the main claims in this PDF"
- "Add the paper with DOI 10.1000/xyz123 to my Zotero library"

## Install

### Claude Code

1. Run this in a terminal, in your project folder:

```bash
claude mcp add --transport stdio zotero --env "ZOTERO_API_KEY=<YOUR_ZOTERO_API_KEY>" -- uvx --from zotero-mcp-server zotero-mcp serve
```

2. Start Claude Code and type `/mcp`. **zotero** should show as connected.

Add `--scope user` to make it available in every project. Replace the placeholders with your own values.

### Claude Desktop

1. Open **Settings → Developer → Edit Config**. It opens `claude_desktop_config.json`. Add:

`claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "zotero": {
      "command": "uvx",
      "args": [
        "--from",
        "zotero-mcp-server",
        "zotero-mcp",
        "serve"
      ],
      "env": {
        "ZOTERO_API_KEY": "<YOUR_ZOTERO_API_KEY>"
      }
    }
  }
}
```

2. Save the file and restart Claude Desktop. Replace the placeholders with your own values.

Needs uv (Python) on your computer. The file lives in `~/Library/Application Support/Claude/` on macOS and `%APPDATA%\Claude\` on Windows.

### Cursor

[Add to Cursor](<https://cursor.com/install-mcp?name=zotero&config=eyJjb21tYW5kIjoidXZ4IiwiYXJncyI6WyItLWZyb20iLCJ6b3Rlcm8tbWNwLXNlcnZlciIsInpvdGVyby1tY3AiLCJzZXJ2ZSJdLCJlbnYiOnsiWk9URVJPX0FQSV9LRVkiOiI8WU9VUl9aT1RFUk9fQVBJX0tFWT4ifX0%3D>) (opens Cursor)

Or add it by hand to `~/.cursor/mcp.json` (all projects) or `.cursor/mcp.json` (this project):

`mcp.json`:

```json
{
  "mcpServers": {
    "zotero": {
      "command": "uvx",
      "args": [
        "--from",
        "zotero-mcp-server",
        "zotero-mcp",
        "serve"
      ],
      "env": {
        "ZOTERO_API_KEY": "<YOUR_ZOTERO_API_KEY>"
      }
    }
  }
}
```

Needs uv (Python) on your computer. Replace the placeholders with your own values.

### VS Code

Add it to `.vscode/mcp.json`. VS Code asks for the secret the first time and stores it securely:

`.vscode/mcp.json`:

```json
{
  "servers": {
    "zotero": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "zotero-mcp-server",
        "zotero-mcp",
        "serve"
      ],
      "env": {
        "ZOTERO_API_KEY": "${input:zotero-api-key}"
      }
    }
  },
  "inputs": [
    {
      "type": "promptString",
      "id": "zotero-api-key",
      "description": "ZOTERO_API_KEY",
      "password": true
    }
  ]
}
```

Needs uv (Python) on your computer.

### Devin Desktop

1. Add it to `~/.config/devin/mcp_config.json` (macOS and Linux) or `%APPDATA%\devin\mcp_config.json` (Windows):

`mcp_config.json`:

```json
{
  "mcpServers": {
    "zotero": {
      "command": "uvx",
      "args": [
        "--from",
        "zotero-mcp-server",
        "zotero-mcp",
        "serve"
      ],
      "env": {
        "ZOTERO_API_KEY": "<YOUR_ZOTERO_API_KEY>"
      }
    }
  }
}
```

2. Refresh the MCP server list in Cascade. Replace the placeholders with your own values.

Devin Desktop is the new name for Windsurf.

### Codex

```bash
codex mcp add zotero --env "ZOTERO_API_KEY=<YOUR_ZOTERO_API_KEY>" -- uvx --from zotero-mcp-server zotero-mcp serve
```

Or edit `~/.codex/config.toml` directly:

`config.toml`:

```toml
[mcp_servers.zotero]
command = "uvx"
args = ["--from", "zotero-mcp-server", "zotero-mcp", "serve"]
env = { ZOTERO_API_KEY = "<YOUR_ZOTERO_API_KEY>" }
```

Needs uv (Python) on your computer. Replace the placeholders with your own values.

### Gemini CLI

```bash
gemini mcp add -e "ZOTERO_API_KEY=<YOUR_ZOTERO_API_KEY>" zotero uvx -- --from zotero-mcp-server zotero-mcp serve
```

This adds it to the current project. Add `-s user` to use it everywhere.

### Any client

Most clients that start local servers accept this shape:

```json
{
  "mcpServers": {
    "zotero": {
      "command": "uvx",
      "args": [
        "--from",
        "zotero-mcp-server",
        "zotero-mcp",
        "serve"
      ],
      "env": {
        "ZOTERO_API_KEY": "<YOUR_ZOTERO_API_KEY>"
      }
    }
  }
}
```

Zed puts servers under `context_servers` in its settings, with the same `command`, `args` and `env` fields.

Needs uv (Python) on your computer. Replace the placeholders with your own values.

## Details

- Server version: 0.13.1
- Last checked: 2026-10-03
- Listed: 2026-10-03
- Updated: 2026-10-03

---
Source: https://mcp.tc/i/zotero (mcp.tc is an independent directory, not affiliated with this server's publisher). Corrections: https://mcp.tc/report
