What's New
New Tools
- Note CRUD —
zotero_update_noteandzotero_delete_notefor full note lifecycle management, plusraw_htmlparameter on note readers for round-trip editing (#199) - PDF area annotations —
zotero_create_area_annotationfor creating image/area annotations on PDFs using normalized coordinates (#190)
New Features
- Gemini embedding v2 — support for
gemini-embedding-2-preview(3072-dim, 8192-token context) with in-prompt task prefixes and batched embedding (up to 100 per call) (#205) - 10 new update_item fields —
volume,issue,pages,publisher,issn,language,short_title,edition,isbn,book_title, with skip warnings for inapplicable fields (#195) - Related items in markdown —
## Related Itemssection now included informat_item_metadataoutput (#191) - Collection-scoped search —
collection_keyparameter on search/retrieval tools to scope queries to specific collections (#194) - Community installer — linked ehawkin/zotero-mcp-setup in README for users who prefer a GUI installer
Bug Fixes
- Annotation hierarchy traversal —
zotero_get_annotationsnow correctly descends through PDF attachments with content-type filtering and deduplication (#201, #194) - Annotation key resolution — proper routing for attachment vs. parent item keys, with parent title fallback resolution (#194)
- tiktoken special tokens — fixed
ValueErroron<|endoftext|>during fulltext indexing (#188) - Group library 404 —
library_typenow correctly pluralized for pyzotero write client (#200) - ctx.warn → ctx.warning — fixed
AttributeErrorin error-handling branches wherectx.warn()was called butfastmcp.Contextonly defineswarning()(#202) - Config merge precedence — env vars no longer silently overwrite
config.jsonvalues (#204) - Query truncation —
embed_querynow truncates tomax_input_tokensbefore API call (#204) - Semantic stats accuracy — recovered docs no longer inflate
added_itemscount (#204) - API key propagation —
build_from_confignow passesapi_keyfor OpenAI and Gemini (#204) - chromadb ImportError — clear, actionable error message when chromadb is missing (#189)
- Hazardous docs link — fixed README/pyproject.toml links from expired
.usdomain to.com(#197, #206) - pyzotero version — bumped minimum to
>=1.6.0to ensurelocalkwarg support (#203) - Test reliability — fixed mock patching for Python 3.11/3.12 compatibility in CI
Full Changelog: v0.2.2...v0.3.0