zotero-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ZOTERO_API_KEY | No | Web API key from https://www.zotero.org/settings/keys | |
| ZOTERO_MCP_MODE | No | Operational mode: local, web, hybrid, or auto (default auto). | auto |
| ZOTERO_LIBRARY_ID | No | Your numeric Zotero user ID (shown on the same page). | |
| ZOTERO_MCP_CONFIG | No | Path to a JSON configuration file that can be used instead of individual environment variables. | |
| ZOTERO_MCP_RERANK | No | Set to 'false' to skip cross-encoder reranking (default false). | false |
| ZOTERO_MCP_DB_PATH | No | Filesystem path where the semantic index is stored (default ~/.config/zotero-mcp/chroma). | ~/.config/zotero-mcp/chroma |
| ZOTERO_LIBRARY_TYPE | No | Type of library: user (default) or group. | user |
| ZOTERO_MCP_INDEX_SCHEDULE | No | How often the semantic index refreshes: daily (default), weekly, startup, or manual. | daily |
| ZOTERO_MCP_EMBEDDING_MODEL | No | Sentence-transformers model used for embeddings (default BAAI/bge-small-en-v1.5). | BAAI/bge-small-en-v1.5 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_libraryA | Search the active Zotero library and return a page of matching items. Each result carries the item key you pass to |
| get_itemA | Fetch the full record for one item, including its attachments and note count. |
| list_collectionsA | List the library's collections as slash-joined paths (Parent/Child). |
| collection_itemsA | List the top-level items in one collection. |
| list_tagsC | List tags used in the library. |
| library_statsA | Report a quantitative overview of the active library. |
| server_healthA | Check that the server can actually reach the configured Zotero library. |
| semantic_searchA | Find items by meaning using the vector index. Each hit shows the passage that matched. Complements |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
Each tool has a clear, distinct purpose: single-item retrieval, keyword search, semantic search, collection browsing, tag listing, stats, and health check. Even search_library and semantic_search are explicitly differentiated as exact-word vs. meaning-based complement.
Naming mixes verb-prefixed tools (get_item, search_library, list_collections, list_tags) with noun-phrase tools (collection_items, library_stats, server_health, semantic_search). The pattern is readable but not consistently applied.
Eight tools is well-scoped for a Zotero library exploration and search server. Every tool addresses a necessary capability without redundancy or bloat.
The tool set covers the core read/query workflow: item lookup, two search modes, collection/tag navigation, stats, and diagnostics. The only notable gap is collection-specific detail beyond top-level items, but within the apparent read-only scope this is minor.