agentsclimarketplace

Zotero mcp

Skill dahliasan/researchskills/skills/zotero-mcp

Install, configure, and operate the 54yyyu Zotero MCP server (zotero-mcp-server). Use when the user asks for Zotero MCP, zotero-mcp, richer Zotero agent tools (annotations, DOI add, semantic search extras), or how to connect Zotero to Cursor/Claude via MCP. Upstream: https://github.com/54yyyu/zotero-mcp. Not a Zotero .xpi plugin; not ZotSeek. For day-to-day library routing see zotero; for ZotSeek semantic plugin see zotseek.From its SKILL.md

Install
npx -y skills add dahliasan/researchskills --skill zotero-mcp

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

6.3 KB, as published. Nobody here has run it

Zotero MCP (54yyyu)

Agent skill for the Python MCP server that exposes a rich Zotero tool set to Cursor, Claude, and other MCP hosts.

Upstream (install from here): github.com/54yyyu/zotero-mcp

This pack does not vendor that code. Prefer the upstream README when install flags change. This skill is the researchskills entry point: install, detect, route, and boundaries.

What it is / is not

IsOptional MCP server package zotero-mcp-server (CLI zotero-mcp)
Is notA Zotero Desktop .xpi plugin
Is notintrofini/ZotSeek (separate plugin + MCP; skill zotseek)
Is notThe pack’s local-API CLIs (skills/zotero/scripts/) — those are the thin fallback

Day-to-day library work still goes through skill zotero (router: prefer MCP tools when connected, else local scripts). Load this skill when installing, debugging MCP connection, or choosing MCP-only capabilities.

Install

Recommended:

uv tool install zotero-mcp-server
zotero-mcp setup   # auto-configure where supported (e.g. Claude Desktop)

Also fine: pip install zotero-mcp-server or pipx install zotero-mcp-server, then zotero-mcp setup.

Optional extras (see upstream):

ExtraAdds
[semantic]Vector semantic search (Chroma / embeddings)
[pdf]PDF outline / heavier PDF helpers
[scite]Scite tallies / retraction helpers

GUI-oriented community installer (optional): ehawkin/zotero-mcp-setup.

Full docs: 54yyyu/zotero-mcp README.

Harness config (local read-first)

Local mode needs Zotero Desktop running with local HTTP access enabled (Settings → Advanced).

Minimal env: ZOTERO_LOCAL=true.

Remote library on another host: MCP still uses 127.0.0.1:23119 on the Cursor machine. SSH-forward that port to the Zotero host, then keep ZOTERO_LOCAL=true. If skill zotero-private is installed, follow it for host-specific tunnel aliases and MCP paths (do not put those in public skills).

Cursor — MCP settings (stdio). Prefer absolute path if the GUI cannot see PATH:

"zotero": {
  "command": "zotero-mcp",
  "env": {
    "ZOTERO_LOCAL": "true"
  }
}

Find the binary with which zotero-mcp or zotero-mcp setup-info.

Claude Code — e.g. in ~/.claude.json mcpServers:

"zotero": {
  "command": "zotero-mcp",
  "env": {
    "ZOTERO_LOCAL": "true"
  }
}

Hybrid writes (optional)

Local API is largely read-only for library membership. For MCP writes (add by DOI, update items, notes, attach PDF, etc.), set a Zotero Web API key + library id (Zotero → Settings → Security → Applications):

  • Keep ZOTERO_LOCAL=true for fast local reads
  • Add ZOTERO_API_KEY and ZOTERO_LIBRARY_ID (numeric userID; for groups also ZOTERO_LIBRARY_TYPE=group)

Confirm with the user before any write.

Where to store the API key (hosts): prefer ~/.config/zotero-mcp/config.json → client_env (upstream loads this on serve). Host overlays like zotero-private document the local helpers zotero-mcp-set-key / zotero-mcp-cred-status. Do not commit keys.

PDF file sync vs Zotero Storage: MCP attachment uploads follow the library’s Desktop sync settings. To avoid burning Zotero’s free file quota, configure Settings → Sync → File Syncing → WebDAV (or turn file sync off). Host-specific WebDAV / attach policy belongs in skill zotero-private when present — do not put credentials in public skills. See WebDAV services.

Web-only remote mode: zotero-mcp setup --no-local --api-key … --library-id … (see upstream).

Detect in-session

Look for harness MCP tools named zotero_*, for example:

  • Search: zotero_search_items, zotero_advanced_search, zotero_semantic_search
  • Read: zotero_get_item_metadata, zotero_get_item_fulltext, zotero_get_collection_items, zotero_get_attachment_path
  • Annotations / notes: zotero_get_annotations, zotero_create_note, …
  • Write: zotero_add_by_doi, zotero_update_item, zotero_create_collection, …

If present → use them (skill zotero already prefers this path). If absent → install/configure per this skill, or fall back to zotero local scripts and say MCP is not connected.

When to prefer MCP vs siblings

GoalUse
Annotations, DOI/URL/ISBN add, collection manage, rich searchThis MCP (zotero_* tools)
BibTeX + insert cite into TeX/Markdown draftSkill zotero scripts (zotero.py cite) even if MCP is up
Collection name → disk PDF paths without MCPzotero → query_collection.py
Local semantic passages + zotero:// page linksSkill zotseek (ZotSeek plugin)
Scite from CLI outside MCPSkill pp-scite

54yyyu [semantic] and ZotSeek are different stacks. Prefer zotseek when the user already runs the ZotSeek plugin; use MCP semantic only if that extra is installed and indexed.

Agent workflow

  1. Confirm upstream link: https://github.com/54yyyu/zotero-mcp
  2. Check whether zotero_* MCP tools are already available.
  3. If not: give install + harness snippet; do not pretend tools exist.
  4. If yes: call the matching MCP tool; confirm before writes.
  5. For manuscript cite wiring, still use zotero / zotero.py cite as needed.

Related skills

  • zotero — session router (MCP if present, else local-API scripts)
  • zotseek — ZotSeek plugin semantic MCP
  • pp-scite — Scite CLI outside this MCP
  • find-pdf — PDF waterfall when the item is not already in Zotero

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.