{
  "slug": "io-github-54yyyu-zotero-mcp",
  "name": "io.github.54yyyu/zotero-mcp",
  "title": "Zotero MCP",
  "description": "Search, read, annotate, and add to your Zotero research library, local or web.",
  "version": "0.15.1",
  "publishedAt": "2026-10-16T20:57:23.054303Z",
  "updatedAt": "2026-10-16T20:57:23.054303Z",
  "repoUrl": "https://github.com/54yyyu/zotero-mcp",
  "websiteUrl": "https://stevenyuyy.com/zotero-mcp/",
  "namespace": {
    "type": "github",
    "owner": "54yyyu"
  },
  "kind": "local",
  "packages": [
    {
      "registryType": "pypi",
      "identifier": "zotero-mcp-server",
      "version": "0.15.1",
      "transport": "stdio",
      "runtimeHint": "uvx"
    }
  ],
  "remotes": [],
  "envVars": [
    {
      "name": "ZOTERO_LOCAL",
      "isSecret": false,
      "isRequired": false,
      "description": "Read from the local Zotero desktop app instead of the web API. Requires Zotero 7+ with the local API enabled in Settings > Advanced."
    },
    {
      "name": "ZOTERO_API_KEY",
      "isSecret": true,
      "isRequired": false,
      "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."
    },
    {
      "name": "ZOTERO_LIBRARY_ID",
      "isSecret": false,
      "isRequired": false,
      "description": "Zotero user or group library ID. Only needed when ZOTERO_LOCAL is false, or for write operations in hybrid mode."
    },
    {
      "name": "ZOTERO_LIBRARY_TYPE",
      "isSecret": false,
      "isRequired": false,
      "description": "Whether ZOTERO_LIBRARY_ID refers to a personal or a group library."
    },
    {
      "name": "ZOTERO_MCP_TOOLSETS",
      "isSecret": false,
      "isRequired": false,
      "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."
    }
  ],
  "category": "search-web",
  "subcategory": "research",
  "company": "",
  "categoryAuto": true,
  "checks": [
    {
      "id": "source-linked",
      "label": "Source repository linked",
      "result": "pass",
      "detail": "https://github.com/54yyyu/zotero-mcp"
    },
    {
      "id": "version-pinned",
      "label": "Version pinned",
      "result": "pass",
      "detail": "Every package has an explicit version"
    },
    {
      "id": "secrets-requested",
      "label": "Secrets requested",
      "result": "info",
      "detail": "Asks for 1 secret: ZOTERO_API_KEY"
    },
    {
      "id": "known-registry",
      "label": "Known package registry",
      "result": "pass",
      "detail": "All packages come from npm, PyPI, OCI, NuGet or MCPB"
    },
    {
      "id": "namespace",
      "label": "Namespace ownership",
      "result": "info",
      "detail": "Name verified via GitHub account 54yyyu"
    },
    {
      "id": "meta-text",
      "label": "Registry text aimed at the AI",
      "result": "pass",
      "detail": "Description and settings contain no hidden characters or instructions to the AI"
    },
    {
      "id": "install-scripts",
      "label": "Install scripts",
      "result": "pass",
      "detail": "zotero-mcp-server 0.15.1 has no setup.py; nothing runs at install"
    },
    {
      "id": "code-flags",
      "label": "Code red flags",
      "result": "warn",
      "detail": "Very long encoded blob in code (zotero_mcp_server-0.15.1/plugin/src/ui/fake-host.ts:15: \"\"iVBORw0KGgoAAAANSUhEUgAAAUAAAAB4CAIAAAAMrLyJAAAI/klEQVR4nO3dbUhT/R/H8d9uFEkTelI9MbiwqJghSmBSRi4rH4h\"); Downloads and runs a script (zotero_mcp_server-0.15.1/plugin/src/zotero/doctor.ts:54: \"curl -LsSf https://astral.sh/uv/install.sh | sh\")"
    },
    {
      "id": "ai-text",
      "label": "Text aimed at the AI",
      "result": "pass",
      "detail": "No hidden characters or instructions to the AI in 486 files, including comments and the README"
    }
  ],
  "scannedAt": "2026-10-29",
  "level": "Scanned",
  "install": [
    {
      "label": "Claude Desktop (pypi)",
      "kind": "claude_desktop_json",
      "text": "{\n  \"mcpServers\": {\n    \"zotero-mcp\": {\n      \"command\": \"uvx\",\n      \"args\": [\n        \"zotero-mcp-server==0.15.1\"\n      ]\n    }\n  }\n}"
    }
  ],
  "curated": true,
  "stars": 5630,
  "archived": false,
  "pushedAt": "2026-10-16T21:34:45Z",
  "health": {
    "score": 85,
    "parts": {
      "popularity": 0.7895632149297727,
      "activity": 1,
      "issues": 0.8562874251497006,
      "security": 0.8
    },
    "fail": 0,
    "warn": 1,
    "raw": {
      "stars": 5657,
      "forks": 454,
      "downloads": 5569,
      "hn": {
        "n": 1,
        "pts": 10,
        "t": [
          [
            "43824520",
            "Show HN: Zotero-MCP – Connect Your Research Library with Your AI Assistant",
            10,
            0,
            "2025-04-28"
          ]
        ]
      },
      "issuesOpen": 48,
      "issuesClosed": 286,
      "prsMerged": 322,
      "commits90": 658,
      "release": "2026-10-16T20:57:20Z",
      "pushed": "2026-10-16T21:34:45Z",
      "growth": null,
      "growthDays": null,
      "archived": false
    },
    "at": "2026-10-31T07:42:38.200Z"
  }
}
