Skip to main content
Glama

zotero-mcp

Read+write MCP server for Zotero. An MCP server with full write support for managing Zotero library from AI assistants.

It lets you create items, manage collections, find and merge duplicates, and import BibTeX from within Claude Code/Desktop, or any MCP-compatible client.

Uses the Zotero Web API (requires API key). Get the key at https://www.zotero.org/settings/keys.

Features

Search & Read

Tool

Description

search_items

Full-text search with collection, type, and tag filters

get_item

Detailed metadata or BibTeX export for a single item

get_collections

List all collections with hierarchy and item counts

get_collection_items

List items in a specific collection

find_duplicates

Find duplicates by title/DOI, or scan entire library

get_tags

List all tags with item counts

Write

Tool

Description

create_item

Create item from field data

create_item_from_doi

Create item by DOI (auto-fills metadata via Zotero translator + CrossRef)

import_bibtex

Import BibTeX entries into a collection

update_item

Update item fields with version conflict protection

Collections

Tool

Description

create_collection

Create a collection (with optional parent)

add_to_collections

Add an item to multiple collections at once

remove_from_collection

Remove item from collection (doesn't delete it)

Management

Tool

Description

merge_duplicates

Merge duplicates: transfer metadata, tags, collections to keeper, delete rest

delete_item

Delete an item

Related MCP server: zotero-mcp

Installation

Requires Python 3.11+ and uv.

# Clone the repo
git clone https://github.com/BirdInTheTree/zotero-mcp.git
cd zotero-mcp
uv sync

Usage

Claude Code

claude mcp add zotero \
  -e ZOTERO_API_KEY=your-key \
  -e ZOTERO_USER_ID=your-user-id \
  -- uv run --directory /path/to/zotero-mcp python -m zotero_mcp

Claude Desktop

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "zotero": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/zotero-mcp", "python", "-m", "zotero_mcp"],
      "env": {
        "ZOTERO_API_KEY": "your-key",
        "ZOTERO_USER_ID": "your-user-id"
      }
    }
  }
}

Configuration

Variable

Required

Description

ZOTERO_API_KEY

yes

Zotero Web API key

ZOTERO_USER_ID

yes

Your Zotero user ID

Get your API key at https://www.zotero.org/settings/keys. Your user ID is shown on the same page.

Examples

Once connected, you can ask your AI assistant things like:

  • "Search my Zotero for papers ..."

  • "Create a new collection called ..."

  • "Import this BibTeX into my collection"

  • "Find duplicate items in my library and merge them"

  • "Add this paper to both collections"

  • "Look up DOI 10.1234/example and add it to my library"

Development

# Install with dev dependencies
uv sync --dev

# Run tests
uv run pytest tests/ -v

License

MIT

Available Tools

15 tools
add_to_collectionsC

Add a Zotero item to one or more collections

Inputs: item_key (required), collection_keys (required). Returns: result

create_collectionC

Create a new Zotero collection

Inputs: name (required), parent_key. Returns: result

create_itemC

Create a new item in Zotero

Inputs: item_type (required), title (required), creators (required), date, +6 more. Returns: result

create_item_from_doiA

Create a Zotero item from a DOI (auto-fills metadata)

Inputs: doi (required), collections, tags. Returns: result

delete_itemB

Delete a Zotero item (move to trash or permanently delete)

Inputs: item_key (required), permanent. Returns: result

find_duplicatesC

Find duplicate items by title or DOI, or scan entire library

Inputs: title, doi, collection_key, scan_all. Returns: result

get_collection_itemsC

List items in a specific Zotero collection

Inputs: collection_key (required), limit. Returns: result

get_collectionsB

List all collections in the Zotero library

Inputs: no named parameters. Returns: result

get_itemB

Get detailed metadata for a single Zotero item

Inputs: item_key (required), format. Returns: result

get_tagsB

List tags in the Zotero library

Inputs: query, limit. Returns: result

import_bibtexC

Import BibTeX entries into Zotero

Inputs: bibtex (required), collection_key. Returns: result

merge_duplicatesC

Merge duplicate Zotero items: transfer metadata, tags, collections to keeper, trash rest

Inputs: keep_key (required), remove_keys (required). Returns: result

remove_from_collectionA

Remove a Zotero item from a collection (does not delete the item)

Inputs: item_key (required), collection_key (required). Returns: result

search_itemsB

Search items in Zotero library with optional filters

Inputs: query (required), collection_key, item_type, tag, +1 more. Returns: result

update_itemC

Update fields on an existing Zotero item

Inputs: item_key (required), fields (required). Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 15 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose targeting specific Zotero operations like collection management, item CRUD, duplicate handling, and import/search functions. There is no significant overlap between tools - for example, 'add_to_collections' and 'remove_from_collection' are complementary but distinct operations, and 'create_item' vs 'create_item_from_doi' serve different creation workflows.

    Naming Consistency5/5

    All tools follow a consistent verb_noun naming pattern throughout (e.g., create_collection, get_item, search_items, import_bibtex). The naming is perfectly predictable and readable, with no mixing of conventions or inconsistent verb styles across the toolset.

    Tool Count5/5

    With 15 tools, this server provides comprehensive coverage of Zotero's core functionality without being overwhelming. The count is well-scoped for a reference management system, covering collections, items, duplicates, imports, and searches - each tool earns its place in the domain.

    Completeness5/5

    The toolset provides complete CRUD/lifecycle coverage for Zotero's domain: full item management (create, get, update, delete), collection operations (create, get, add/remove items), duplicate handling (find and merge), import capabilities, and search functionality. There are no obvious gaps that would cause agent failures in typical reference management workflows.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers