Zotseek
Semantic search over a Zotero library via ZotSeek MCP (search, find_similar, index_status). Use when the user asks for ZotSeek, semantic Zotero search, related papers from embeddings, manuscript citation curation from the library, or PDF-page snippets with zotero:// deep links. Prefer this over keyword-only Zotero search when relevance ranking or passage evidence matters. Not a substitute for project RAG or for listing a named collection (use zotero for collection membership and PDF paths).From its SKILL.md
npx -y skills add dahliasan/researchskills --skill zotseekAssembled 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
4.9 KB, as published. Nobody here has run it
ZotSeek (semantic Zotero MCP)
ZotSeek is a Zotero plugin that embeds library PDFs locally and exposes MCP tools
at http://localhost:23119/zotseek/mcp (same port family as the Zotero Connector).
Download / install the plugin (not this skill): introfini/ZotSeek → Releases (.xpi) → Zotero Tools → Plugins → Install Plugin From File. Then enable AI Agent Access in ZotSeek settings and allow Zotero local HTTP access (Settings → Advanced). MCP setup notes: docs/MCP.md.
This skill documents agent workflow. It does not install ZotSeek, and it is unrelated to 54yyyu/zotero-mcp (a separate Python MCP server; that is routed by skill zotero when present).
When to use
| Goal | Tooling |
|---|---|
| Natural-language / semantic paper find | ZotSeek search |
| More like this paper | ZotSeek find_similar |
| Items in a named collection + PDF paths | zotero (MCP if present, else local scripts) |
| BibTeX / cite / write collections | zotero |
| OpenAlex discovery (new papers) | discover-papers |
Preconditions
- Zotero is running with ZotSeek installed and indexed.
- MCP registered in the harness (see reference.md).
- ZotSeek reachable on localhost:23119 (or tunneled there). If Zotero runs on another machine:
ssh -fN -L 23119:127.0.0.1:23119 your-zotero-host
# Check: lsof -i :23119
If skill zotero-private is installed, load it first for this machine’s
tunnel alias and MCP bridge path.
Smoke test: curl -sS http://localhost:23119/zotseek/mcp should not connection-refuse.
Agent workflow
- Ensure port 23119 is listening (tunnel if remote; follow
zotero-privatewhen present). index_status— confirmready, coverage,lastIndexed. If not ready, stop and tell the user to index in ZotSeek.search— write a concrete scholarly query (species + place + process), not a single vague keyword.- Present results with title, authors, year, snippet + page, and clickable links:
- Prefer
links.selectHttp/links.openPdfHttpin clients that do not linkifyzotero://.
- Prefer
- For expansion from a known hit, call
find_similarwith thatitemKey. - Curate, do not dump: mark keep / maybe / skip against the user's section goal.
- Collection membership is not in ZotSeek results — cross-check with
zoterowhen needed.
Query tips
- One claim or section theme per query; run several targeted queries rather than one mega-query.
- Default
mode:hybrid. Usesemanticfor paraphrase recall;keywordfor exact author/title. granularity: passageswhen drafting and you need page-level quotes;papersfor shortlists.
Tools (names)
| Tool | Required args | Notes |
|---|---|---|
index_status | — | Call first |
search | query | Optional: max_results, mode, min_similarity, granularity, library_key |
find_similar | item_key | Optional: library_key, max_results |
library_key: omit for all indexed libraries; user for personal; group:<id> for a group.
MCP fallback (no harness tool)
If the zotseek MCP server is not loaded but port 23119 is up, call JSON-RPC over HTTP (initialize → tools/call). Full recipe: reference.md.
Setup (once per harness)
Prefer stdio bridge in Cursor when HTTP MCP shows SSE errors. Point at this pack's bridge script:
"zotseek": {
"command": "/usr/bin/python3",
"args": ["/ABSOLUTE/PATH/TO/researchskills/skills/zotseek/scripts/zotseek_stdio_mcp.py"]
}
Use an absolute path (expand ~). The bridge calls REST GET /zotseek/* on 127.0.0.1:23119.
HTTP transport still works in clients that do not require SSE GET:
claude mcp add --transport http --scope user zotseek http://localhost:23119/zotseek/mcp
Details: reference.md.
Related skills
zotero-private— optional host overlay (tunnel / remote library); load when presentzotero— library router (prefer MCP if present, else local API scripts)zotero-mcp— install/config for 54yyyu/zotero-mcpmanuscript-writing— how cites land in prosediscover-papers— find new papers outside the library