本文是Zotero-MCP的安装和使用笔记。最近几天将组里几个同学的zotero文献做了一个汇总,消除了重复的条目、补全了文献的pdf附件,花了不少时间和精力。为了让这个整理更有价值,希望能接入LLM并实现语义搜索,于是学习了一下如何使用Zotero-MCP。

Zotero-MCP安装

安装教程可以参考Zotero-MCP的Github仓库,在安装之前需要先明确以下依赖项:

  • Python 3.10+
  • Zotero 7+
  • MCP客户端(比如Claude Desktop,Cherry Studio等)

第一步,使用pip进行zotero-mcp-server安装

1
pip install zotero-mcp-server

并等待程序下载和安装所需的python包,

第二步,使用Auto-configure进行配置,

1
zotero-mcp setup

自动完成一些设置后,开始在terimnal中手动选择以设置语义搜索(Semantic Search)

Note: 为什么需要语义搜索?Zotero中采用的是关键词搜索,无法从语义层面理解文献。然而,有时我们需要通过自然语言进行搜索。Zotero-MCP中提供了语义搜索能力,其原理是对元数据或全文进行分块(chunk),然后用词嵌入(embedding)模型对这些分块文本进行 “编码”,得到每个分块的语义向量并存入向量数据库。每一个向量表示对应分块文本在语义空间中的位置。如果两个文本语义相近,那么他们在空间中“距离”越近。这种距离可以采用余弦值表达。在搜索时,提问被采用相同的方式进行嵌入而得到一个向量,通过这个向量与向量数据库中存储的向量两两计算余弦值,匹配出top-K距离最近的文本。于是,就可以得到符合搜索语句语义的内容。

包括以下内容:

  • 可用的embedding模型,选择默认的all-MinLM-L6-v2。也可以选择OpenAI的付费embedding模型
  • 向量数据库更新配置,选择每N天。也可以选择手动更新或其他
  • (若选择每N天更新)选择更新频率,输入30
  • 内容抽取设置和数据库存储路径可以选择默认

第三步,进行向量数据库的初始化

1
2
3
4
5
# Build the semantic search database (fast, metadata-only)
zotero-mcp update-db

# Build with full-text extraction (slower, more comprehensive)
zotero-mcp update-db --fulltext

Note: 在进行此步骤之前,请确保Zotero已经打开,并在Settings->Advanced中允许其他应用通讯

至此,Zotero-MCP完成安装。

Cherry Studio配置

Zotero-MCP提供了一个MCP Server,要使用LLM还需要一个MCP Client。Zotero-MCP主推的是Claude Desktop,但是因为只能使用Claude模型,所以有一些封闭。相比之下,Cherry Studio可以设置不同LLM,是更好的选择。以下以DeepSeek为例,介绍设置过程。

第一步,在DeepSeek开放平台充值并创建API。

第二步,在Cherry Studio中Settings -> Model Provider,设置DeepSeek API Key。

Note: 设置完后,记得点击右上角的开关按钮以打开

第三步,在Cherry Studio中Settings -> MCP Servers,设置MCP Server

首先安装uvbun

然后,Add -> Import from JSON,复制粘贴如下JSON

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
{
  "mcpServers": {
    "zotero": {
      "name": "zotero",
      "type": "stdio",
      "isActive": true,
      "command": "zotero-mcp",
      "args": [],
      "env": {
        "ZOTERO_LOCAL": "true"
      }
    }
  }
}

至此,Cherry Studio完成设置

使用案例

在Cherry Studio的首页中,点击对话框下部工具栏中的锤子按钮以选择配置好的Zotero-MCP Servers。

然后,选择推理模型并输入指令,让LLM通过MCP连接本地的Zotero。例如,我让他检索本地有关V2G的文献。

Note: DeepSeek有ChatReasoner,后者的思维链比较长,相对比较消耗Tokens。应根据任务,适当选择对应的推理模型。