Zotero文献管理服务

一个基于MCP协议的Zotero文献管理服务,支持通过Claude或其他MCP兼容客户端直接管理Zotero文献库中的集合、笔记、搜索项目和PDF附件。

  • by isezen
  • TypeScript
  • 混合部署
  • 9 星标
  • 更新于
在 GitHub 查看 isezen/zotero-mcp

使用说明

佐特罗mcp

一 MCP(模型上下文协议) 服务器 这 Zotero Web API v3. 管理收藏、创建笔记、搜索项目和阅读您的PDF附件 直接从Claude(桌面、代码或任何兼容MCP的客户端)下载Zotero库。

特性

  • 9个MCP工具 --收藏、笔记、搜索、项目元数据、附件、全文
  • Zotero本地API -无需API密钥即可连接到Zotero Desktop
  • 组库支持 --除了用户库之外,还可以访问组库
  • SSE运输 --基于HTTP的Docker和远程访问传输
  • Docker就绪 --包含多级Dockerfile
  • LLM优化输出 --Markdown格式的结果 get_item 和 search_items
  • 本地优先 --在可用时从本地Zotero存储中读取附件和全文

需求

快速开始

克劳德代码

claude mcp add zotero \
  --env ZOTERO_API_KEY=your_api_key \
  --env ZOTERO_LIBRARY_ID=your_library_id \
  -- npx -y zotero-mcp

克劳德桌面版

增添 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) 或 %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "zotero": {
      "command": "npx",
      "args": ["-y", "zotero-mcp"],
      "env": {
        "ZOTERO_API_KEY": "your_api_key",
        "ZOTERO_LIBRARY_ID": "your_library_id"
      }
    }
  }
}

保存后重新启动Claude Desktop。

Zotero本地API(不需要API密钥)

直接连接到您计算机上运行的Zotero Desktop:

claude mcp add zotero \
  --env ZOTERO_LOCAL=true \
  -- npx -y zotero-mcp

要求Zotero Desktop运行(在上公开API localhost:23119).

码头工人

docker build -t zotero-mcp .
docker run -p 3000:3000 \
  -e ZOTERO_API_KEY=your_api_key \
  -e ZOTERO_LIBRARY_ID=your_library_id \
  zotero-mcp

默认情况下,集装箱在端口3000上运行SSE传输。

环境变量

变量 必填 描述
ZOTERO_API_KEY 是* Zotero API密钥(*在以下情况下不需要 ZOTERO_LOCAL=true)
ZOTERO_LIBRARY_ID 是的* Zotero用户/组库ID(*默认 0 在本地模式下)
ZOTERO_DATA_DIR 否 本地Zotero数据目录(默认: ~/Zotero)
ZOTERO_LOCAL 否 连接到Zotero Desktop本地API(默认值: false)
ZOTERO_LIBRARY_TYPE 没有 user (默认)或 group

运输

服务器支持两种传输模式:

模式 命令 描述
站立 node dist/index.js (默认) JSON-RPC通过标准输入/标准输出
上海证券交易所 node dist/index.js --transport sse --port 3000 HTTP服务器发送事件

标准 是默认设置,适用于Claude Code/Desk。 上海证券交易所 适用于Docker、远程访问和多客户端场景。

可用工具

list_collections

按页码列出库中的所有收藏。

参数 类型 默认值 说明
limit number 25 最大结果(1–100)
offset number 0 分页偏移量

create_collection

创建新集合(或子集合)。

参数 类型 必填 说明
name string 是 集合名称
parentCollection string 否 父集合键(用于嵌套)

create_note

使用可选的Zotero HTML模板创建独立笔记。

参数 类型 默认值 说明
title string -- 注释标题(必填)
content string -- 注意正文为HTML(必填)
collectionKeys string[] -- 将注释添加到这些集合中
tags string[] -- 注释的标签
useTemplate boolean true 用元数据包裹Zotero笔记模板

add_note_to_collection

将现有项目添加到集合中。

参数 类型 必填 说明
itemKey string 是 项目键(8个字符)
collectionKey string 是 目标集合键

get_item

按键获取具有完整元数据的单个项目。返回LLM优化的Markdown 包含标题、创建者、日期、DOI、URL、摘要、标签和集合。

参数 类型 必填 说明
itemKey string 是 项目键(8个字符)

search_items

按标题、创建者、年份或全文搜索项目。 返回LLM优化的Markdown摘要。

参数 类型 默认值 说明
query string -- 搜索查询(必填)
qmode string title创作者年份 titleCreatorYear 或 everything
itemType string -- 筛选器: journalArticle, book…
tag string -- 按标签筛选: tag1 || tag2 (或), -tag (不)
sort string dateModified 排序字段
direction string desc asc 或 desc
limit number 25 最大结果(1–100)
offset number 0 分页偏移量

get_item_attachments

列出Zotero项目的附件(PDF、快照等)。检测本地文件 Zotero桌面存储可用时的路径。

参数 类型 必填 说明
itemKey string 是 父项键
forceRemote boolean 否 跳过本地检测,仅限API信息(默认值:false)

get_item_fulltext

获取项目的全文内容。首先检查本地Zotero缓存 (.zotero-ft-cache),返回到Zotero API全文端点。

参数 类型 必填 说明
itemKey string 是 附件或父项键
forceRemote boolean 否 跳过本地缓存,从API获取(默认值:false)

read_attachment

读取附件文件。返回本地文件路径(当Zotero Desktop 存储可用)或通过API作为base64下载。自动解析父级 第一个PDF附件的项目密钥。

参数 类型 必填 说明
itemKey string 是 附件或父项键
forceRemote boolean 否 跳过本地文件,从API下载(默认值:false)

发展

git clone https://github.com/isezen/zotero-mcp.git
cd zotero-mcp
npm install
npm run build
npm test              # 84 unit tests (Vitest)

使用MCP检查员进行测试

ZOTERO_API_KEY=your_key ZOTERO_LIBRARY_ID=your_id \
  npx @modelcontextprotocol/inspector dist/index.js

测试SSE传输

ZOTERO_API_KEY=your_key ZOTERO_LIBRARY_ID=your_id \
  node dist/index.js --transport sse --port 3000

使用Claude Code进行本地测试

claude mcp add zotero-dev \
  --env ZOTERO_API_KEY=your_key \
  --env ZOTERO_LIBRARY_ID=your_id \
  -- node /absolute/path/to/zotero-mcp/dist/index.js

速率限制

服务器强制API请求与 自动尊重 Backoff 和 Retry-After Zotero返回的标题。

许可证

麻省理工学院