Provides tools for searching and managing a Zotero library, enabling users to list collections, browse tags, retrieve item metadata and full-text content, and create or update items with attachments.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@zotero-assistant-mcpfind recent papers on machine learning and show their abstracts"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
zotero-assistant-mcp
Zotero library management MCP server for Cloudflare Workers, designed for deployment via mcp-deploy.
Tools (16)
Groups
list_groups— list Zotero groups the user belongs to (returns group IDs for use withgroup_idparams)
Search & Browse
search_items— search by text, tags, type, collection, or date rangeget_collection_items— list items in a specific collectionlist_collections— list all collections (folders)create_collection— create a new collectionlist_tags— list tags with item countsget_library_stats— library overview with totals and top tags
Read
get_item— full metadata and children for a single itemread_attachment— read attachment content (auto-detects type, accepts parent or attachment key)get_note— read note content
Write
save_item— create an item with metadata and optional attachment (PDF URL, snapshot, or base64 file)attach— attach a file to an existing item (supportspdf_url,snapshot_url, orfilevia base64)create_note— create a note on an existing itemupdate_item— update metadata, tags, or collectionstrash_item— move a note or attachment to trash
All tools that operate on library data accept an optional group_id parameter. Omit it for the personal library; pass a group ID (from list_groups) to operate on a group library.
Features
Server instructions — workflow guidance injected once at init, not per-tool
Progress notifications — multi-step operations (attach, save with attachment, read) emit MCP progress events
Group library support — call
list_groupsto discover groups, passgroup_idto any toolSmart author parsing — handles "Last, First", suffixes (Jr., III), and institutional authors
Curated responses —
get_itemreturns only non-empty, agent-relevant fields; search results are compact summaries
Deploy
Install mcp-deploy and deploy to Cloudflare Workers:
npm install -g mcp-deploy
mcp-deploy login
mcp-deploy add upascal/zotero-assistant-mcp
mcp-deploy deploy zotero-assistant-mcpOr use the web UI: mcp-deploy gui
How it works
This repo contains only MCP logic. Auth, deployment, and UI are handled by mcp-deploy (npm install -g mcp-deploy). The repo ships:
src/— MCP server code (Cloudflare Workers + Durable Objects)mcp-deploy.json— deployment contract (secrets, config, worker settings)
Configuration
Secret | Required | Description |
| Yes | |
| Yes | Your numeric user library ID |
Local development
npm install
# Create .dev.vars with your Zotero credentials:
# ZOTERO_API_KEY=your-api-key
# ZOTERO_LIBRARY_ID=your-library-id
npx wrangler devTesting
npm testIntegration tests run against a live Zotero library. Set .dev.vars with your credentials. Tests create temporary items/collections and clean up after themselves.
Release
Tag a version to trigger the GitHub Actions release workflow:
git tag v0.5.0
git push --tagsThis builds worker.mjs and publishes it alongside mcp-deploy.json as release assets. mcp-deploy fetches these assets to deploy the worker.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.