zotero_item_fulltext
Get the full text content of a Zotero item, given the item key of a parent item or specific attachment.
Search a Zotero library from the client, then spend the item key on either its citation details or the full text of its attachment.
LABSCO SUMMARY
Search narrows in either mode and hands back summaries; the metadata call turns a key into a citation key and publication details, and the full-text call turns the same key into the text of the attachment. That split keeps a wide search cheap — the body of only the item you settled on gets pulled into context. The wider search mode reaches abstracts and full text, which is what you want when you remember an argument rather than a title.
A server over a Zotero library, reached either through the desktop application's local API or over the Zotero Web API, with search, metadata and full-text retrieval in three tools.
A Zotero library and uv, or the published Docker image. Two ways in: set ZOTERO_LOCAL=true and run Zotero with "Allow other applications on this computer to communicate with Zotero" enabled under Settings → Advanced, or use the Web API with ZOTERO_API_KEY and ZOTERO_LIBRARY_ID, adding ZOTERO_LIBRARY_TYPE=group for a group library. The two differ in one way worth knowing: the local API indexes citation keys in search, the Web API does not. MIT.
One command plus a key — docker pull ghcr.io/kujenga/zotero-mcp:main, then supply credentials
USE CASES
Search over titles, creators and years, then turn the item key of the right hit into its citation key and publication details.
Pull the full text of the item or of one specific attachment, and take the citation details from the same key so the quotation and the reference cannot drift apart.
Filter by tag and search in the wider mode so abstracts and full text are covered too, then read the bodies of only the items that survive the filter.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
zotero_item_fulltextGet the full text content of a Zotero item, given the item key of a parent item or specific attachment.
zotero_item_metadataGet the complete metadata for a specific Zotero item, given the item key. Includes the citation key, publication details, identifiers, and timestamps.
zotero_search_itemsSearch for items in your Zotero library. Returns a summary of each match; look up individual results with zotero_item_metadata or zotero_item_fulltext.
Choosing a query mode:
Words match by prefix, and space-separated words must all be present though not necessarily adjacent, so 'cybor insect' matches 'Cyborg Insect'. A hyphen separates words and switches the match to OR: 'oxygen-deprived' matches anything containing 'oxygen' or 'deprived', which is far broader than intended. Write hyphenated terms with a space to require both halves.
BEFORE YOU INSTALL
3 tools when we connected. All three read; nothing writes to your library. Citation-key search works through the local Zotero API but returns nothing over the Web API.
uvx on PATH
All 3 documented setups run the server on your machine.
CONTEXT COST
Rated by the size of the 3 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
docker pull ghcr.io/kujenga/zotero-mcp:main{
"mcpServers": {
"zotero": {
"command": "uvx",
"args": [
"zotero-mcp@latest"
],
"env": {
"ZOTERO_LOCAL": "true",
"ZOTERO_API_KEY": "",
"ZOTERO_LIBRARY_ID": ""
}
}
}
}{
"mcpServers": {
"zotero": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"ZOTERO_API_KEY=<YOUR_ZOTERO_API_KEY>",
"-e",
"ZOTERO_LIBRARY_ID=<YOUR_ZOTERO_LIBRARY_ID>",
"ghcr.io/kujenga/zotero-mcp:main"
]
}
}
}{
"mcpServers": {
"zotero": {
"command": "<YOUR_PATH_TO_ZOTERO_MCP>/.venv/bin/zotero-mcp",
"env": {}
}
}
}