Skip to main content

Local Zotero MCP

An MCP server that gives an LLM read-only access to your local Zotero library via the desktop app's Local API. It talks to Zotero over http://127.0.0.1:23119, so nothing leaves your machine and no API keys are required.

Requirements

  • Zotero desktop app, running, with Settings > Advanced > "Allow other applications on this computer to communicate with Zotero" enabled.
  • uv installed.

Quickstart

No cloning or installing required - uvx fetches the published package from PyPI and runs it. Add this to your Claude Desktop config (claude_desktop_config.json):

{
  "mcpServers": {
    "zotero": {
      "command": "uvx",
      "args": ["--from", "local-zotero-mcp", "zotero-mcp"]
    }
  }
}

Restart Claude Desktop and the Zotero tools should be available. uvx caches the environment after the first run, so subsequent launches are fast; add --refresh to args if you want to force-pull the latest version.

Tools

Every library-scoped tool takes an optional library argument - "user" (default) for your personal library, or a group ID to read a group library synced locally. Use list_groups to find group IDs.

Tool Description
list_groups List group libraries available to the local Zotero install
search_items Search the library by title/creator/year or full text
get_item Get full data for an item, optionally with citation/bibliography
get_item_children List an item's notes and attachments
list_top_level_items List top-level items in the library
list_trashed_items List items in the trash
list_publications List items in "My Publications"
list_collections List collections
get_collection Get full data for a single collection
get_subcollections List the direct subcollections of a collection
get_collection_items List items in a collection
get_collection_tags List tags used on items in a collection
list_tags List tags
get_item_tags List tags attached to a single item
get_bibliography Generate a formatted bibliography for one or more items
get_attachment_file_path Get the local file path of an attachment
get_item_types List item types supported by Zotero

The two tools below have no equivalent in the Zotero Web API - they read the attachment file resolved by get_attachment_file_path and process it locally with PyMuPDF. Both accept remove_headers_footers: when true, lines that repeat near the top/bottom of most pages (running titles, page numbers, etc.) are detected and stripped from the returned/saved text. For convert_document this only applies to output_format="txt" - PDF output preserves the original pages as-is.

Tool Description
read_document Read the text content of a PDF or EPUB attachment
convert_document Convert a PDF or EPUB attachment to TXT or PDF and save it to a location you specify

Claude Plugin

This repo also ships as a Claude Code plugin bundling four Agent Skills for Zotero-based research, on top of the same MCP tools listed above:

Skill Covers
searching-zotero-library Searching and browsing items, collections, tags, groups
reading-zotero-documents Full-text PDF/EPUB reading, quoting, and comparison
generating-zotero-bibliographies Formatted citations and reading lists
analyzing-zotero-research Thematic clustering, gap analysis, trajectory tracing, reading-list prioritization

The plugin's .mcp.json runs the server the same way as the Quickstart above (uvx --from local-zotero-mcp zotero-mcp), so it always tracks the published PyPI package.

To try it locally, clone the repo and run:

claude --plugin-dir /path/to/Local-Zotero-MCP

Then invoke a skill directly, e.g. /local-zotero-mcp:searching-zotero-library, or just ask Claude a research question about your library and let it pick the right skill.

Local development

Clone the repo and install it locally:

uv sync

Run it directly from the checkout:

uv run zotero-mcp

Point Claude Desktop at your local checkout instead of GitHub with:

{
  "mcpServers": {
    "zotero": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/Local-Zotero-MCP", "zotero-mcp"]
    }
  }
}

Run the tests:

uv run pytest

Tests mock the Zotero HTTP responses, so a running Zotero instance isn't required. To smoke-test against your own Zotero library:

uv run mcp dev zotero_mcp/server.py

Metadata

Release files for local-zotero-mcp 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for local-zotero-mcp 0.3.0
File Size Uploaded
local_zotero_mcp-0.3.0.tar.gz 13.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for local-zotero-mcp 0.3.0
File Interpreter ABI Platform
local_zotero_mcp-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 24.8 kB

Release files / local_zotero_mcp-0.3.0.tar.gz

Download URL local_zotero_mcp-0.3.0.tar.gz
Size 13.0 kB
Tags Source
SHA-256 checksum
How to use checksums
80dae9aae50f14fe2940bd8abda6be0e5888ee9ad33560f8f7ae913192568640
BLAKE2b-256 checksum
How to use checksums
a3a0d5aafc22b9e1f6ce2a88e67be2ed4c581e0b09bf7fecd99522f0bda6d7d9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / local_zotero_mcp-0.3.0-py3-none-any.whl

Download URL local_zotero_mcp-0.3.0-py3-none-any.whl
Size 11.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c31a91d9218baa460e0d8b02876dfc47a8773d280501b523031589bedb6661ef
BLAKE2b-256 checksum
How to use checksums
2d7053dcbd2ce01922aa88da7f238b15b47333fdc95d769387191dbd7cd5f5bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.2

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page