zotero-api-mcp
A clean, one-to-one MCP server for the Zotero API, just the API.
Features
- 22 MCP tools covering the full Zotero API surface
- Local API support (
ZOTERO_LOCAL=true) — no API key needed - Web API support with interactive setup wizard
- Full CRUD: create items by DOI, arXiv, ISBN; update metadata; delete to trash
- Collections: create, add/remove items, search
- Notes & Annotations: read, create
- Attachments: add files or URLs, read metadata
- Library management: stats, trash, groups, tags
- Secure by default: API key stored with
SecretStr, XML parsing viadefusedxml - Configuration:
.envfile support withZOTERO_prefix,pydantic-settings - Multi-library support: Query any group or user library per-call without reconfiguring
Multi-Library Support
All tools accept optional library_id and library_type keyword parameters to override the default library configured in your environment. This lets you query multiple Zotero group libraries without restarting the server or changing your .env file.
Example: Query a group library from any tool:
zotero_search_items(query="machine learning", library_id="<group-id>", library_type="group")
zotero_get_item("ABC12345", library_id="<group-id>", library_type="group")
zotero_get_collection_items("XYZ99999", library_id="<group-id>", library_type="group")
library_id— The Zotero library ID (user ID or group ID)library_type— Either"user"or"group"- Both default to your configured
ZOTERO_LIBRARY_ID/ZOTERO_LIBRARY_TYPEwhen omitted - Works with all 22 tools — search, items, collections, notes, annotations, and attachments
- Stateless: each call is independent, no session-level switching needed
Quick Start
# Run directly (auto-installs)
uvx zotero-api-mcp serve
# Or install globally
uv tool install zotero-api-mcp
zotero-api-mcp serve
Local Mode (no API key)
Set the environment variable and run:
ZOTERO_LOCAL=true uvx zotero-api-mcp serve
Requires Zotero running with "Allow other applications to access Zotero" enabled in Preferences → Advanced → General.
Web API Mode
zotero-api-mcp setup
You'll need a Zotero API key from https://www.zotero.org/settings/keys and your library ID.
MCP Configuration
VS Code / Cline / Claude Desktop
Local mode (read-only, no API key):
{
"servers": {
"zotero-api": {
"type": "stdio",
"command": "uvx",
"args": ["zotero-api-mcp", "serve"],
"env": {
"ZOTERO_LOCAL": "true"
}
}
}
}
Web API mode (full read/write, requires API key):
{
"servers": {
"zotero-api": {
"type": "stdio",
"command": "uvx",
"args": ["zotero-api-mcp", "serve"],
"env": {
"ZOTERO_API_KEY": "<your-api-key>",
"ZOTERO_LIBRARY_ID": "<your-user-id>",
"ZOTERO_LIBRARY_TYPE": "user"
}
}
}
}
Get your API key at https://www.zotero.org/settings/keys and find your user ID there too. Set ZOTERO_LIBRARY_TYPE to "group" if your default library is a group.
Tools
Search & Discovery (9 tools)
zotero_search_items— Search by query, type, tag, or collectionzotero_get_item— Full details for a specific itemzotero_get_item_children— Notes and attachments for an itemzotero_search_collections— List/search collectionszotero_get_collection_items— Items in a collectionzotero_search_tags— List/search tagszotero_get_trash— Items in trashzotero_get_library_stats— Library statisticszotero_get_groups— Group libraries
Item Management (5 tools)
zotero_add_by_doi— Add paper by DOI (CrossRef metadata)zotero_add_by_arxiv— Add paper by arXiv IDzotero_add_by_isbn— Add book by ISBN (OpenLibrary metadata)zotero_update_item— Update title, abstract, date, extrazotero_delete_items— Move items to trash
Collections (3 tools)
zotero_create_collection— Create a new collectionzotero_add_to_collection— Add items to a collectionzotero_remove_from_collection— Remove items from a collection
Notes (2 tools)
zotero_add_note— Add a note to an itemzotero_read_note— Read a note's content
Annotations (1 tool)
zotero_read_annotations— Read PDF annotations for an item
Attachments (2 tools)
zotero_add_attachment— Attach a file or URL to an itemzotero_read_attachment— Get attachment metadata
Comparison with other Zotero MCP servers
| Feature | zotero-api-mcp | zotero-mcp (kujenga) | zotero-mcp-lite (xmruuu) | zotero-mcp-server (54yyyu) |
|---|---|---|---|---|
| Tools | 22 | 3 | 9 | ~30 |
| Philosophy | 1:1 API mapping | Minimal | Read-focused | AI-heavy |
| CRUD (create/update/delete) | ✅ | ❌ | ❌ | ✅ |
| DOI/arXiv/ISBN import | ✅ | ❌ | ❌ | ✅ |
| Collection management | ✅ | ❌ | ❌ | ✅ |
| Attachment management | ✅ | ❌ | ❌ | ❌ |
| Local API (no key) | ✅ | ❌ | ✅ | ❌ |
| Semantic search / AI | ❌ | ❌ | ❌ | ✅ |
| Dependencies | 6 | 4 | 9 | 97 |
Development
See CONTRIBUTING.md for full setup and guidelines.
# Install dependencies (requires uv)
uv sync --group dev
# Run tests
just test # Quick: current Python
just test-all # Full: Python 3.12–3.14 via tox
# Version management
just version # Show current version
just bump-patch # 0.0.1 → 0.0.2, creates git tag + commit
License
MIT — see LICENSE for details.
Metadata
Release files for zotero-api-mcp 0.0.4
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 | Actions |
|---|---|---|---|---|
| zotero_api_mcp-0.0.4.tar.gz | 38.4 kB | Without provenance | Details for zotero_api_mcp-0.0.4.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| zotero_api_mcp-0.0.4-py3-none-any.whl | Python 3 | none | any | Details for zotero_api_mcp-0.0.4-py3-none-any.whl |
Total release size: 71.8 kB
Release files / zotero_api_mcp-0.0.4.tar.gz
| Download URL | zotero_api_mcp-0.0.4.tar.gz |
|---|---|
| Size | 38.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
459098f2fbd29c3c0bf962186c646eb7a81c4b56d16a382daa4d36298e66dc26
|
|
BLAKE2b-256 checksum How to use checksums |
e039bb504b87fd9bc4402870101548e68825db98a381d13f9a36047dd6c19cbe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / zotero_api_mcp-0.0.4-py3-none-any.whl
| Download URL | zotero_api_mcp-0.0.4-py3-none-any.whl |
|---|---|
| Size | 33.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0b9f345c31f02027025bc9d33357c2ae62b32afe8dafc840ebde49a48370b002
|
|
BLAKE2b-256 checksum How to use checksums |
8d4b2855d7a803771bc3c720130753d79f12752aa019bb6af5a6dac2f746d569
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Security for zotero-api-mcp 0.0.4
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.