Zotero MCP服务

一个为Zotero设计的本地MCP服务器,提供关键词搜索、语义搜索、学术文献发现和引用跟踪等功能,专为Apple Silicon优化。

  • by PsychQuant
  • Swift
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 kiki830621/che-zotero-mcp

使用说明

che-zotero-mcp

A. macOS原生 Zotero的MCP服务器,内置于Swift中。将您的研究库与AI助手连接起来——关键字搜索、语义搜索、学术文献发现、引文跟踪——所有这些都在Apple Silicon上本地运行。

受启发于 54年/月 (Python),重新构想为原生macOS应用程序。

为什么要进行原生重写?

| | 佐特罗mcp python che-zotero-mcp (Swift)| |---|---|---| | 语言 |Python | Swift| | 嵌入 |句子转换器(PyTorch)| MLXEmbedders(苹果MLX框架)| | 默认模型 |全MiniLM-L6-v2(仅限英语,384昏暗)|BAAI/bge-m3(多语言,1024昏暗)| | 向量数据库 |ChromaDB(独立进程)|内存+加速框架+SQLite持久化| | Zotero接入 |pyzotero HTTP客户端+SQLite |直接SQLite(只读)| | 依赖项 |~12个软件包(chromadb、torch、openai等)|2个Swift软件包(MCP SDK、MLX)| | 运行时 |Python+pip/uv |单编译二进制| | GPU加速 |CUDA/CPU回退|苹果硅GPU(金属)| | 外部服务 |可选(OpenAI,Gemini用于嵌入)|OpenAlex用于学术搜索(免费,无API密钥)| | 平台 |跨平台|仅限macOS(苹果硅)|

关键区别

  • 零Python依赖 --没有pip,没有venv,没有PyTorch。一个二进制文件,立即运行。
  • 苹果硅原生 --MLX通过Metal直接在GPU/神经引擎上运行嵌入,而不是通过PyTorch。
  • 无矢量数据库 --在典型的库大小(<100K论文)下,通过 Accelerate.framework (cblas/vDSP)足够快。没有ChromaDB开销。
  • 学术搜索 -集成OpenAlex API(250M+篇论文),用于外部文献发现和引用跟踪。

特性

  • 关键词搜索 --通过Zotero的本地SQLite按标题、创建者、标签搜索
  • 语义搜索 -使用MLX嵌入按意义查找论文(本地,无API密钥)
  • 学术搜索 --搜索外部文献,获取论文元数据,跟踪引文(OpenAlex)
  • ORCID导入 --从ORCID获取出版物,使用dedup批量导入Zotero
  • 全球DOI决议 --覆盖所有12个内政部注册机构的级联解析器
  • 写入操作 -创建集合,按DOI添加项目,管理库(Zotero Web API)
  • 注释和注解 --阅读项目注释和PDF亮点/评论
  • 元数据检索 --获取完整的书目信息、DOI查找、附件路径
  • 收藏和标签 --浏览库结构
  • 持久嵌入 --语义搜索索引在服务器重启后仍然存在

建筑

┌─────────────────────────────────────┐
│  Zotero SQLite (read-only)          │
│  ~/Zotero/zotero.sqlite            │
└──────────────┬──────────────────────┘
               │
       ┌───────┴────────┐
       │                │
  Keyword Search   Semantic Search
  (SQL queries)    (MLXEmbedders on Apple Silicon GPU)
       │                │
       │           Accelerate.framework
       │           (vDSP cosine similarity)
       │                │
       │           SQLite Persistence
       │           (~/.che-zotero-mcp/embeddings.sqlite)
       │                │
       └───────┬────────┘
               │
         MCP Server (stdio)
               │
       ┌───────┴────────┐
       │                │
  Zotero Tools     Academic Tools
  (10 tools)       (5 tools, OpenAlex API)

依赖项

安装

Claude 代码命令行界面

# Read-only mode (no API key needed)
claude mcp add --scope user --transport stdio che-zotero-mcp -- ~/bin/CheZoteroMCP

# Read + Write mode (with Zotero API key for creating items/collections)
claude mcp add --scope user --transport stdio -e ZOTERO_API_KEY=your_key che-zotero-mcp -- ~/bin/CheZoteroMCP

获取Zotero API密钥:https://www.zotero.org/settings/keys/new(启用库读/写访问)

