Skip to main content

MCP server providing full-text Markdown access to Zotero library attachments

Project description

markzoterodown

An MCP server that gives Claude (or any MCP client) full-text Markdown access to files attached to your Zotero library items.

It complements the zotero-remote MCP — which lets you search and browse your library — by resolving the local file path of any attachment and converting it to Markdown via MarkItDown.

Tools

Tool Description
list_item_attachments List all file attachments for a Zotero item (key, filename, MIME type, local path)
get_attachment_as_markdown Convert an attachment (PDF, DOCX, PPTX, …) to full-text Markdown

Installation

No cloning needed. Install and run directly with uvx:

uvx markzoterodown

Claude Code / Claude Desktop setup

Add this to your claude_desktop_config.json:

{
  "mcpServers": {
    "zotero-fulltext": {
      "command": "uvx",
      "args": ["markzoterodown"],
      "env": {
        "ZOTERO_LIBRARY_ID": "<your numeric Zotero user ID>",
        "ZOTERO_API_KEY":    "<your Zotero API key>"
      }
    }
  }
}

Find your library ID and generate an API key at https://www.zotero.org/settings/keys

Environment variables

Variable Default Description
ZOTERO_LIBRARY_ID (required) Numeric Zotero user or group ID
ZOTERO_API_KEY "" Zotero API key (required for web API)
ZOTERO_LIBRARY_TYPE user user or group
ZOTERO_USE_LOCAL false Set to true to use the Zotero local API (port 23119) instead of the web API
ZOTERO_STORAGE_PATH ~/Zotero/storage Local path where Zotero stores attachment files

Typical workflow

zotero_search("gypsum sorption")          ← zotero-remote MCP
  → item key: BZPBTWVU

list_item_attachments("BZPBTWVU")         ← this server
  → attachment key: AE7VF5JI, filename: Wilkes 2004.pdf

get_attachment_as_markdown("AE7VF5JI")    ← this server
  → full Markdown text of the paper

Requirements

  • Python ≥ 3.11
  • Zotero attachments synced locally (the file must exist in ZOTERO_STORAGE_PATH)

License

MIT

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

markzoterodown-0.1.0.tar.gz (111.1 kB view details)

Uploaded Source

Built Distribution

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

markzoterodown-0.1.0-py3-none-any.whl (5.1 kB view details)

Uploaded Python 3

File details

Details for the file markzoterodown-0.1.0.tar.gz.

File metadata

  • Download URL: markzoterodown-0.1.0.tar.gz
  • Upload date:
  • Size: 111.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for markzoterodown-0.1.0.tar.gz
Algorithm Hash digest
SHA256 41112bd6d294d0037023db94bff55f3666647b277e4d608ed26b8164823ecf7c
MD5 1aadedcbe76f6bbd1c8fafc57707ca7c
BLAKE2b-256 f3c5285b1b892fcb0ffc7a2ff6bc155606f3de61ba7137b4a3263e51fb3cb5d3

See more details on using hashes here.

File details

Details for the file markzoterodown-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: markzoterodown-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 5.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for markzoterodown-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 47d50f0790ba3834f877c84093aa3011ab74733c46e502a62de3aecfc6b38cc9
MD5 8069dbe9cced4547d86e5361a3adf82b
BLAKE2b-256 82f8463daf1253cbc0c4b3acb95f808911102d9b07184ae91be42ca169133e99

See more details on using hashes here.

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