Skip to main content

MCP Server for managing local Zotero libraries - enables AI assistants to read and write bibliographic references

Project description

Zotero Keeper MCP Server

MCP Server for managing local Zotero libraries via AI Agents.

Installation

# Basic installation
pip install -e .

# With PubMed support
pip install -e ".[pubmed]"

# All features
pip install -e ".[all]"

Usage

# Run MCP server
python -m zotero_mcp

# Or use the CLI
zotero-keeper

Environment Variables

Copy .env.example to .env and configure:

# Local Zotero (default)
ZOTERO_HOST=localhost
ZOTERO_PORT=23119

# Remote Zotero
ZOTERO_HOST=<your-zotero-ip>
ZOTERO_PORT=23119

MCP Tools

Core Tools

Tool Description
check_connection Test Zotero connectivity
search_items Search references by keyword
get_item Get item details by key
list_items List recent items
add_reference Add new reference (simple)
create_item Create with full metadata

Smart Tools 🧠

Tool Description
smart_add_reference Validate + duplicate check + add
smart_add_with_collection Smart add + auto-classify to collection
suggest_collections Suggest collections based on title/tags
check_duplicate Check if reference exists
validate_reference Validate before adding

Collection Tools

Tool Description
list_collections List all collections
get_collection Get collection by key
get_collection_items Get items in a collection
get_collection_tree Get hierarchical tree structure
find_collection Find collection by name

Saved Search Tools 🌟 (Local API Exclusive!)

Tool Description
list_saved_searches List all saved searches
run_saved_search Execute a saved search
get_saved_search_details Get search conditions

Other Tools

Tool Description
list_tags List all tags
get_item_types Get available item types

💡 Smart Collection Feature

AI can suggest appropriate collections based on title, abstract, and tags!

Workflow Options

Option 1: Ask before saving

User: "Which collection should this AI paper go to?"
AI: suggest_collections(title="AI in Anesthesiology")
    → Suggests: "AI Research" (score: 85)

User: "Add it to AI Research"
AI: add_reference(..., collections=["ABC123KEY"])

Option 2: Auto-classify

User: "Add this paper and auto-classify"
AI: smart_add_with_collection(
        title="AI in Anesthesiology",
        auto_suggest_collection=True
    )
    → Automatically added to "AI Research"

Option 3: Specify by name

User: "Add to 'Machine Learning' collection"
AI: smart_add_with_collection(
        title="...",
        collection_name="Machine Learning"
    )

⚠️ Important Note

Since Local API cannot create collections:

  1. Create collection structure in Zotero first
  2. Let AI classify into existing collections

🌟 Saved Search Feature (Local API Exclusive!)

This is a unique feature only available via Local API - Web API cannot execute saved searches!

How It Works

  1. Create Saved Search in Zotero (one-time setup)
  2. AI executes it anytime via run_saved_search

Step-by-Step Guide

Step 1: Create Saved Search in Zotero

  1. Open Zotero
  2. Press Ctrl+Shift+F (or Edit → Advanced Search)
  3. Set conditions (see examples below)
  4. Click Save Search
  5. Give it a memorable name (e.g., "Missing PDF")

Step 2: Use via AI

AI: "Which papers don't have PDFs?"
→ run_saved_search(search_name="Missing PDF")

AI: "What did I add this week?"
→ run_saved_search(search_name="Recent Additions")

Recommended Saved Searches

Create these once, use forever:

Name Conditions Use Case
Missing PDF Attachment File Type is not PDF Find papers without PDF
Missing DOI DOI is (empty) Find incomplete metadata
Missing Abstract Abstract is (empty) Find items without abstract
Recent Additions Date Added is in the last 7 days Review recent imports
Unread Tag is not read Track reading progress
Reviews Title contains review Find review articles
This Year Date is after 2024-01-01 Recent publications

Condition Reference

Field Operators Example Values
Title contains, is, is not "machine learning"
Creator contains, is "Zhang"
Date is, is after, is before "2024-01-01"
Date Added is in the last "7 days", "1 month"
Tag is, is not "read", "important"
DOI is, is not (leave empty for "is empty")
Attachment File Type is, is not "PDF"
Item Type is "journalArticle", "book"

Documentation

See main README for full documentation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zotero_keeper-1.10.1.tar.gz (167.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zotero_keeper-1.10.1-py3-none-any.whl (68.1 kB view details)

Uploaded Python 3

File details

Details for the file zotero_keeper-1.10.1.tar.gz.

File metadata

  • Download URL: zotero_keeper-1.10.1.tar.gz
  • Upload date:
  • Size: 167.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zotero_keeper-1.10.1.tar.gz
Algorithm Hash digest
SHA256 73e28ec08d33c51f6fa8502cb37d9d54b15a059b09cf001c6d87490237460d37
MD5 ea2433e82956f7f122d100eaa229c0da
BLAKE2b-256 784d0b0684bce94b793b47fb918bd5372687d7604528b8b8834ecf0ed688b12e

See more details on using hashes here.

Provenance

The following attestation bundles were made for zotero_keeper-1.10.1.tar.gz:

Publisher: release.yml on u9401066/zotero-keeper

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file zotero_keeper-1.10.1-py3-none-any.whl.

File metadata

  • Download URL: zotero_keeper-1.10.1-py3-none-any.whl
  • Upload date:
  • Size: 68.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for zotero_keeper-1.10.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fd5fd0c9c8bd10dcfc3dd815826371f95cbd7edf28a4a423a613b21a7ecc4058
MD5 42a34b13a715bce656817d4bce534752
BLAKE2b-256 27b7646c5d535947d51146a89b4050b37c3e5a47fdad325c81d2d56bcf55373b

See more details on using hashes here.

Provenance

The following attestation bundles were made for zotero_keeper-1.10.1-py3-none-any.whl:

Publisher: release.yml on u9401066/zotero-keeper

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page