工具(50)

佐特罗图书馆——阅读(14)

工具 说明
zotero_list_groups 列出Zotero组库(名称、组ID、项目数)
zotero_search 关键字搜索(标题、创建者、标签)
zotero_get_my_publications 在“我的出版物”中列出项目(本地→ Web API回退)
zotero_get_metadata 获取项目的详细元数据
zotero_get_collections 列出所有收藏
zotero_get_tags 列出所有标签
zotero_get_recent 获取最近添加的项目
zotero_semantic_search 基于MLX嵌入的语义搜索
zotero_build_index 构建/重建嵌入索引(持久化到磁盘)
zotero_get_items_in_collection 列出特定集合中的项目
zotero_search_by_doi 按DOI查找项目
zotero_get_attachments 获取PDF附件路径
zotero_get_notes 获取附加到项目的注释(纯文本)
zotero_get_annotations 获取PDF注释(突出显示、注释)

组库支持:大多数读/写工具都接受可选 group_id 参数。使用 zotero_list_groups 要查找可用组,请通过 group_id 搜索、浏览或写入特定组库。省略 group_id 使用您的个人库(默认)。

Zotero库-写(10,需要 ZOTERO_API_KEY)

工具 说明
zotero_create_collection 创建新集合(幂等)
zotero_add_item_by_doi DOI添加纸张(OpenAlex自动填充,幂等)
zotero_create_item 创建具有显式字段的项(如果DOI提供,则幂等)
zotero_add_to_collection 将现有项目添加到集合中
zotero_delete_item 按键删除项目
zotero_add_attachment 通过Web API文件上传上传本地文件(PDF、EPUB等)作为附件
zotero_delete_collection 删除收集容器(保留其中的项目)
zotero_normalize_titles 批次标题案例→ 保留专有名词的句子格(支持dry_run)
zotero_set_in_my_publications 在“我的出版物”中添加/删除项目(inPublications 旗帜)
zotero_find_duplicates 检测并合并重复项(扫描→ 确认→ 合并工作流)

学术搜索与分析(6)

工具 说明
academic_search 搜索外部文献(OpenAlex,2.5亿多篇论文)
academic_lookup_doi 通过DOI获取完整的论文元数据
academic_get_citations 正向引文追踪
academic_get_references 反向参考跟踪
academic_search_author 按作者搜索论文(ORCID>作者ID>姓名)
academic_compare_papers 11维相似向量(语义、bib耦合、Adamic Adar、RA、HPI、HDI、共引、作者、地点、标签、最短路径)

出版物导入和参考决议(3)

工具 说明
orcid_get_publications 从ORCID ID获取公共出版物
import_publications_to_zotero 从ORCID、OpenAlex、DOI列表或参考元数据批量导入(支持模拟运行)
resolve_references 通过CrossRef+OpenAlex将部分参考元数据(标题、作者、年份、ISSN)解析为DOI

DOI决议使用可信度优先的级联回退:DOI.org(发布者提交)→ 交叉参考REST API→ OpenAlex(聚合)→ Airiti DOI(区域),涵盖所有12个全球DOI注册机构。

CV/参考文献导入

从简历、参考文献列表或任何非结构化来源导入出版物:

AI reads CV PDF → extracts references → import_publications_to_zotero(source='references', references=[...])
  • 有DOI → 导入完整的元数据(摘要、引用等)
  • 没有DOI,但有标题+作者 → CrossRef/OpenAlex反向查找查找DOI
  • 真的没有 → 从原始元数据(标题、作者、年份、期刊)创建
  • 模棱两可的匹配 → 跳过手动消歧建议

resolve_references 可以在导入前单独使用进行预览。 import_publications_to_zotero(source='references') 将resolve和import组合在一个调用中。

引文格式(1)

工具 说明
zotero_to_apa 将项目转换为APA第7版文本(参考/引文/参考列表)

支持所有三种输入模式:单一 item_key,多个 item_keys,或全部 collection_key.

biblatex apa。bib出口:使用 che-biblatex-mcp (bib_normalize)用于.bib文件管理和APA格式规范化。

配置(2)

工具 说明
zotero_set_config 存储持久键值配置(例如。 my.orcid, researchers.advisor.name)
zotero_get_config 读取配置值(单键或全部)

