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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41112bd6d294d0037023db94bff55f3666647b277e4d608ed26b8164823ecf7c
|
|
| MD5 |
1aadedcbe76f6bbd1c8fafc57707ca7c
|
|
| BLAKE2b-256 |
f3c5285b1b892fcb0ffc7a2ff6bc155606f3de61ba7137b4a3263e51fb3cb5d3
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47d50f0790ba3834f877c84093aa3011ab74733c46e502a62de3aecfc6b38cc9
|
|
| MD5 |
8069dbe9cced4547d86e5361a3adf82b
|
|
| BLAKE2b-256 |
82f8463daf1253cbc0c4b3acb95f808911102d9b07184ae91be42ca169133e99
|