{"adoption": {"forks": 92, "observed_at": "2026-09-03T02:15:10.198549+00:00", "stars": 1120}, "canonical_url": "https://ross.abutalabs.com/products/cookjohn-zotero-mcp", "card": {"archived": false, "artifact_type": "plugin", "description": "It's a plugin extension in Zotero.  Zotero MCP Plugin enables integration between AI assistants and Zotero through MCP. Zotero MCP Plugin 是一个 Zotero 插件，通过 MCP协议实现 AI 助手与 Zotero深度集成。插件支持文献检索、元   数据管理、全文分析和智能问答等功能，让 Claude、ChatGPT 等 AI 工具能够直接访问和操作您的文献库。", "domain": ["developer-tools", "artificial-intelligence", "education"], "enriched": true, "function": ["mcp", "search-engine", "nlp", "rag"], "health_score": 100, "homepage": null, "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["cookjohn/zotero-mcp"], "name": "cookjohn/zotero-mcp", "platform": ["cross-platform"], "pushed_at": "2026-09-02T23:44:21+00:00", "repo": "cookjohn/zotero-mcp", "stars": 1120, "tags": ["zotero", "mcp-server", "reference-management", "literature-review", "semantic-search", "pdf-annotations", "ai-agents", "nodejs", "typescript"], "topics": ["literature-review", "mcp-server", "zotero"], "urls": [], "use_cases": ["search my zotero library from claude", "let an ai assistant do a literature review from my references", "extract pdf full text and annotations via mcp", "semantic search across my research papers", "have ai create notes and manage tags in zotero", "connect chatgpt or claude to my citation library"], "what_it_is": "A Zotero plugin with an integrated MCP server that lets AI assistants like Claude access and operate on a local Zotero library via the Model Context Protocol. It supports library search, PDF full-text extraction, annotation analysis, semantic search, and write operations such as notes and metadata updates.", "when_to_avoid": ["you don't use Zotero for reference management", "you need a cloud-hosted or non-MCP integration", "you use a Zotero version other than 7"], "when_to_choose": ["you use Zotero 7 and want AI assistants to read or write your library", "you need MCP-based integration with semantic search and annotation analysis", "you want a self-hosted, MIT-licensed bridge between Zotero and LLM clients"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/cookjohn-zotero-mcp", "repo": "cookjohn/zotero-mcp", "role": "main", "score": 85}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-09-03T02:15:10.198549+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:45:37.248437+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fcb2904673e0a9d735e8f32fe0709be8ea9509793a482e2bee7dfa6d79300af7", "fetched_at": "2026-09-03T02:15:10.198549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cookjohn/zotero-mcp"}, {"content_hash": "4e9d1d473a45e8bcb8016421993df43f978b1d228170fc1e35a3b0202ffbb1c5", "fetched_at": "2026-08-29T12:48:24.166906+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/zotero-mcp"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-09-03T02:15:10.198549+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:45:37.248437+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fcb2904673e0a9d735e8f32fe0709be8ea9509793a482e2bee7dfa6d79300af7", "fetched_at": "2026-09-03T02:15:10.198549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cookjohn/zotero-mcp"}, {"content_hash": "4e9d1d473a45e8bcb8016421993df43f978b1d228170fc1e35a3b0202ffbb1c5", "fetched_at": "2026-08-29T12:48:24.166906+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/zotero-mcp"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:45:37.248437+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fcb2904673e0a9d735e8f32fe0709be8ea9509793a482e2bee7dfa6d79300af7", "fetched_at": "2026-09-03T02:15:10.198549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cookjohn/zotero-mcp"}, {"content_hash": "4e9d1d473a45e8bcb8016421993df43f978b1d228170fc1e35a3b0202ffbb1c5", "fetched_at": "2026-08-29T12:48:24.166906+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/zotero-mcp"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-09-03T02:15:10.198549+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-09-03T02:15:10.198549+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-09-03T02:15:10.198549+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:45:37.248437+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fcb2904673e0a9d735e8f32fe0709be8ea9509793a482e2bee7dfa6d79300af7", "fetched_at": "2026-09-03T02:15:10.198549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cookjohn/zotero-mcp"}, {"content_hash": "4e9d1d473a45e8bcb8016421993df43f978b1d228170fc1e35a3b0202ffbb1c5", "fetched_at": "2026-08-29T12:48:24.166906+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/zotero-mcp"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-09-03T02:15:10.198549+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-09-03T02:15:10.198549+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:45:37.248437+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fcb2904673e0a9d735e8f32fe0709be8ea9509793a482e2bee7dfa6d79300af7", "fetched_at": "2026-09-03T02:15:10.198549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cookjohn/zotero-mcp"}, {"content_hash": "4e9d1d473a45e8bcb8016421993df43f978b1d228170fc1e35a3b0202ffbb1c5", "fetched_at": "2026-08-29T12:48:24.166906+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/zotero-mcp"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-09-03T02:15:10.198549+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-09-03T02:15:10.198549+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-09-03T02:15:10.198549+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:45:37.248437+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fcb2904673e0a9d735e8f32fe0709be8ea9509793a482e2bee7dfa6d79300af7", "fetched_at": "2026-09-03T02:15:10.198549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cookjohn/zotero-mcp"}, {"content_hash": "4e9d1d473a45e8bcb8016421993df43f978b1d228170fc1e35a3b0202ffbb1c5", "fetched_at": "2026-08-29T12:48:24.166906+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/zotero-mcp"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-09-03T02:15:10.198549+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-09-03T02:15:10.198549+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:45:37.248437+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fcb2904673e0a9d735e8f32fe0709be8ea9509793a482e2bee7dfa6d79300af7", "fetched_at": "2026-09-03T02:15:10.198549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cookjohn/zotero-mcp"}, {"content_hash": "4e9d1d473a45e8bcb8016421993df43f978b1d228170fc1e35a3b0202ffbb1c5", "fetched_at": "2026-08-29T12:48:24.166906+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/zotero-mcp"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:45:37.248437+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fcb2904673e0a9d735e8f32fe0709be8ea9509793a482e2bee7dfa6d79300af7", "fetched_at": "2026-09-03T02:15:10.198549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cookjohn/zotero-mcp"}, {"content_hash": "4e9d1d473a45e8bcb8016421993df43f978b1d228170fc1e35a3b0202ffbb1c5", "fetched_at": "2026-08-29T12:48:24.166906+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/zotero-mcp"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:45:37.248437+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fcb2904673e0a9d735e8f32fe0709be8ea9509793a482e2bee7dfa6d79300af7", "fetched_at": "2026-09-03T02:15:10.198549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cookjohn/zotero-mcp"}, {"content_hash": "4e9d1d473a45e8bcb8016421993df43f978b1d228170fc1e35a3b0202ffbb1c5", "fetched_at": "2026-08-29T12:48:24.166906+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/zotero-mcp"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:45:37.248437+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fcb2904673e0a9d735e8f32fe0709be8ea9509793a482e2bee7dfa6d79300af7", "fetched_at": "2026-09-03T02:15:10.198549+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cookjohn/zotero-mcp"}, {"content_hash": "4e9d1d473a45e8bcb8016421993df43f978b1d228170fc1e35a3b0202ffbb1c5", "fetched_at": "2026-08-29T12:48:24.166906+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/zotero-mcp"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 100, "longevity": 27, "rhythm": 100}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 384, "days_push": 0, "days_rel": 0, "gap_med": 2, "n_releases_24m": 26}, "score": 85, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 3, "stale_scrape": false}}