Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ZOTERO_LOCALNoUse the local Zotero API instead of the web APIfalse
ZOTERO_API_KEYNoYour Zotero API key (for web API)
ZOTERO_LIBRARY_IDNoYour Zotero library ID (for web API)
ZOTERO_LIBRARY_TYPENoThe type of library (user or group)user

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
zotero_get_annotations

Get all annotations for a specific item or across your entire Zotero library. When called without item_key, returns ALL annotations library-wide — this can be very large. Always pass item_key when you know which item you want.

zotero_get_notes

Retrieve notes from your Zotero library, with options to filter by parent item. Set raw_html=True to return the note's original HTML (e.g., for round-tripping through zotero_update_note).

zotero_search_notes

Search for notes and annotations across your Zotero library. Set raw_html=True to return note matches as raw HTML (useful for round-tripping through zotero_update_note).

zotero_create_note

Create a new note attached to a Zotero item. Parameters: item_key (the key of the parent item to attach the note to), note_title (title string), note_text (body text, HTML formatting supported).

zotero_update_note

Update the HTML content of an existing Zotero note. Set append=True to concatenate to the existing note; otherwise the note is replaced.

zotero_delete_note

Move a Zotero note to the Trash. Trashed notes are recoverable from Zotero's Trash — empty the Trash in the Zotero UI for permanent deletion.

zotero_create_annotation

