zotero-mcp-server
Model Context Protocol server for Zotero - search, cite, and manage research references in AI applications
Install / Use
claude mcp add danielostrow -- npx -y github:danielostrow/zotero-mcp-serverIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
Education & ResearchSupported Platforms
Tags
Our assessment of zotero-mcp-server
zotero-mcp-server scores 75/100 on our quality scale, 405th of 447 Education & Research skills we index.
Its MCP Server is 8.1 KB long, well organised into 42 sections with 19 code examples: a thorough specification that gives an agent plenty to work with.
It has 10 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated about 10 months ago. That is recent enough to be usable, but agent tooling moves fast, so check the instructions against your agent's current version.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 79/100, with 2 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
zotero-mcp-server compared with similar skills
All 4 of these similar skills score higher than zotero-mcp-server; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| zotero-mcp-server (this skill)by danielostrow | 75 | 10 | 10mo ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 102.6k | 1d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 77.8k | 1d ago | CLAUDE.md |
| last30days-skillby mvanhorn | 100 | 65.5k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.6k | 1d ago | CLAUDE.md |
Frequently asked questions
- How do I install zotero-mcp-server?
- Run
claude mcp add danielostrow -- npx -y github:danielostrow/zotero-mcp-server. The install tabs above show the steps for each supported agent. - Which AI agents does zotero-mcp-server work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is zotero-mcp-server safe to use?
- It declares no license and scores 79/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is zotero-mcp-server still maintained?
- The repository was last updated about 10 months ago. That is recent enough to be usable, but agent tooling moves fast, so check the instructions against your agent's current version.
Skill content
View source on GitHubZotero MCP Server
A Model Context Protocol server that provides programmatic access to Zotero reference libraries. This server enables AI assistants to search, cite, and manage research references directly from your Zotero library.
Features
Tools
- search_items - Search and filter items in your library
- get_item - Retrieve a single item by key or DOI
- generate_citation - Generate formatted citations in multiple styles
- extract_pdf_text - Extract full-text content from PDF attachments
- create_item - Add new items to your library
- update_item - Modify existing item metadata
- delete_items - Remove items from your library
- manage_collections - Create and organize collections
- manage_tags - Add and remove tags from items
Resources
- zotero://collections - Access collection hierarchy and metadata
- zotero://tags - Browse all tags in your library
- zotero://citation-styles - List available citation styles
Prerequisites
- Node.js 20.16.0 or higher
- A Zotero account with API access
- Zotero API key from https://www.zotero.org/settings/keys
Installation
Option 1: NPM (Coming Soon)
npm install -g zotero-mcp-server
Option 2: From Source
git clone <repository-url>
cd zotero-mcp-server
npm install
npm run build
Configuration
Getting Your Credentials
- Visit https://www.zotero.org/settings/keys
- Create a new API key with appropriate permissions
- Note your User ID (displayed at the top of the page)
- Copy the generated API key
Environment Variables
Create a .env file in the project root:
ZOTERO_API_KEY=your_api_key_here
ZOTERO_USER_ID=your_user_id_here
For group libraries, use ZOTERO_GROUP_ID instead of ZOTERO_USER_ID.
Optional Configuration
ZOTERO_BASE_URL=https://api.zotero.org
ZOTERO_TIMEOUT=30000
ZOTERO_MAX_RETRIES=3
CACHE_ENABLED=true
CACHE_TTL_SECONDS=300
Usage with Claude Desktop
Add this configuration to your Claude Desktop config file:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"zotero": {
"command": "node",
"args": ["/absolute/path/to/ZoteroMCP/dist/index.js"],
"env": {
"ZOTERO_API_KEY": "your_api_key_here",
"ZOTERO_USER_ID": "your_user_id_here"
}
}
}
}
Restart Claude Desktop after making this change.
Tool Usage Examples
Searching Items
Search your library with various filters:
// Search by text query
{
"query": "machine learning",
"limit": 10
}
// Filter by item type and tags
{
"itemType": "journalArticle",
"tag": ["ai", "research"],
"sort": "dateAdded",
"direction": "desc"
}
// Search within a collection
{
"collection": "COLLECTION_KEY",
"limit": 25
}
Generating Citations
Create formatted citations in various styles:
{
"itemKeys": ["ITEM_KEY_1", "ITEM_KEY_2"],
"style": "apa"
}
// Supported styles include:
// apa, chicago-note-bibliography, mla, ieee, nature,
// science, harvard-cite-them-right, vancouver, and 10,000+ more
Extracting PDF Text
Extract text content from PDF attachments:
{
"itemKey": "PDF_ATTACHMENT_KEY",
"pages": {
"start": 1,
"end": 5
}
}
Note: PDFs must be indexed by Zotero Desktop for full-text extraction to work.
Creating Items
Add new items to your library:
{
"itemType": "journalArticle",
"title": "Understanding Neural Networks",
"creators": [
{
"creatorType": "author",
"firstName": "Jane",
"lastName": "Smith"
}
],
"date": "2024",
"DOI": "10.1234/example",
"tags": ["neural-networks", "deep-learning"],
"collections": ["COLLECTION_KEY"]
}
Managing Collections
Create and organize collections:
// List all collections
{
"action": "list"
}
// Create a new collection
{
"action": "create",
"name": "Machine Learning Papers"
}
// Create a nested collection
{
"action": "create",
"name": "Deep Learning",
"parentCollection": "PARENT_COLLECTION_KEY"
}
Managing Tags
Add or remove tags from items:
// Add tags to an item
{
"action": "add_to_item",
"itemKey": "ITEM_KEY",
"tags": ["ai", "research"]
}
// Remove tags from an item
{
"action": "remove_from_item",
"itemKey": "ITEM_KEY",
"tag": "outdated"
}
// List all tags
{
"action": "list"
}
Resource Usage Examples
Collections Resource
zotero://collections
Returns all collections with hierarchy information, item counts, and metadata.
zotero://collections/COLLECTION_KEY
Returns details for a specific collection.
Tags Resource
zotero://tags
Returns all tags in your library with usage counts.
Citation Styles Resource
zotero://citation-styles
Returns a list of commonly used citation styles with their identifiers.
API Details
Rate Limiting
The server implements automatic rate limiting with exponential backoff:
- Initial retry delay: 5 seconds
- Maximum retries: 3 (configurable)
- Respects Zotero API
BackoffandRetry-Afterheaders - Requests are queued during rate limit periods
Caching
Intelligent caching reduces API calls and improves performance:
- Item templates: 1 hour
- Collections and tags: 15 minutes
- Search results: 5 minutes
- PDF full-text: 30 days
- Citations: 1 hour
Error Handling
All errors are transformed into descriptive messages:
- 400 - Invalid request parameters
- 401/403 - Authentication failure (check API key)
- 404 - Item or resource not found
- 409 - Version conflict (item modified elsewhere)
- 412 - Precondition failed (library version changed)
- 429 - Rate limited (automatic retry)
- 5xx - Server error (automatic retry)
Development
Building from Source
npm install
npm run build
Running in Development Mode
npm run dev
Project Structure
src/
├── index.ts # Server entry point
├── config/
│ └── default.ts # Configuration management
├── services/
│ ├── zotero-client.ts # Zotero API client
│ ├── cache-manager.ts # Caching layer
│ └── pdf-extractor.ts # PDF text extraction
├── tools/
│ └── index.ts # MCP tool implementations
├── resources/
│ └── index.ts # MCP resource implementations
├── utils/
│ ├── validators.ts # Input validation
│ └── error-handler.ts # Error transformation
└── types/
└── zotero.ts # Type definitions
Troubleshooting
Server won't start
Ensure you have created a .env file with valid credentials:
cp .env.example .env
# Edit .env and add your ZOTERO_API_KEY and ZOTERO_USER_ID
Authentication errors
- Verify your API key at https://www.zotero.org/settings/keys
- Ensure the API key has appropriate read/write permissions
- Check that ZOTERO_USER_ID matches the ID shown on the API keys page
PDF extraction fails
- PDFs must be indexed by Zotero Desktop application
- Open Zotero Desktop and allow it to index PDF attachments
- Verify the item has an actual PDF attachment (not just a link)
Claude Desktop doesn't show Zotero tools
- Verify the absolute path in
claude_desktop_config.jsonis correct - Check that environment variables in the config are set
- Restart Claude Desktop completely (quit and reopen)
- Check Claude Desktop logs: Help → View Logs
License
MIT
Contributing
Contributions are welcome. Please open an issue or submit a pull request.
Attribution
This MCP server uses the Zotero Web API to provide programmatic access to Zotero libraries. Zotero is a free, open-source reference management software developed by the Corporation for Digital Scholarship.
This project is not affiliated with, endorsed by, or sponsored by Zotero or the Corporation for Digital Scholarship.
Links
Related Skills
Agent-Reach
102.6kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
77.8kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
last30days-skill
65.5kAI agent skill that researches any topic across Reddit, X, YouTube, HN, Polymarket, and the web - then synthesizes a grounded summary
CowAgent
47.6kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