配置存储在 ~/.che-zotero-mcp/config.json 并在服务器重新启动时持续存在。AI助手可以通过以下方式读取存储的值 zotero_get_config 并明确地将它们传递给其他工具。

图引擎——知识图(13)

工具 说明
graph_import_from_zotero 将Zotero库导入到图表中(消除重复的作者/期刊,累积合著者权重)
graph_stats 图形统计:按类型划分的节点/边计数,按程度划分的顶部节点
graph_add_node 创建节点(研究员、论文、机构、期刊)
graph_add_edge 创建边(已授权、CO_AUTHOR、已发布、附属、CITES、ADVISOR_OF)
graph_remove_node 删除节点及其所有边
graph_remove_edge 移除边缘
graph_save 将图形持久化为二进制文件(~/.che-zotero-mcp/graph.bin)
graph_neighbors 使用可选的边缘类型和方向过滤器查找邻居
graph_shortest_path 两个节点之间的BFS最短路径
graph_co_author_stats 共享论文数的合著者分析
graph_citation_network 递归引用树(参考文献+引用人)
graph_community 具有可配置跳数限制的BFS社区检测
graph_query 简化密码查询(MATCH/WHERE/RETURN)

图形数据保留到 ~/.che-zotero-mcp/graph.bin 使用具有字符串表重复数据删除功能的自定义二进制格式。服务器启动时自动加载。

工具消除歧义指南

所有工具描述都包括范围标签([YOUR LIBRARY], [EXTERNAL DATABASE], [BRIDGE], [WRITE])以及交叉引用,以防止人工智能选择错误的工具。

常见的模糊请求和正确的工具选择:

用户说 意图 正确的工具 不是这个
“我有这张纸吗?” 检查现有的图书馆 zotero_search / zotero_search_by_doi 学术研究
“查找关于X的论文” 发现新的研究 academic_search zotero_search
“DOI 10.xxx是什么?” 查找论文信息 academic_lookup_doi zotero_search_by_doi
“此DOI是否在我的库中?” 检查是否已保存 zotero_search_by_doi 学术研究
“保存此文件” 添加到Zotero zotero_add_item_by_doi 学术研究
“史密斯博士的论文” 作者探索 academic_search_author zotero_search
“我读过关于X的什么?” 从图书馆回忆 zotero_semantic_search 学术研究

数据源

每个工具都连接到三个数据源之一。了解这一点有助于解决以下问题 database is locked.

数据源 连接 需要 故障模式
本地SQLite ~/Zotero/zotero.sqlite (只读) 已安装Zotero database is locked Zotero同步/写入时
Zotero Web API api.zotero.org ZOTERO_API_KEY +internet 网络错误、身份验证失败
OpenAlex API api.openalex.org Internet(无API密钥) 网络错误,速率限制

按数据源列出的工具

工具 来源 注释
zotero_get_my_publications 本地SQLite→ Zotero Web API 数据库锁定时自动回拨
zotero_search 本地SQLite
zotero_get_metadata 本地SQLite
zotero_get_collections 本地SQLite
zotero_get_tags 本地SQLite
zotero_get_recent 本地SQLite
zotero_get_items_in_collection 本地SQLite
zotero_search_by_doi 本地SQLite
zotero_get_attachments 本地SQLite 返回本地文件路径
zotero_get_notes 本地SQLite
zotero_get_annotations 本地SQLite
zotero_semantic_search 本地SQLite+内存索引 运行 zotero_build_index 首先
zotero_build_index 本地SQLite→ 本地嵌入 在Apple Silicon GPU上使用MLX
zotero_create_collection Zotero Web API 需要 ZOTERO_API_KEY
zotero_add_item_by_doi Zotero Web API+OpenAlex 来自OpenAlex的元数据,通过API编写
zotero_create_item Zotero Web API 需要 ZOTERO_API_KEY
zotero_add_to_collection Zotero Web API 需要 ZOTERO_API_KEY
zotero_add_attachment Zotero Web API+S3 将本地文件作为附件上传
zotero_delete_item Zotero Web API 需要 ZOTERO_API_KEY
zotero_delete_collection Zotero Web API 需要 ZOTERO_API_KEY
academic_search OpenAlex API 2.5亿篇以上论文,免费
academic_lookup_doi OpenAlex API 按DOI查找
academic_get_citations OpenAlex API 转发引用
academic_get_references OpenAlex API 反向引用
academic_search_author OpenAlex API 按作者姓名搜索
orcid_get_publications ORCID API 公开出版物
import_publications_to_zotero CrossRef+OpenAlex+Zotero Web API 带重复数据消除的批量导入;source=“references”添加了CrossRef反向查找
resolve_references CrossRef+OpenAlex+PubMed 反向查找:元数据→ DOI
academic_compare_papers OpenAlex API+本地SQLite 图形度量+嵌入
zotero_to_apa 本地SQLite 将项目转换为APA 7格式的文本
zotero_normalize_titles 本地SQLite+Zotero Web API 读取本地,通过API写入
zotero_find_duplicates 本地SQLite+Zotero Web API 扫描读取本地,通过API合并写入
zotero_set_config 本地文件 ~/.che-zotero-mcp/config.json
zotero_get_config 本地文件 ~/.che-zotero-mcp/config.json