Create a highlight annotation on a PDF or EPUB attachment with optional comment. Parameters: attachment_key (the key of the PDF/EPUB attachment, not the parent item), page (integer, 1-indexed — page 1 is the first page), text (exact text to highlight), color (hex, default yellow #ffd400), comment (optional note on the highlight). Requires PyMuPDF: pip install zotero-mcp-server[pdf]

zotero_create_area_annotation

Create a PDF area/image annotation using normalized page coordinates.

zotero_get_item_metadata

Get detailed metadata for a specific Zotero item by its key. If the metadata and abstract don't contain the specific information you need, use zotero_get_item_fulltext to read the full paper — but note that fulltext retrieval is resource-intensive and should not be used for searching; use zotero_search_items or zotero_semantic_search instead.

zotero_get_item_fulltext

Get the full text content of a Zotero item by its key. WARNING: Returns the entire paper text (often 10K+ tokens). Only use when you need to read the actual paper content, not just metadata. Do NOT use this for searching — use zotero_search_items or zotero_semantic_search instead. Avoid calling this on multiple papers in one conversation unless the user specifically asks to read them.

zotero_get_collections

List all collections in your Zotero library.

zotero_get_collection_items

Get all items in a specific Zotero collection. Supports detail='keys_only' (minimal), 'summary' (default, no abstracts), or 'full' (with abstracts). Includes PDF/notes indicators. TIP: To find papers on a specific topic, use zotero_semantic_search instead — it's faster and returns only relevant results.

zotero_get_item_children

Get all child items (attachments, notes) for a specific Zotero item.

zotero_get_items_children

Get child items (attachments, notes) for MULTIPLE Zotero items in one call. Much more efficient than calling get_item_children repeatedly.

zotero_get_tags

Get all tags used in your Zotero library.

zotero_list_libraries

List all accessible Zotero libraries (user library, group libraries, and RSS feeds). Use this to discover available libraries before switching with zotero_switch_library.

zotero_switch_library

Switch the active Zotero library context. All subsequent tool calls will operate on the selected library. Use zotero_list_libraries first to see available options. Pass library_type='default' to reset to the original environment variable configuration.

zotero_list_feeds

List all RSS feed subscriptions in your local Zotero installation. Shows feed names, URLs, item counts, and last check times. Local mode only.

zotero_get_feed_items

Get items from a specific RSS feed by its library ID. Use zotero_list_feeds first to find feed library IDs. Local mode only.

zotero_get_recent

Get recently added items to your Zotero library, or to a specific collection.

search

ChatGPT-compatible search wrapper. Performs semantic search and returns JSON results.

fetch

ChatGPT-compatible fetch wrapper. Retrieves fulltext/metadata for a Zotero item by ID.

zotero_search_items

Search for items in your Zotero library, given a query string. Returns metadata and abstracts. IMPORTANT: Use short, simple queries — 'Author Year' (e.g., 'Brewer 2011') or just the author name (e.g., 'Cladder-Micus'). Do NOT add extra keywords like topic words — this is substring matching, not web search. More words make the search STRICTER, not broader. If no results are found, the tool will automatically retry with simplified queries and semantic search. Optionally scope to a specific collection with collection_key.

zotero_search_by_tag

Search for items in your Zotero library by tag, optionally scoped to a collection. Conditions are ANDed, each term supports disjunction (OR) and exclusion (-).

zotero_search_by_citation_key

Look up a Zotero item by its BetterBibTeX citation key (e.g., 'Smith2024'). Works in local mode via the BetterBibTeX API, or in web mode by searching the Extra field.

zotero_advanced_search

Perform an advanced search with multiple criteria.

zotero_semantic_search

Prioritized search tool. Perform semantic search over your Zotero library using AI-powered embeddings. BEST TOOL for finding papers on a specific topic — much more efficient than scanning collection items or reading abstracts. Works across your entire library.

zotero_update_search_database

Update the semantic search database with latest Zotero items. Run this after adding items (via add_by_doi, add_by_url, or add_from_file) to make them immediately available for semantic search. Also useful if the user has added items directly in Zotero since the last update.

zotero_get_search_database_status

Get status information about the semantic search database.

zotero_batch_update_tags

Batch update tags across multiple items matching a search query or tag filter.

zotero_create_collection

Create a new collection (project/folder) in your Zotero library. To create a subcollection, pass parent_collection (not parent_key) as either a collection key (8-character string like 'KMMQDFQ4') or a collection name. Use zotero_search_collections to find collection keys.

zotero_search_collections

Search for collections by name to find their keys.

zotero_manage_collections

Add or remove one or more items from collections. item_keys must be an ARRAY of item keys, e.g. ["KEY1", "KEY2"] — not a single string. add_to and remove_from also accept arrays of collection keys. Use zotero_search_items to find item keys and zotero_search_collections to find collection keys.

zotero_add_by_doi

Add a paper to your Zotero library by DOI. Fetches metadata from CrossRef.

zotero_add_by_url

Add a paper by URL. Supports DOI URLs, arXiv URLs, and general web pages.

zotero_update_item

Update metadata for an existing item in your Zotero library. To add tags without removing existing ones, use add_tags (not tags). To remove specific tags, use remove_tags. Using tags replaces ALL existing tags — use add_tags/remove_tags for incremental changes.

zotero_find_duplicates

Find duplicate items in your library by title and/or DOI.

zotero_merge_duplicates

Merge duplicate items. Consolidates tags, collections, notes, annotations, and all child items into the keeper. Duplicates are moved to Trash (recoverable). Dry-run by default — call with confirm=True to execute. Parameters: keeper_key (the item key to KEEP), duplicate_keys (ARRAY of item keys to merge into the keeper and then trash).

zotero_get_pdf_outline

Extract the table of contents / outline from a PDF attachment.

zotero_add_from_file

Add an item to Zotero from a local PDF file. Attempts DOI extraction for rich metadata. File path must be absolute and point to a .pdf or .epub file.

scite_enrich_item

Get a Scite citation report for a paper — supporting, contrasting, and mentioning citation counts plus retraction/correction alerts. Provide either a DOI or a Zotero item key. No Scite account needed.

scite_enrich_search

Search your Zotero library and enrich results with Scite citation data. Each result shows supporting/contrasting/mentioning tallies and retraction alerts alongside standard Zotero metadata. No Scite account needed.

scite_check_retractions

Scan items in your Zotero library for retractions, corrections, and other editorial notices using Scite data. Filter by collection, tag, or check recent items. No Scite account needed.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/54yyyu/zotero-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server