Zotero MCP 是一个开源项目,旨在通过模型上下文协议(Model Context Protocol, MCP)将强大的 AI 功能与领先的文献管理工具 Zotero 无缝集成,为 AI 助手(如 Claude)提供与您本地 Zotero 文献库交互的能力。
This README is also available in: :gb: English | :cn: 简体中文.
| 公众号 | 加入群聊 |
|---|---|
![]() |
扫左侧公众号二维码,关注后私信「入群」即可(群二维码有时效且群已满 200 人,无法直接扫码加入) |
| ## 📚 项目概述 |
Zotero MCP 服务器是一个基于 Model Context Protocol 的工具服务器,它为 Claude Desktop 等 AI 应用提供了与 Zotero 文献管理系统的无缝集成。通过此服务器,AI 助手可以:
这使得 AI 助手能够帮助您进行文献综述、引用管理、内容分析、批注整理、知识库管理等学术工作。
本项目采用了统一架构,将 MCP 服务器集成在插件内:
zotero-mcp-plugin/: 一个集成了 MCP 服务器功能的 Zotero 插件,使用 Streamable HTTP 协议直接与 AI 客户端通信IMG/: 截图和说明文档图片README.md / README-zh.md: 项目说明文档统一架构:
AI 客户端 ↔ Streamable HTTP ↔ Zotero 插件(集成 MCP 服务器)
这种设计消除了对单独 MCP 服务器进程的需求,提供了更加简化和高效的集成方式。
本指南旨在帮助普通用户快速配置和使用 Zotero MCP,让您的 AI 助手能够与 Zotero 文献库无缝协作。
Zotero MCP 是什么?
简单来说,Zotero MCP 是一座桥梁,它连接了您的 AI 客户端(如 Cherry Studio, Gemini CLI, Claude Desktop 等)和本地的 Zotero 文献管理软件。通过它,AI 助手可以直接搜索、查询和引用您 Zotero 库中的文献,极大地提升学术研究和写作效率。
两步快速开始:
安装插件:
zotero-mcp-plugin-x.x.x.xpi 文件。工具 -> 附加组件 安装该 .xpi 文件。配置插件:
首选项 -> Zotero MCP Plugin 标签页中:23120(可根据需要修改)配置完成后,您就可以在 AI 助手中通过自然语言与您的 Zotero 文献库进行交互了。
配置示例(Claude Desktop):
{
"mcpServers": {
"zotero": {
"transport": "streamable_http",
"url": "http://127.0.0.1:23120/mcp"
}
}
}
使用示例:
"帮我查找一下我的 Zotero 库里所有关于"人工智能"的文献""获取去年由 Hinton 发表的关于 transformer 的期刊文章""查找 DOI 为 10.1038/nature14539 的文献"重要:Zotero 插件现在包含了集成的 MCP 服务器,使用 Streamable HTTP 协议。无需安装单独的服务器。
插件使用 Streamable HTTP 协议,支持与 AI 客户端的实时双向通信:
配置完成后,如何确认一切正常工作?
1. 验证连接
"使用 zotero 工具查找任何文献,返回一条即可"
如果 AI 能够调用 zotero.search_library 并返回结果,说明整个链路已通。2. 故障排查指南
如果连接失败或工具不工作,请按以下步骤排查:
| 步骤 | 检查项 | 解决方案 |
|---|---|---|
| 1 | Zotero 插件服务 | 确保 Zotero 正在运行,并且在 首选项 -> Zotero MCP Plugin 中,"Enable Server" 已被勾选。 |
| 2 | 路径配置 | 确认 AI 客户端中的 command 设置为 node,并且作为参数的 index.js 绝对路径完全正确。路径错误是导致失败的最常见原因。 |
| 3 | 端口冲突 | 如果 Zotero 插件端口 23119 被占用,请在插件设置中更换端口,并在 zotero-mcp-server 目录下创建 .env 文件,内容为 ZOTERO_API_PORT=新端口号。 |
| 4 | 查看日志 | 大多数客户端都提供 MCP 服务器的日志输出功能。在 MCP 配置界面寻找 "Show Logs" 或类似的按钮。日志是定位问题的最有效工具,通常会明确指出是路径错误、命令失败还是其他问题。 |
| 5 | 防火墙/安全软件 | 确认您的防火墙或安全软件没有阻止 node.exe (Windows) 或 node (macOS/Linux) 的网络通信。 |
| 6 | 环境依赖 | 确保您的系统中已安装 Node.js (版本 18+)。您可以在终端中运行 node -v 来检查版本。 |
3. 常见错误信息
command not found 或 spawn ENOENT: 通常表示 node 命令不存在或路径错误。请检查 Node.js 是否已正确安装并加入了系统环境变量,或者检查客户端配置中的命令是否正确。Error: connect ECONNREFUSED 127.0.0.1:23119: 表示 MCP 服务器无法连接到 Zotero 插件。请执行上述排查指南的第 1 步和第 3 步。如果以上步骤均无法解决问题,请前往 GitHub Issues 页面,并附上您的操作系统、客户端版本和相关的日志信息,以便我们更好地帮助您。
zotero-mcp-plugin 是一个集成了 MCP 服务器功能的 Zotero 插件,直接与 AI 客户端通信。
这里是一些展示 Zotero MCP 功能的截图:
| 功能 | 截图 |
|---|---|
| 功能说明 | ![]() |
| 文献检索 | ![]() |
| 元数据查看 | ![]() |
| 全文读取 1 | ![]() |
| 全文读取 2 | ![]() |
| 附件检索 (Gemini CLI) | ![]() |
| PDF 读取 (Gemini CLI) | ![]() |
zotero-mcp-plugin-x.x.x.xpi 文件工具 -> 附加组件 安装该 .xpi 文件首选项 -> Zotero MCP Plugin 标签页中,配置服务器设置:23120如果您想要修改或开发插件,可以按照以下步骤设置开发环境:
克隆本仓库到本地:
bash
git clone https://github.com/cookjohn/zotero-mcp.git
cd zotero-mcp
设置插件开发环境:
bash
cd zotero-mcp-plugin
npm install
npm run build
在 Zotero 中加载插件: ```bash # 开发模式(自动重载) npm run start
# 或手动安装构建后的 .xpi 文件 npm run build ```
插件包含了集成的 MCP 服务器,使用 Streamable HTTP 协议:
Streamable HTTP 连接示例(Claude Desktop):
%APPDATA%\Claude\claude_desktop_config.json~/Library/Application Support/Claude/claude_desktop_config.jsonLinux: ~/.config/Claude/claude_desktop_config.json
编辑配置文件:
json
{
"mcpServers": {
"zotero": {
"transport": "streamable_http",
"url": "http://127.0.0.1:23120/mcp"
}
}
}
重启 Claude Desktop 应用
配置完成后,您就可以在 AI 助手中通过自然语言与您的 Zotero 文献库进行交互了。
示例:
"帮我查找一下我的 Zotero 库里所有关于“人工智能”的文献""获取去年由 Hinton 发表的关于 transformer 的期刊文章""查找 DOI 为 10.1038/nature14539 的文献"┌─────────────┐ Streamable HTTP ┌──────────────────────────────┐
│ AI 客户端 │ <--------------> │ Zotero 插件(集成 MCP 服务器) │
│ (Claude, etc) │ │ + 内置API + 数据访问 │
└─────────────┘ └──────────────────────────────┘
进入插件目录并安装依赖:
bash
cd zotero-mcp-plugin
npm install
启动开发模式:
bash
npm start
这将启动 Zotero 并自动加载插件。代码更改时会自动重载。
构建插件 .xpi 文件:
bash
npm run build
MCP 服务器已集成在插件内,位于 src/modules/streamableMCPServer.ts。主要功能:
插件集成的 MCP 服务器提供以下 20 个工具,分为 5 大类:
search_library高级文献库搜索,支持多维度筛选、布尔运算、相关性评分和智能模式控制。
| 参数 | 类型 | 描述 |
|---|---|---|
q |
string | 通用搜索关键词 |
title |
string | 标题搜索(支持 titleOperator: contains/exact/startsWith/endsWith/regex) |
yearRange |
string | 年份范围(如 "2020-2023") |
fulltext |
string | 全文搜索(附件/笔记内容),支持 fulltextMode: attachment/note/both |
itemType |
string | 文献类型筛选(journalArticle/book/attachment 等) |
includeAttachments |
string | 设为 "true" 可搜索独立 PDF 条目 |
mode |
string | 处理模式:minimal(30)/preview(100)/standard(自适应)/complete(500+) |
relevanceScoring |
boolean | 启用相关性评分 |
sort |
string | 排序:relevance/date/title/year |
limit / offset |
number | 分页控制 |
search_annotations按关键词、颜色或标签搜索批注,支持智能排序和相关性过滤。
| 参数 | 类型 | 描述 |
|---|---|---|
q |
string | 搜索关键词(与 colors/tags 至少提供一个) |
itemKeys |
string[] | 限定搜索范围到指定条目 |
types |
string[] | 批注类型:note/highlight/annotation/ink/text/image |
colors |
string[] | 按颜色过滤(支持色名或 hex:yellow/red/green/blue/purple/orange) |
tags |
string[] | 按标签过滤 |
mode |
string | 内容处理模式 |
search_fulltext在所有文档全文中搜索,返回上下文片段和相关性评分。
| 参数 | 类型 | 描述 |
|---|---|---|
q |
string | 必需,搜索关键词 |
itemKeys |
string[] | 限定搜索范围 |
mode |
string | 处理模式 |
contextLength |
number | 匹配上下文长度 |
caseSensitive |
boolean | 区分大小写 |
search_collections按名称搜索分类。参数:q(搜索词)、limit(最大结果数)。
get_item_details获取单个文献的完整元数据(作者、日期、DOI、标签、附件、笔记等)。参数:itemKey(必需)、mode。
get_item_abstract获取条目的摘要/简介。参数:itemKey(必需)、format(json/text)。
get_content统一内容提取工具:从条目或附件中获取 PDF 全文、笔记、摘要、网页快照等。
| 参数 | 类型 | 描述 |
|---|---|---|
itemKey |
string | 条目 Key(获取该条目下所有内容) |
attachmentKey |
string | 附件 Key(获取特定附件内容) |
mode |
string | minimal(500字符)/preview(1.5K)/standard(3K)/complete(无限制) |
include |
object | 控制包含哪些内容:pdf/attachments/notes/abstract/webpage |
contentControl |
object | 高级内容控制(preserveOriginal/allowExtended/maxContentLength 等) |
format |
string | 输出格式:json(结构化)或 text(纯文本) |
get_collections获取文献库中所有分类列表。参数:mode、limit、offset。
get_collection_details获取特定分类的详细信息。参数:collectionKey(必需)。
get_collection_items获取指定分类中的条目列表。参数:collectionKey(必需)、limit、offset。
get_subcollections获取子分类列表。参数:collectionKey(必需)、limit、offset、recursive(是否递归)。
semantic_search基于 AI 向量嵌入的语义搜索,即使没有精确关键词匹配也能找到概念相关的内容。
| 参数 | 类型 | 描述 |
|---|---|---|
query |
string | 必需,自然语言查询(如 "机器学习在医疗中的应用") |
topK |
number | 返回结果数量(默认 10) |
minScore |
number | 最低相似度(0-1,默认 0.3) |
language |
string | 语言过滤:zh/en/all |
find_similar基于指定条目发现语义相似的文献。参数:itemKey(必需)、topK、minScore。
semantic_status查看语义搜索服务的状态、索引统计和覆盖率。无需参数。
fulltext_database访问缓存的全文内容数据库(只读)。
| 参数 | 类型 | 描述 |
|---|---|---|
action |
string | 必需:list(列表)/search(搜索)/get(获取)/stats(统计) |
query |
string | 搜索关键词(search 操作必需) |
itemKeys |
string[] | 指定条目(get 操作) |
limit |
number | 最大结果数 |
write_note创建或修改 Zotero 笔记,支持 Markdown 自动转换为 HTML。
| 参数 | 类型 | 描述 |
|---|---|---|
action |
string | 必需:create/update/append |
parentKey |
string | 关联到指定条目(create 时可选,省略则创建独立笔记) |
noteKey |
string | 已有笔记 Key(update/append 必需) |
content |
string | 必需,笔记内容(Markdown 或 HTML) |
tags |
string[] | 添加标签 |
write_tag添加、移除或替换条目上的标签。
| 参数 | 类型 | 描述 |
|---|---|---|
action |
string | 必需:add(追加)/remove(移除)/set(替换全部) |
itemKey |
string | 必需,条目 Key |
tags |
string[] | 必需,标签列表 |
write_metadata更新条目的元数据字段(标题、摘要、日期、DOI、作者等)。
| 参数 | 类型 | 描述 |
|---|---|---|
itemKey |
string | 必需,条目 Key |
fields |
object | 要更新的字段(title/abstractNote/date/url/DOI/language 等) |
creators |
array | 替换作者列表,每项包含 creatorType/firstName/lastName 或 name |
write_item创建新的文献条目或重新关联附件。
| 参数 | 类型 | 描述 |
|---|---|---|
action |
string | 必需:create(创建条目)/reparent(移动附件) |
itemType |
string | 条目类型(journalArticle/book/conferencePaper/thesis 等) |
fields |
object | 元数据字段 |
creators |
array | 作者列表 |
tags |
string[] | 标签 |
attachmentKeys |
string[] | 要关联的独立附件 Key 列表 |
parentKey |
string | reparent 操作的目标父条目 Key |
问题: Error: connect ECONNREFUSED 127.0.0.1:PORT
解决方案:
- 确保 Zotero 正在运行
- 检查 Zotero 插件是否已启用
- 在插件设置中检查服务器是否已启用
- 确认端口号(默认 23120)与 AI 客户端配置一致
问题: Streamable HTTP connection failed
解决方案:
- 确保在插件设置中启用了服务器
- 检查防火墙设置,允许 Zotero 进行网络通信
- 确认 URL 格式正确:http://127.0.0.1:23120/mcp
问题: Claude 不显示 Zotero 相关工具
解决方案:
- 检查 claude_desktop_config.json 中的配置是否正确
- 确保使用了 "transport": "streamable_http" 配置
- 确保 JSON 格式正确
- 重启 Claude Desktop 应用
问题: 插件设置显示服务器启动失败
解决方案:
- 检查端口是否被占用,尝试更换端口
- 重启 Zotero 应用
- 查看 Zotero 错误控制台(工具 -> 开发者 -> 错误控制台)
欢迎贡献代码、报告问题或提出建议!
git checkout -b feature/AmazingFeature)。git commit -m 'Add some AmazingFeature')。git push origin feature/AmazingFeature)。本项目采用 MIT License 授权。
$ claude mcp add zotero-mcp \
-- python -m otcore.mcp_server <graph>