zotero-mcp-lite
Provides tools for searching, reading, and managing Zotero library items, collections, annotations, and notes.
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-mcp-liteSearch my Zotero for papers on climate change"
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 MCP Lite
A high-performance Model Context Protocol (MCP) server for Zotero with customizable research workflows.
Full Local - No cloud, no API key; runs entirely via Zotero Desktop
Atomic Tools - 9 composable tools; LLM orchestrates as needed
MCP-Native - Works with any MCP client
Extensible - User-editable prompts to match your research style
Easy Deploy - Single command install, auto-detects Zotero
Architecture
flowchart LR
subgraph MCP [Zotero MCP Lite]
Read[Read Operations]
Write[Write Operations]
end
subgraph Zotero [Zotero Desktop]
LocalAPI["/api/ endpoint"]
ConnectorAPI["/connector/ endpoint"]
SQLite[(zotero.sqlite)]
end
Read -->|GET| LocalAPI
Read -->|Direct SQL| SQLite
Write -->|POST saveItems| ConnectorAPI
LocalAPI --> SQLite
ConnectorAPI --> SQLiteQuick Start
Prerequisites
Python 3.10+
Zotero 7+ installed (the Local API is a Zotero 7 feature; earlier versions are not supported)
Step 0: Enable Zotero Local API
The Local API allows third-party applications to communicate with Zotero. This is required.
Steps:
Open Zotero → Edit → Settings (or Preferences on macOS)
Go to Advanced tab
Under General (in Zotero 7), check "Allow other applications on this computer to communicate with Zotero"
The API will be available at
http://localhost:23119/api/
Note: The Local API requires manual enabling (unlike the browser Connector).
Step 1: Install
Recommended:
uv tool install zotero-mcp-liteAlternative (requires Python 3.10+):
pip install zotero-mcp-lite# From GitHub (latest development version)
uv tool install "git+https://github.com/xmruuu/zotero-mcp-lite.git"
# From source (for development)
git clone https://github.com/xmruuu/zotero-mcp-lite.git
cd zotero-mcp-lite && uv sync
uv run zotero-mcp setup
# Direct run without install
uvx zotero-mcp-lite serveStep 2: Setup
zotero-mcp setupThis detects your Zotero installation and configures MCP clients automatically.
Step 3: Connect to MCP Client
Claude Code (one command):
claude mcp add zotero -- zotero-mcp serveOther MCP clients — add to your MCP config file:
{
"mcpServers": {
"zotero": {
"command": "zotero-mcp",
"args": ["serve"]
}
}
}Config file locations:
claude_desktop_config.json(Claude Desktop), Settings → MCP (Cursor),~/.gemini/settings.json(Gemini CLI)
That's it! You're ready to use Zotero with AI assistants.
Remote setup (claude.ai web · Word add-in · mobile)
The default serve command uses stdio transport, which works only with locally-installed
clients (Claude Desktop, Cursor, Claude Code). To make Zotero MCP available in claude.ai
web, the Microsoft Word Claude add-in, or any other surface that runs through your
claude.ai account, the server must be reachable over HTTPS as a Custom Connector.
Two architectural realities to know up front:
Zotero must run on the same machine as the MCP server — the server talks to Zotero's local API at
127.0.0.1:23119. Each user runs their own server; no central hosted instance is possible.claude.ai Custom Connectors only support OAuth (not pasted bearer tokens). This server embeds a small OAuth 2.1 authorization server with both DCR (RFC 7591) and CIMD support so claude.ai's connector flow works out of the box.
Quickest path: the wizard
zotero-mcp setup --remoteThis will:
Download
cloudflaredif it isn't already on your system (cached under your user data dir).Generate a random admin password and write it to
.env(or reuse the existing one).Start a Cloudflare tunnel and capture the public
*.trycloudflare.comURL.Start the MCP server with OAuth enabled.
Print the connector URL to paste into claude.ai → Settings → Connectors → Add custom connector. When the login page appears in your browser, enter the password from step 2.
Watch for the OAuth handshake to complete and print Connected!
Leave the window open — closing it stops the tunnel and the server. For a long-running deployment, run as a system service.
Manual setup
Prefer to wire things yourself? Set both environment variables in .env:
ZOTERO_MCP_ADMIN_PASSWORD=<a long random string>
ZOTERO_MCP_PUBLIC_URL=https://<your-tunnel-url>Start a tunnel of your choice:
Tunnel | Why |
Cloudflare Tunnel | Free, stable URL, no signup needed for |
ngrok | Easiest for a quick test. Free tier rotates the URL each restart. |
Tailscale Funnel | Free, gives a stable |
Then run the server:
zotero-mcp serve --transport streamable-http --port 8000Add the public URL (with /mcp path) on claude.ai: Settings → Connectors → Add custom
connector.
Security caveats
The admin password is the only thing protecting your Zotero library on the public internet. Use a strong random password. The
.envfile is sensitive — keep its file permissions tight, do not commit it.--no-authexists as an escape hatch for local debugging. Never expose an unauthenticated server through a tunnel — anyone with the URL can read and write your Zotero library (includingzotero_create_note).OAuth tokens persist in a SQLite file under your user data directory. Delete that file to effectively log out claude.ai everywhere.
Features
9 Atomic MCP Tools
Search and Navigation
zotero_search_items- Keyword search with tag filteringzotero_get_recent- Recently modified/added items (excludes notes by default)zotero_get_collections- List all collectionszotero_get_collection_items- Items in a collection (excludes notes by default)zotero_search_annotations- Search highlights across library (PDF, EPUB, snapshot)
Content Reading
zotero_get_item_metadata- Metadata, authors, abstract, tagszotero_get_item_children- Attachments, notes, and annotations (PDF/EPUB/snapshot)zotero_get_item_fulltext- Full text extraction
Writing (via local Connector API)
zotero_create_note- Create note with full formatting support (tables, lists, line breaks)
4 Research Skills (MCP Prompts)
Pre-defined workflows that guide AI through common academic tasks:
Skill | Use Case | What It Does |
| Explore a topic | Searches titles AND your annotations |
| Deep-dive one paper | Structured analysis from annotations or full text |
| Compare papers | Table-rich synthesis with insights |
| Prepare citations | APA, IEEE, and BibTeX formats |
Works with or without annotations. Fully customizable. See Customizing Skills.
Debugging
Debugging MCP servers can be challenging. Use MCP Inspector:
npx @modelcontextprotocol/inspector zotero-mcp serveThis opens a web UI to test tools and prompts interactively.
Technical Notes
Annotations: Direct SQLite query (faster than Web API, works offline)
Cross-platform: Auto-detects Zotero on Windows, macOS, Linux
Architecture: Read via
/api/, Write via/connector/, Annotations via SQLite
Customizing Skills
Prompts are fully customizable. Copy from the package defaults and edit:
~/.zotero-mcp/prompts/
├── literature_review.md # Single paper analysis skill
├── comparative_review.md # Multi-paper comparison skill
├── knowledge_discovery.md # Topic exploration skill
└── bibliography_export.md # Citation export skillLoading order: User files (~/.zotero-mcp/prompts/) take priority over package defaults.
Edit the .md files to customize analysis sections, add new ones, or change the output format entirely.
Credits
Thanks to @54yyyu for the original zotero-mcp project.
License
MIT License - See LICENSE file.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/xmruuu/zotero-mcp-lite'
If you have feedback or need assistance with the MCP directory API, please join our Discord server