{"name":"io.github.dvdsosa/zotero-native-mcp","slug":"dvdsosa-zotero-native-mcp","title":"Zotero Native MCP","description":"Read and write your local Zotero 10 library. No plugin, no zotero.org API key, no cloud.","url":"https://mcp.market/server/dvdsosa-zotero-native-mcp","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":32,"stars":5,"forks":0,"downloads_week":67,"last_push_at":"2026-09-04T08:16:12.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/dvdsosa/zotero-native-mcp","website":null,"version":"1.0.1","remotes":[],"packages":[{"registryType":"npm","identifier":"zotero-native-mcp","version":"1.0.1","transport":{"type":"stdio"},"environmentVariables":[{"description":"Port of Zotero's local HTTP server. Defaults to 23119.","name":"ZOTERO_LOCAL_PORT"},{"description":"Name shown in Zotero's authorization dialog. Defaults to zotero-native-mcp.","name":"ZOTERO_LOCAL_APP_NAME"}]}],"tools":[{"name":"zotero_add_items_to_collection","description":"File existing items into a collection, keeping every collection they already belong to. An","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_attach_file","description":"Attach a file from disk to a Zotero item, or add it as a standalone attachment. mode=\"linked\"","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_authorize","description":"Request a local API key so write tools (creating collections, items, and attachments) can","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_create_collection","description":"Create one or more collections, optionally nested under an existing collection. Up to 50 per","write_action":true,"price_micros":0,"input_schema":null},{"name":"zotero_create_items","description":"Create up to 50 items in one call. Set `collections` on an item to file it into collections","write_action":true,"price_micros":0,"input_schema":null},{"name":"zotero_delete_collection","description":"Move collections to Zotero's trash, which is reversible and the default. The items inside","write_action":true,"price_micros":0,"input_schema":null},{"name":"zotero_delete_items","description":"Move up to 50 items to Zotero's trash, where the user can restore them from the Zotero","write_action":true,"price_micros":0,"input_schema":null},{"name":"zotero_empty_trash","description":"Permanently erase every item in the trash. This is irreversible and removes attachment","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_export_items","description":"Export items in a citation format. Use format \"bibtex\", \"biblatex\", \"ris\", \"csljson\", \"csv\"","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_get_attachment_path","description":"Resolve an attachment to its absolute path on this machine, so the file can be opened and","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_get_collection","description":"Fetch one collection by key, including its name, parent collection, item count and current","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_get_item","description":"Fetch one item by key with all of its metadata. Set includeChildren to also return its notes","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_get_item_children","description":"List the child notes, attachments and annotations of an item. Attachment children carry the","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_get_item_fulltext","description":"Return the indexed full text of an attachment. Passing a regular item key works too: its","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_get_item_type_fields","description":"List the valid field names and creator types for a Zotero item type, or list every item","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_list_collections","description":"List collections in a library. scope=\"all\" returns every collection flat (each carrying its","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_list_libraries","description":"List the personal library and every group library available locally. Use this to get the","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_list_saved_searches","description":"List the saved searches defined in the library, with their conditions. Run one with","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_list_tags","description":"List tags in the library, optionally only those used within one collection or matching a","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_list_trash","description":"List the items currently in Zotero's trash, which are the ones zotero_restore_items can","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_remove_items_from_collection","description":"Remove items from one collection. The items stay in the library and in any other collection","write_action":true,"price_micros":0,"input_schema":null},{"name":"zotero_restore_collection","description":"Bring collections back out of Zotero's trash, undoing a non-permanent","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_restore_items","description":"Bring items back out of Zotero's trash, undoing a non-permanent zotero_delete_items. The","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_run_saved_search","description":"Execute a saved search and return the matching items. The search runs against the local","write_action":true,"price_micros":0,"input_schema":null},{"name":"zotero_search_items","description":"Search the local Zotero library. `q` runs Zotero's quicksearch: qmode \"titleCreatorYear\"","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_status","description":"Check that the local Zotero instance is running and reachable, and report its version,","write_action":false,"price_micros":0,"input_schema":null},{"name":"zotero_update_collection","description":"Rename a collection and/or move it under a different parent. Pass parentCollectionKey=null to","write_action":true,"price_micros":0,"input_schema":null},{"name":"zotero_update_item","description":"Patch fields on an existing item. Only the fields passed in `fields` change; everything else","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-09-20T16:17:06.943Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T16:17:06.867Z","components":{"code":{"score":25,"max":25,"notes":["14 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":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 16 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"zotero-native-mcp","version":"1.0.1","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":2,"publishedAt":"2026-09-03T23:01:34.113Z","repositoryUrl":"git+https://github.com/dvdsosa/zotero-native-mcp.git","weeklyDownloads":67}],"repo":{"found":true,"owner":"dvdsosa","repo":"zotero-native-mcp","archived":false,"pushedAt":"2026-09-04T08:16:12Z","stars":5,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/7567843?v=4","ownerCreatedAt":"2014-05-13T10:08:18Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/7567843?v=4&s=128","source":"github"},"presence":{"stars":5,"forks":0,"downloadsWeek":67,"license":"MIT","lastPushAt":"2026-09-04T08:16:12.000Z","score":32}}}},"grade_history":[],"reviews":[]}