使用说明
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)
依赖项
- MCP Swift SDK --MCP协议
- MLXEmbedders --Apple Silicon上的本地嵌入
- OpenAlex API -学术文献搜索(免费,无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 |
|
| “DOI 10.xxx是什么?” | 查找论文信息 | academic_lookup_doi |
|
| “此DOI是否在我的库中?” | 检查是否已保存 | zotero_search_by_doi |
|
| “保存此文件” | 添加到Zotero | zotero_add_item_by_doi |
|
| “史密斯博士的论文” | 作者探索 | academic_search_author |
|
| “我读过关于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工具 |
致谢
- 54年/月 --启发这个项目的原始Python实现
- 颜色套件 --Swift中MLXEmbedders+混合搜索的参考
- MLXEmbedders --苹果官方Swift嵌入模型
- OpenAlex --免费开放的学术元数据目录
许可证
麻省理工学院