{"name":"io.github.54yyyu/zotero-mcp","slug":"54yyyu-zotero-mcp","title":"Zotero MCP","description":"Search, read, annotate, and add to your Zotero research library, local or web.","url":"https://mcp.market/server/54yyyu-zotero-mcp","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"search","tags":["search"],"presence":{"score":53,"stars":5086,"forks":406,"downloads_week":null,"last_push_at":"2026-09-15T19:50:26.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/54yyyu/zotero-mcp","website":"https://stevenyuyy.com/zotero-mcp/","version":"0.12.4","remotes":[],"packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"zotero-mcp-server","version":"0.12.4","runtimeHint":"uvx","transport":{"type":"stdio"},"packageArguments":[{"value":"serve","type":"positional","valueHint":"serve"}],"environmentVariables":[{"description":"Read from the local Zotero desktop app instead of the web API. Requires Zotero 7+ with the local API enabled in Settings > Advanced.","format":"boolean","default":"true","name":"ZOTERO_LOCAL"},{"description":"Zotero Web API key from https://www.zotero.org/settings/keys. Only needed when ZOTERO_LOCAL is false, or for write operations in hybrid mode.","format":"string","isSecret":true,"name":"ZOTERO_API_KEY"},{"description":"Zotero user or group library ID. Only needed when ZOTERO_LOCAL is false, or for write operations in hybrid mode.","format":"string","name":"ZOTERO_LIBRARY_ID"},{"description":"Whether ZOTERO_LIBRARY_ID refers to a personal or a group library.","format":"string","default":"user","choices":["user","group"],"name":"ZOTERO_LIBRARY_TYPE"},{"description":"Which optional tool groups to expose, as a comma-separated list. Every tool is sent to the model on each request, so optional capabilities are off by default. Use 'all' for the full surface, 'none' for core only, named groups (scite, duplicates, discovery, feeds, relations, libraries, search-admin, pdf-geometry) to add them, or a leading '-' to subtract.","format":"string","name":"ZOTERO_MCP_TOOLSETS"}]}],"tools":[{"name":"fetch","description":"Returns a JSON-encoded string with shape {\"id\",\"title\",\"text\",\"url\",\"metadata\":{...}}. The MCP runtime wraps this string as a single text content item.","write_action":false,"price_micros":0,"input_schema":null},{"name":"scite_check_retractions","description":"Check Zotero items for editorial notices (retractions, corrections).","write_action":false,"price_micros":0,"input_schema":null},{"name":"scite_enrich_item","description":"Enrich a single item with Scite citation data.","write_action":false,"price_micros":0,"input_schema":null},{"name":"scite_enrich_search","description":"Search Zotero and enrich results with Scite tallies.","write_action":false,"price_micros":0,"input_schema":null},{"name":"search","description":"Returns a JSON-encoded string with shape {\"results\": [{\"id\",\"title\",\"url\"}, ...]}. The MCP runtime wraps this string as a single text content item.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_add_item","description":"Detect the shape of ``source`` and dispatch to the matching adder.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_add_item_relation","description":"Add a related item relationship to a Zotero item. Creates a bidirectional link between two items.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_advanced_search","description":"Perform an advanced search with multiple criteria.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_attach_file","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_authorize_local_writes","description":"Obtain a local API key, prompting the user in the Zotero app.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_batch_update","description":"Batch tag and Extra-field edits over one item selection.","write_action":true,"price_micros":0,"input_schema":null},{"name":"zotero_create_annotation","description":"Dispatch to the highlight or area annotation implementation.","write_action":true,"price_micros":0,"input_schema":null},{"name":"zotero_create_collection","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"zotero_delete_annotation","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"zotero_delete_collection","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"zotero_delete_item","description":"Move a Zotero item to the Trash.","write_action":true,"price_micros":0,"input_schema":null},{"name":"zotero_export_bibliography","description":"Render a formatted bibliography/citations via Zotero's CSL engine.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_find_duplicates","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_find_related_papers","description":"Find references and/or citing works for a paper via OpenAlex.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_get_annotations","description":"Get annotations from your Zotero library.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_get_attachment_path","description":"List resolved local paths for an item's attachments.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_get_collection_items","description":"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. include_subcollections=True also returns items filed in collections nested beneath this one (default False, matching Zotero's own 'Search subcollections' checkbox). For a collection larger than limit, page through it wit","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_get_collections","description":"List all collections in your Zotero library.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_get_feed_items","description":"Retrieve items from a specific RSS feed.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_get_item_children","description":"Get all child items (attachments, notes) for one or more Zotero items.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_get_item_fulltext","description":"Get the full text content of a Zotero item.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_get_item_metadata","description":"Get detailed metadata for a Zotero item.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_get_item_related","description":"Get all related items for a specific Zotero item. Returns items that are linked via the relations field.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_get_notes","description":"Dispatch the note-read surface to listing or full-text search.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_get_page_layout","description":"Detect figure/table regions on a PDF page for area annotation grounding.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_get_pdf_outline","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_get_recent","description":"Get recently added items to your Zotero library.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_get_search_database_status","description":"Get semantic search database status.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_get_tags","description":"Get all tags used in your Zotero library.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_library_coverage","description":"Report PDF-attachment coverage across the library or a collection.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_list_feeds","description":"List all RSS feed subscriptions from the local Zotero database.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_list_libraries","description":"List all accessible Zotero libraries.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_manage_note","description":"Dispatch the note-write surface to create/update/delete.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_merge_duplicates","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_read_pdf_pages","description":"Read specific page range(s) from a PDF attachment of a Zotero item.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_remove_item_relation","description":"Remove a related item relationship from a Zotero item.","write_action":true,"price_micros":0,"input_schema":null},{"name":"zotero_search_by_citation_key","description":"Look up a Zotero item by its BetterBibTeX citation key.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_search_by_tag","description":"Search for items in your Zotero library by tag. Conditions are ANDed, each term supports disjunction (`OR`) and exclusion (`-`).","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_search_collections","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_search_items","description":"Search for items in your Zotero library.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_semantic_search","description":"Perform semantic search over your Zotero library.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_set_item_collections","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_set_item_parent","description":"Set ``parentItem`` through Zotero's versioned item-update API.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_switch_library","description":"Switch the active library for all subsequent MCP tool calls.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_synthesize_annotations","description":"Gather annotations and notes into a per-paper digest for synthesis.","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_update_annotation","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"zotero_update_collection","description":"","write_action":true,"price_micros":0,"input_schema":null},{"name":"zotero_update_item","description":"Update metadata fields on an existing Zotero item.","write_action":true,"price_micros":0,"input_schema":null},{"name":"zotero_update_search_database","description":"Update the semantic search database.","write_action":true,"price_micros":0,"input_schema":null},{"name":"zotero_write_capabilities","description":"Describe the currently available write path.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":83,"grade":"B","scanned_at":"2026-09-19T21:03:51.433Z","report":{"scannerVersion":"0.1.8","scannedAt":"2026-09-19T21:03:51.434Z","components":{"code":{"score":25,"max":25,"notes":["132 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 4 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"zotero-mcp-server","version":"0.12.4","found":true,"license":"MIT","dependencyCount":40,"publishedAt":"2026-09-15T03:50:48.666913Z","repositoryUrl":"https://github.com/54yyyu/zotero-mcp"}],"repo":{"found":true,"owner":"54yyyu","repo":"zotero-mcp","archived":false,"pushedAt":"2026-09-15T19:50:26Z","stars":5086,"forks":406,"openIssues":56,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/27888654?v=4","ownerCreatedAt":"2017-04-22T11:14:38Z","license":"MIT"},"icon":{"url":"https://stevenyuyy.com/assets/apple-touch-icon.png","source":"registry","width":180,"height":180},"presence":{"stars":5086,"forks":406,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-09-15T19:50:26.000Z","score":53}}}},"grade_history":[{"kind":"restore","fromGrade":"C","toGrade":"B","reason":"score 83","createdAt":"2026-09-19T21:03:51.898Z"}],"reviews":[]}