常见问题

  • database is locked --Zotero桌面正在积极向SQLite写入(例如同步、导入)。等待同步完成,或短暂关闭Zotero。
  • 写入工具返回身份验证错误 — ZOTERO_API_KEY 未设置或已过期。获取新密钥https://www.zotero.org/settings/keys/new.
  • 本地读取返回空 --MCP可能已重新连接并丢失SQLite路径。跑 /mcp 重新连接。

需求

  • macOS 14+
  • Zotero 7+本地安装
  • 苹果硅Mac(M1/M2/M3/M4/M5)

版本历史记录

版本 更改
v1.17.1 作者搜索用户体验: academic_search_author 和 orcid_get_publications 现在建议创建Zotero收藏并批量导入论文
v1.17.0 嵌入式图引擎:13种用于研究人员网络分析的新工具-- graph_import_from_zotero, graph_query (Cypher)、最短路径、合著者统计、引文网络、社区检测。具有自定义格式的二进制持久性。总共50个工具。
v1.16.0 参考分辨率和CV导入: resolve_references (通过CrossRef+OpenAlex+PubMed进行反向DOI查找), import_publications_to_zotero(source='references') 一次调用CV/参考书目导入
v1.14.0 删除 zotero_to_biblatex_apa --biblatex apa。bib出口转移到 che-biblatex-mcp (bib_normalize)用于正确的LaTeX感知解析
v1.13 交叉参考REST API后退DOI解析-修复返回“找不到”的IEEE/ACM论文;级联:doi.org→ 交叉引用→ OpenAlex→ Airiti
v1.12.0 我的出版物管理: zotero_set_in_my_publications --通过以下方式在Zotero的内置“我的出版物”中添加/删除项目 inPublications 旗帜
v1.11.0 组库支持: zotero_list_groups +可选 group_id 所有读/写工具上的参数(本地SQLite+Web API)
v1.10.0 文件附件上传: zotero_add_attachment -通过Web API文件上传流程上传本地PDF/EPUB/图像到Zotero云
v1.9.0 重复检测和合并: zotero_find_duplicates (扫描→ 确认→ 合并)、三层置信度(仅DOI/title+作者/标题)、智能初选
v1.8.0 标题规范化: zotero_normalize_titles (批次标题案例→ 句子格)、专有名词列表(~500个术语)、句子格检测启发式、增强型 protectProperNouns
v1.7.0 引文格式: zotero_to_biblatex_apa (biblatex apa.bib), zotero_to_apa (APA 7文本)。所有Zotero油田都暴露了。
v1.6.0 11维图论度量相似向量, zotero_delete_collection,共引错误修复
v1.5.0 配置系统(zotero_set_config/zotero_get_config)
v1.4.0版本 zotero_get_my_publications 与当地→网络回退
v1.3.3 academic_search_author 支持ORCID/作者ID/姓名(3种标识符类型)
v1.3.2 可信度优先的DOI解决方案,重命名 academic_get_paper → academic_lookup_doi
v1.3.0 写幂等性, zotero_delete_item
v1.2.0 ORCID集成,通用DOI解析器,批量导入
v1.1.0 Zotero Web API编写工具、注释和注释
v1.0.0 学术搜索(OpenAlex),嵌入持久性,增强的Zotero工具
v0.1.0 初始版本--关键字搜索、语义搜索、基本Zotero工具

致谢

许可证

麻省理工学院