mcp-zotero
MCP server for Zotero — 38 library tools + optional semantic search via local embeddings.
Install
Base (Zotero API tools only)
uv tool install mcp-zotero
With semantic search
uv tool install "mcp-zotero[rag]"
Adds 8 RAG tools for indexing PDFs and searching by meaning. Downloads a ~80MB embedding model on first use.
With OCR for scanned PDFs
uv tool install "mcp-zotero[rag,ocr]"
Adds docling-based OCR fallback for PDFs that contain scanned images instead of text.
Configuration
Add to your Claude Code MCP settings (.mcp.json or ~/.claude/settings.json):
{
"mcpServers": {
"zotero": {
"command": "mcp-zotero",
"env": {
"ZOTERO_LIBRARY_ID": "YOUR_LIBRARY_ID",
"ZOTERO_LOCAL": "true",
"ZOTERO_LOCAL_KEY": "YOUR_LOCAL_KEY",
"ZOTERO_API_KEY": "YOUR_API_KEY",
"ZOTERO_ATTACHMENTS_DIR": "~/Zotero/storage"
}
}
}
}
Environment variables
| Variable | Required | Default | Description |
|---|---|---|---|
ZOTERO_LIBRARY_ID |
Yes | — | Your Zotero library ID |
ZOTERO_LIBRARY_TYPE |
No | user |
user or group |
ZOTERO_LOCAL |
No | true |
Use Zotero Local API (requires Zotero app running) |
ZOTERO_LOCAL_KEY |
For reads | — | Local API key |
ZOTERO_API_KEY |
For writes | — | Web API key from zotero.org/settings/keys |
ZOTERO_ATTACHMENTS_DIR |
For RAG | — | Path to Zotero storage directory |
RAG-only variables (when installed with [rag])
| Variable | Default | Description |
|---|---|---|
RAG_INDEX_DIR |
~/.zotero-rag |
Where to store index data |
RAG_EMBEDDING_MODEL |
all-MiniLM-L6-v2 |
Sentence transformer model |
RAG_CHUNK_SIZE |
512 |
Target chunk size in tokens |
RAG_CHUNK_OVERLAP |
50 |
Overlap between chunks |
RAG_ENABLE_OCR |
false |
Enable docling OCR fallback for scanned PDFs |
Tools
Base tools (38)
Always available. Covers the full Zotero API:
Search & browse: search_items, top_items, get_item, trash_items, deleted_items
Collections: list_collections, list_collections_top, list_collections_sub, get_collection, collection_items, collection_items_top, collection_tags, create_collections, update_collection, delete_collection, add_item_to_collection, remove_item_from_collection
Tags: list_tags, item_tags, delete_tags
Items: add_item, update_item, delete_item
Attachments: download_attachments, attach_file, attach_linked_file
Schema: item_types, item_fields, item_type_fields, creator_fields, item_creator_types, item_attachment_link_modes
Saved searches: list_searches, list_groups, create_saved_search, delete_saved_search
System: ping, health_check
RAG tools (8)
Available when installed with [rag]. Semantic search across your PDF library:
| Tool | Description |
|---|---|
index_library |
Index a collection or entire library |
index_items |
Index specific items by key |
remove_from_index |
Remove items from the index |
semantic_search |
Search passages by meaning |
get_chunk_context |
Get surrounding text for a search result |
find_similar_chunks |
Find similar passages across documents |
index_status |
Get index statistics |
list_indexed_items |
List all indexed items |
Development
git clone https://github.com/nealcaren/mcp-zotero.git
cd mcp-zotero
uv venv && uv pip install -e ".[dev,rag]"
pytest
License
MIT
Metadata
Release files for mcp-zotero 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| mcp_zotero-0.3.0.tar.gz | 29.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcp_zotero-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 58.2 kB
Release files / mcp_zotero-0.3.0.tar.gz
| Download URL | mcp_zotero-0.3.0.tar.gz |
|---|---|
| Size | 29.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d03bfaf27bd290c052bceec5b0203902a8b4fec184fcc1cf85af6c797a149af8
|
|
BLAKE2b-256 checksum How to use checksums |
bec58fe476aa0a9ca4c962c3a23b5a4c6f34112d8837445447b3cf813d0926de
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.5.7
|
Release files / mcp_zotero-0.3.0-py3-none-any.whl
| Download URL | mcp_zotero-0.3.0-py3-none-any.whl |
|---|---|
| Size | 28.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dc11b27740048092c492c53da03d3d06bafaa9a37fb3ed46915d00bc136fa8c4
|
|
BLAKE2b-256 checksum How to use checksums |
efbc32d0642481fe7c9f38f92bfb7648e2593991f05925f26e400afaede76fb6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.5.7
|
Security for mcp-zotero 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.