Zotero

by gyger

32 stars
Not rated
GitHub

About

Integrates local Zotero libraries, enabling natural language interactions for exploring and analyzing personal research collections.

Details

Author
gyger
Repository
gyger/mcp-pyzotero
GitHub stars
32
License
MIT License
Categories
AI, Design, Developer Tools, Search, Cloud Service, Frontend
Tags
#integration

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Zotero
    Command (node, npx, python, etc.) uvx
    Arguments
    • Argument 1 --from
    • Argument 2 git+https://github.com/gyger/mcp-pyzotero.git
    • Argument 3 --with
    • Argument 4 mcp[cli]
    • Argument 5 --with
    • Argument 6 pyzotero
    • Argument 7 mcp
    • Argument 8 run
    • Argument 9 zotero.py

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

The connector is configured to work with local Zotero installations and currently only user libraries are supported.
By default it uses the userid 0, but you can also set the environment variable ZOTERO_USER_ID if needed:

uv run mcp install zotero.py -v ZOTERO_USER_ID=0

get_zotero_summary

Lists properties about your library including collections, recent items or tags.

get_collection_items

Get all items in a specific collection. Parameters: collection_key (string)

get_items_metadata

Get detailed information about specific paper(s), including abstract. Parameters: item_key (string)

search_library

Search your Zotero library. Parameters: query (string), mode (string) - possible modes are everything or titleCreatorYear.

- get_zotero_summary(): Lists properties about your library including collections, recent items or tags.
- get_collection_items(collection_key): Get all items in a specific collection
- get_items_metadata(item_key): Get detailed information about specific paper(s), including abstract.
- search_library(query, mode): Search your Zotero library, with two possible modes: everything or titleCreatorYear.

This functionality should be extended in the future.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "zotero": {
            "cwd": "optional",
            "env": {},
            "args": [
                "--from",
                "git+https://github.com/gyger/mcp-pyzotero.git",
                "--with",
                "mcp[cli]",
                "--with",
                "pyzotero",
                "mcp",
                "run",
                "zotero.py"
            ],
            "shell": false,
            "command": "uvx"
        }
    }
}

Linux

{
    "cwd": "optional",
    "env": [],
    "args": [
        "--from",
        "git+https://github.com/gyger/mcp-pyzotero.git",
        "--with",
        "mcp[cli]",
        "--with",
        "pyzotero",
        "mcp",
        "run",
        "zotero.py"
    ],
    "shell": false,
    "command": "uvx"
}

Macos

{
    "cwd": "optional",
    "env": [],
    "args": [
        "--from",
        "git+https://github.com/gyger/mcp-pyzotero.git",
        "--with",
        "mcp[cli]",
        "--with",
        "pyzotero",
        "mcp",
        "run",
        "zotero.py"
    ],
    "shell": false,
    "command": "uvx"
}

Windows

{
    "cwd": "optional",
    "env": [],
    "args": [
        "--from",
        "git+https://github.com/gyger/mcp-pyzotero.git",
        "--with",
        "mcp[cli]",
        "--with",
        "pyzotero",
        "mcp",
        "run",
        "zotero.py"
    ],
    "shell": false,
    "command": "uvx"
}

Zotero MCP Connector

> [!IMPORTANT]
> This project is retired. I am no longer convinced MCP is the interface one wants, better have direct CLI access.
> If you like MCPs, there are a few options, but I did not test them.
> - zotero-mcp
> - zotero-mcp-server
> - mcp-zotero

A Model Control Protocol (MCP) connector for integrating your local Zotero with Claude.
This enables direct read access to your local Zotero library through Claude's Desktop interface.
It depends on the ability to access a local web-api in Zotero 7.

This was inspired by a repository using Node.js and the web api: mcp-zotero.
This builds on the shoulders of the fantastic pyzotero library.

Installation

Run from local code (Recommended)

Information about Claude Desktop interacting with MCPs can be found here.

1. Use uv. Installation instructions can be found here.

2. Checkout the git project to local space and activate the virtual environment inside:

git clone https://github.com/gyger/mcp-pyzotero.git
cd mcp-pyzotero
uv sync

3. Enable the local API in Zotero 7:
Zotero Local API Settings

4. Add the server to your local Claude installation:

uv run mcp install zotero.py

Run encapsulated with uvx (Should work)

Edit the configuration for your Claude Desktop softare in the file.

- macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
- Windows: %APPDATA%\Claude\claude_desktop_config.json

and add the Zotero entry

{
"mcpServers": {
"Zotero": {
"command": "uvx",
"args": ["--from", "git+https://github.com/gyger/mcp-pyzotero.git",
"--with", "mcp[cli]",
"--with", "pyzotero",
"mcp", "run", "zotero.py"
],
}
}
}

Configuration

The connector is configured to work with local Zotero installations and currently only user libraries are supported.
By default it uses the userid 0, but you can also set the environment variable ZOTERO_USER_ID if needed:

uv run mcp install zotero.py -v ZOTERO_USER_ID=0

Available Functions

Available tools

- get_zotero_summary(): Lists properties about your library including collections, recent items or tags. - get_collection_items(collection_key): Get all items in a specific collection - get_items_metadata(item_key): Get detailed information about specific paper(s), including abstract. - search_library(query, mode): Search your Zotero library, with two possible modes: everything or titleCreatorYear.

This functionality should be extended in the future.

Requirements

- Python 3.10+
- pyzotero
- mcp[cli]
- Local Zotero installation

Contributing

Contributions are welcome! Please visit the GitHub repository to:
- Report issues
- Submit pull requests
- Suggest improvements

License

MIT

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.