peijiping/dsh-plugin-zotero ↗★ 0

dsh-plugin-zotero

将本地Zotero文献库接入对话并支持引用 适合需要检索本地Zotero文献并插入对话草稿的学术研究用户。

套件
dsh-plugin-zotero
相容性
待驗證
Cordis 依賴範圍
^4.0.1
版本
0.1.0
授權
MIT
最近更新
2026年10月17日

安裝

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:peijiping/dsh-plugin-zotero

插件页配置项

在 dsh 顶部的「插件」面板里展开 dsh-plugin-zotero,点组件行上的「配置 dsh-plugin-zotero」,即可调整连接参数。表单分两组。

API 设置(本地 API 与面板行为)

字段默认生效点
zoteroBaseUrlhttp://127.0.0.1:23119Zotero 本地 API 探活与全部请求
requestTimeoutMs5000单次本地 API 请求超时
fulltextMaxBytes204800附件全文返回上限(超出截断)
defaultLimit50面板条目列表默认拉取条数

MCP 设置(集成 MCP 连接与工具清单)

字段默认生效点
mcpUrlhttp://127.0.0.1:23120/mcp集成 MCP 探活、工具列表与工具调用
mcpProbeTimeoutMs800TCP 探活集成 MCP 端口超时
disabledMcpTools[]被停用的 MCP 工具原始名;模型侧据此过滤注册

MCP 组下方是 「MCP 工具」 区:现场列出集成 MCP 的全部工具(mcp__zotero__ + 描述),每行右侧一个开关。关掉某个工具并保存后,模型侧不再注册它(等价于从模型的工具表里摘掉);「重新读取」可重拉清单。开启配置卡或保存后各同步一次工具注册。

保存与重置:

  • 保存写入 profile 的 patch 层 ~/.dsh/profiles/ /cordis.patch.yml。
  • 所有字段走 Schemastery .volatile(),只提交新值并唤醒引用,无需重启即时生效;工具开关同理(写进 disabledMcpTools 字段)。
  • 字段旁的「已覆盖」表示该值来自 patch 层而非默认值;点「恢复默认」清掉覆盖。若该值被更高优先级的 patch 层覆盖,保存会报「被覆盖」错误。
  • 「设置 → 内置插件」是只读清单,不提供编辑入口;配置入口只在「插件」面板。

实现:Host 半在 src/index.ts 导出 Config schema、注入读取器(src/zotero/config.ts 的 setSettingsReader)并驱动 src/host/mcp-bridge.ts;Client 半在 src/client/ZoteroCard.tsx 渲染配置卡(席位 key dsh-plugin-zotero#dsh-plugin-zotero)。

配置

开启 Zotero 本地 API

Zotero → 设置 → 高级 → 勾选 「允许本机其他应用与 Zotero 通信」(默认端口 23119,仅监听回环)。验证:

curl http://127.0.0.1:23119/api/   # 期望输出:Zotero is running

未勾选时读端点返回 403,面板显示「Zotero 未连接」并提示启用步骤。

模型侧 MCP 与权限边界

模型侧工具由插件自己桥接:src/host/mcp-bridge.ts 直连本机 Zotero 集成 MCP(本机实测 zotero-integrated-mcp v1.1.0,暴露 20 个工具),按配置里的 disabledMcpTools 过滤后以 mcp__zotero__* 注册给模型。cordis.patch.yml 不再插入 @deepseek-ai/dsh-mcp-client —— 它不支持按工具开关,且同 serverName 会与自注册工具重名冲突。

⚠️ 面板只读,但模型侧工具不是:20 个工具中含 5 个改变文库结构的写工具(create_collection / update_collection / delete_collection / add_items_to_collection / remove_items_from_collection)。想收紧为纯只读,直接在插件页配置卡的「MCP 工具」里关掉它们并保存即可;面板功能不受影响。