# Zotero MCP

Give an AI assistant access to your Zotero library to find items, inspect metadata, and read PDF text. Useful when you want to work with sources without leaving your coding assistant.

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

## What it does

Zotero MCP connects a Zotero library to an AI assistant over MCP. It provides three tools: search library items with a text query, fetch metadata for a selected item, and retrieve that item's full text, including PDF contents. An assistant can locate a source first, then request its details or text.

The server can use Zotero's local API or the Zotero Web API. For local access, enable communication with other applications in Zotero settings and keep the desktop app running. Web API access requires a Zotero API key and library ID, so those credentials must be ready before setup. In Claude Code, you can register the server with `uvx`.

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `ZOTERO_LOCAL`, `ZOTERO_API_KEY`, `ZOTERO_LIBRARY_ID`, `ZOTERO_LIBRARY_TYPE` — 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_LOCAL=<ZOTERO_LOCAL> --env ZOTERO_API_KEY=<ZOTERO_API_KEY> --env ZOTERO_LIBRARY_ID=<ZOTERO_LIBRARY_ID> --env ZOTERO_LIBRARY_TYPE=<ZOTERO_LIBRARY_TYPE> --transport stdio kujenga-zotero-mcp -- uvx zotero-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from zotero-mcp <command>

### Codex

**Platform CLI**
```bash
codex mcp add kujenga-zotero-mcp --env ZOTERO_LOCAL=<ZOTERO_LOCAL> --env ZOTERO_API_KEY=<ZOTERO_API_KEY> --env ZOTERO_LIBRARY_ID=<ZOTERO_LIBRARY_ID> --env ZOTERO_LIBRARY_TYPE=<ZOTERO_LIBRARY_TYPE> -- uvx zotero-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from zotero-mcp <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "kujenga-zotero-mcp": {
            "command": "uvx",
            "args": [
                "zotero-mcp"
            ],
            "env": {
                "ZOTERO_LOCAL": "<ZOTERO_LOCAL>",
                "ZOTERO_API_KEY": "<ZOTERO_API_KEY>",
                "ZOTERO_LIBRARY_ID": "<ZOTERO_LIBRARY_ID>",
                "ZOTERO_LIBRARY_TYPE": "<ZOTERO_LIBRARY_TYPE>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from zotero-mcp <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "kujenga-zotero-mcp": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "zotero-mcp"
            ],
            "env": {
                "ZOTERO_LOCAL": "<ZOTERO_LOCAL>",
                "ZOTERO_API_KEY": "<ZOTERO_API_KEY>",
                "ZOTERO_LIBRARY_ID": "<ZOTERO_LIBRARY_ID>",
                "ZOTERO_LIBRARY_TYPE": "<ZOTERO_LIBRARY_TYPE>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from zotero-mcp <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e ZOTERO_LOCAL=<ZOTERO_LOCAL> -e ZOTERO_API_KEY=<ZOTERO_API_KEY> -e ZOTERO_LIBRARY_ID=<ZOTERO_LIBRARY_ID> -e ZOTERO_LIBRARY_TYPE=<ZOTERO_LIBRARY_TYPE> kujenga-zotero-mcp uvx zotero-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from zotero-mcp <command>

## When to use it
- search a Zotero library with a text query
- retrieve metadata for a specific library item
- read the full text of a PDF item
- give an assistant publication details for source-based work

## Example prompts
- Find items in my Zotero library about neural networks in medicine.
- Retrieve the complete metadata for this Zotero item.
- Read the PDF text from the publication you found.

## Similar
- [Zotero MCP](https://affpapa.org/en/nevibecode/mcp/zotero-mcp.md) — MCP server · ★ 5548
- [arxiv-mcp-server](https://affpapa.org/en/nevibecode/mcp/arxiv-mcp-server.md) — MCP server · ★ 3231
- [PaperBanana](https://affpapa.org/en/nevibecode/mcp/paperbanana.md) — MCP server · ★ 2417
- [MATLAB MCP Server](https://affpapa.org/en/nevibecode/mcp/matlab-mcp-server.md) — MCP server · ★ 1716
- [Hex Research](https://affpapa.org/en/nevibecode/mcp/hex-research.md) — MCP server · ★ 583
- [DocsAgent — Zotero, Obsidian & Apple Notes MCP Server](https://affpapa.org/en/nevibecode/mcp/docsagent-zotero-obsidian-apple-notes-mcp-server.md) — MCP server · ★ 578

## Other versions with the same name
- [Zotero MCP · 54yyyu](https://affpapa.org/en/nevibecode/mcp/zotero-mcp.md) — ★ 5548

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