zotero-bridge 1.1.2 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,323 +1,441 @@
1
- # ZoteroBridge
2
-
3
- <p align="right">
4
- <b>🇨🇳 简体中文</b> | <a href="README-en.md">🇬🇧 English</a>
5
- </p>
6
-
7
- <p align="center">
8
- <b>连接 Zotero SQLite 数据库的模型上下文协议 (MCP) 服务器</b>
9
- </p>
10
-
11
- <p align="center">
12
- <a href="https://www.zotero.org/"><img src="https://img.shields.io/badge/Zotero-7.0+-red" alt="Zotero"></a>
13
- <a href="https://nodejs.org/"><img src="https://img.shields.io/badge/Node.js-18+-green" alt="Node.js"></a>
14
- <a href="https://www.typescriptlang.org/"><img src="https://img.shields.io/badge/TypeScript-5.0+-blue" alt="TypeScript"></a>
15
- <a href="https://modelcontextprotocol.io/"><img src="https://img.shields.io/badge/MCP-1.0-purple" alt="MCP"></a>
16
- <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow" alt="License"></a>
17
- </p>
18
-
19
- ## 📚 概述
20
-
21
- ZoteroBridge 是一个模型上下文协议 (MCP) 服务器,可直接连接到 Zotero 的 SQLite 数据库 (`zotero.sqlite`),让 AI 助手(如 Claude、ChatGPT 等)能够与您的 Zotero 文献库进行交互。
22
-
23
- ### ✨ 主要特性
24
-
25
- - 🗂️ **文件夹管理** - 创建、重命名、移动和删除 Zotero 文件夹(集合)
26
- - 🏷️ **标签管理** - 为文献添加、删除和查询标签
27
- - 📖 **条目操作** - 搜索条目、获取详情、管理文件夹关系
28
- - 📝 **摘要管理** - 读取和设置条目摘要,添加笔记
29
- - 📄 **PDF 处理** - 提取 PDF 全文、生成摘要、全文搜索
30
-
31
- ---
32
-
33
- ## 🚀 快速开始
34
-
35
- ### 前置要求
36
-
37
- - Node.js 18.0 或更高版本
38
- - Zotero 7.0 或更高版本
39
- - 支持 MCP 的 AI 客户端(如 Claude Desktop、Cursor)
40
-
41
- ### 安装
42
-
43
- ```bash
44
- # 克隆仓库
45
- git clone https://github.com/Combjellyshen/ZoteroBridge.git
46
- cd ZoteroBridge
47
-
48
- # 安装依赖
49
- npm install
50
-
51
- # 构建项目
52
- npm run build
53
- ```
54
-
55
- ### 配置 AI 客户端
56
-
57
- #### Claude Desktop
58
-
59
- 添加到 Claude Desktop 配置文件:
60
-
61
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
62
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
63
-
64
- ```json
65
- {
66
- "mcpServers": {
67
- "zotero-bridge": {
68
- "command": "node",
69
- "args": ["path/to/ZoteroBridge/dist/index.js"],
70
- "env": {}
71
- }
72
- }
73
- }
74
- ```
75
-
76
- #### Cursor IDE
77
-
78
- 在项目根目录创建 `.cursor/mcp.json`:
79
-
80
- ```json
81
- {
82
- "mcpServers": {
83
- "zotero-bridge": {
84
- "command": "node",
85
- "args": ["path/to/ZoteroBridge/dist/index.js"]
86
- }
87
- }
88
- }
89
- ```
90
-
91
- #### VS Code Copilot
92
-
93
- 1. 打开 VS Code 设置 (`Ctrl+,`)
94
- 2. 搜索 `github.copilot.chat.mcpServers`
95
- 3. 点击 "在 settings.json 中编辑"
96
- 4. 添加以下配置:
97
-
98
- ```json
99
- "github.copilot.chat.mcpServers": {
100
- "zotero-bridge": {
101
- "command": "node",
102
- "args": ["path/to/ZoteroBridge/dist/index.js"]
103
- }
104
- }
105
- ```
106
-
107
- 请将 `path/to/ZoteroBridge/dist/index.js` 替换为实际的绝对路径。
108
-
109
- #### 自定义数据库路径
110
-
111
- 如果您的 Zotero 数据库不在默认位置:
112
-
113
- ```json
114
- {
115
- "mcpServers": {
116
- "zotero-bridge": {
117
- "command": "node",
118
- "args": [
119
- "path/to/ZoteroBridge/dist/index.js",
120
- "--db", "D:/MyZotero/zotero.sqlite"
121
- ]
122
- }
123
- }
124
- }
125
- ```
126
-
127
- ---
128
-
129
- ## 🛠️ 可用工具
130
-
131
- ### 文件夹管理
132
-
133
- | 工具 | 描述 |
134
- |------|------|
135
- | `list_collections` | 列出所有文件夹 |
136
- | `get_collection` | 获取文件夹详情 |
137
- | `create_collection` | 创建新文件夹 |
138
- | `rename_collection` | 重命名文件夹 |
139
- | `move_collection` | 移动文件夹到新父级 |
140
- | `delete_collection` | 删除文件夹 |
141
- | `get_subcollections` | 获取子文件夹 |
142
-
143
- ### 标签管理
144
-
145
- | 工具 | 描述 |
146
- |------|------|
147
- | `list_tags` | 列出所有标签 |
148
- | `create_tag` | 创建新标签 |
149
- | `add_tag` | 为条目添加标签 |
150
- | `remove_tag` | 从条目移除标签 |
151
- | `get_item_tags` | 获取条目的所有标签 |
152
-
153
- ### 条目操作
154
-
155
- | 工具 | 描述 |
156
- |------|------|
157
- | `search_items` | 按标题搜索条目 |
158
- | `get_item_details` | 获取条目详细信息 |
159
- | `add_item_to_collection` | 将条目添加到文件夹 |
160
- | `remove_item_from_collection` | 从文件夹移除条目 |
161
- | `get_collection_items` | 获取文件夹中的所有条目 |
162
-
163
- ### 摘要和笔记
164
-
165
- | 工具 | 描述 |
166
- |------|------|
167
- | `get_item_abstract` | 获取条目摘要 |
168
- | `set_item_abstract` | 设置条目摘要 |
169
- | `get_item_notes` | 获取条目笔记 |
170
- | `add_item_note` | 为条目添加笔记 |
171
-
172
- ### PDF 处理
173
-
174
- | 工具 | 描述 |
175
- |------|------|
176
- | `extract_pdf_text` | 从 PDF 提取全文 |
177
- | `get_pdf_summary` | 获取 PDF 摘要信息 |
178
- | `get_item_pdfs` | 获取条目的 PDF 附件 |
179
- | `search_pdf` | 在 PDF 中搜索文本 |
180
- | `generate_abstract_from_pdf` | 从 PDF 内容生成摘要 |
181
-
182
- ### 实用工具
183
-
184
- | 工具 | 描述 |
185
- |------|------|
186
- | `get_database_info` | 获取数据库信息 |
187
- | `raw_query` | 执行原始 SQL 查询(仅 SELECT) |
188
-
189
- ### 标识符搜索(DOI/ISBN)
190
-
191
- | 工具 | 描述 |
192
- |------|------|
193
- | `find_by_doi` | 通过 DOI 查找条目 |
194
- | `find_by_isbn` | 通过 ISBN 查找条目 |
195
- | `find_by_identifier` | 通过任意标识符查找条目(DOI、ISBN、PMID、arXiv) |
196
-
197
- ### PDF 标注
198
-
199
- | 工具 | 描述 |
200
- |------|------|
201
- | `get_item_annotations` | 获取条目的所有标注(高亮、笔记等) |
202
- | `get_attachment_annotations` | 获取特定附件的标注 |
203
- | `get_annotations_by_type` | 按类型筛选标注(高亮、笔记等) |
204
- | `get_annotations_by_color` | 按颜色筛选标注 |
205
- | `search_annotations` | 在标注内容中搜索 |
206
-
207
- ### 全文搜索
208
-
209
- | 工具 | 描述 |
210
- |------|------|
211
- | `search_fulltext` | 在全文索引中搜索 |
212
- | `get_fulltext_content` | 获取附件的全文内容 |
213
- | `search_fulltext_with_context` | 带上下文片段的全文搜索 |
214
-
215
- ### 相关条目
216
-
217
- | 工具 | 描述 |
218
- |------|------|
219
- | `get_related_items` | 获取手动关联的相关条目 |
220
- | `find_similar_by_tags` | 通过共享标签查找相似条目 |
221
- | `find_similar_by_creators` | 通过共享作者查找相似条目 |
222
- | `find_similar_by_collection` | 在同一文件夹中查找相似条目 |
223
-
224
- ---
225
-
226
- ## 📖 使用示例
227
-
228
- ### Claude 配合使用
229
-
230
- ```
231
- # 列出所有文件夹
232
- 列出我 Zotero 文献库中的所有文件夹
233
-
234
- # 创建新文件夹
235
- 创建一个名为"机器学习论文"的新文件夹
236
-
237
- # 搜索条目
238
- 搜索标题中包含"深度学习"的条目
239
-
240
- # 提取 PDF 内容
241
- 提取这个条目 PDF 的全文并生成摘要
242
-
243
- # 添加标签
244
- 为这个条目添加"重要"和"待读"标签
245
- ```
246
-
247
- ---
248
-
249
- ## 🏗️ 项目结构
250
-
251
- ```
252
- ZoteroBridge/
253
- ├── src/
254
- │ ├── index.ts # MCP 服务器入口
255
- │ ├── database.ts # Zotero SQLite 数据库操作
256
- │ ├── pdf.ts # PDF 处理模块
257
- │ └── tools.ts # MCP 工具定义
258
- ├── dist/ # 编译输出
259
- ├── package.json
260
- ├── tsconfig.json
261
- └── README.md
262
- ```
263
-
264
- ---
265
-
266
- ## 👨‍💻 开发指南
267
-
268
- ### 开发模式
269
-
270
- ```bash
271
- # 监听文件变化并自动编译
272
- npm run dev
273
- ```
274
-
275
- ### 构建
276
-
277
- ```bash
278
- npm run build
279
- ```
280
-
281
- ### 命令行参数
282
-
283
- ```bash
284
- # 显示帮助
285
- node dist/index.js --help
286
-
287
- # 指定数据库路径
288
- node dist/index.js --db /path/to/zotero.sqlite
289
-
290
- # 只读模式
291
- node dist/index.js --readonly
292
- ```
293
-
294
- ---
295
-
296
- ## ⚠️ 注意事项
297
-
298
- 1. **关闭 Zotero**:使用写入功能时,请关闭 Zotero 客户端以避免数据库锁定
299
- 2. **备份数据**:在进行修改前备份 `zotero.sqlite`
300
- 3. **只读模式**:仅读取数据时使用 `--readonly` 参数更安全
301
-
302
- ---
303
-
304
- ## 📄 许可证
305
-
306
- 本项目采用 [MIT 许可证](LICENSE)。
307
-
308
- ---
309
-
310
- ## 🙏 致谢
311
-
312
- - [Zotero](https://www.zotero.org/) - 优秀的开源文献管理工具
313
- - [Model Context Protocol](https://modelcontextprotocol.io/) - AI 工具集成协议
314
- - [cookjohn/zotero-mcp](https://github.com/cookjohn/zotero-mcp) - 项目参考
315
-
316
- ---
317
-
318
- ## 📬 联系方式
319
-
320
- - 作者:Combjellyshen
321
- - GitHub:[https://github.com/Combjellyshen/ZoteroBridge](https://github.com/Combjellyshen/ZoteroBridge)
322
-
323
- 欢迎提交 Issue 或 Pull Request!
1
+ # ZoteroBridge
2
+
3
+ <p align="right">
4
+ <b>🇨🇳 简体中文</b> | <a href="README-en.md">🇬🇧 English</a>
5
+ </p>
6
+
7
+ <p align="center">
8
+ <b>连接 Zotero SQLite 数据库的模型上下文协议 (MCP) 服务器</b>
9
+ </p>
10
+
11
+ <p align="center">
12
+ <a href="https://www.npmjs.com/package/zotero-bridge"><img src="https://img.shields.io/npm/v/zotero-bridge" alt="npm version"></a>
13
+ <a href="https://www.zotero.org/"><img src="https://img.shields.io/badge/Zotero-7.0+-red" alt="Zotero"></a>
14
+ <a href="https://nodejs.org/"><img src="https://img.shields.io/badge/Node.js-18+-green" alt="Node.js"></a>
15
+ <a href="https://www.typescriptlang.org/"><img src="https://img.shields.io/badge/TypeScript-5.0+-blue" alt="TypeScript"></a>
16
+ <a href="https://modelcontextprotocol.io/"><img src="https://img.shields.io/badge/MCP-1.0-purple" alt="MCP"></a>
17
+ <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow" alt="License"></a>
18
+ </p>
19
+
20
+ ## 📚 概述
21
+
22
+ ZoteroBridge 是一个模型上下文协议 (MCP) 服务器,可直接连接到 Zotero 的 SQLite 数据库 (`zotero.sqlite`),让 AI 助手(如 Claude、ChatGPT、GitHub Copilot 等)能够与您的 Zotero 文献库进行交互。
23
+
24
+ ### ✨ 主要特性
25
+
26
+ - 🗂️ **文件夹管理** - 创建、重命名、移动和删除 Zotero 文件夹(集合)
27
+ - 🏷️ **标签管理** - 为文献添加、删除和查询标签
28
+ - 📖 **条目操作** - 搜索条目、获取详情、管理文件夹关系
29
+ - 📝 **内容管理** - 读取/设置摘要,添加笔记
30
+ - 📄 **PDF 处理** - 提取全文、生成摘要、全文搜索、获取标注
31
+ - 🔍 **标识符搜索** - 通过 DOI、ISBN、PMID、arXiv、URL 查找文献
32
+ - 🔗 **相关条目** - 查找手动关联、共享标签/作者的相似文献
33
+ - 🛠️ **库维护** - 查找重复项、验证附件、清理孤立记录、合并条目
34
+
35
+ ---
36
+
37
+ ## 更新日志
38
+
39
+ ### v1.1.3 (2026-02-01)
40
+
41
+ 🔧 **修复**
42
+ - ✅ 修复了集合(文件夹)创建功能 - 添加了必需的 `clientDateModified` 字段
43
+ - ✅ 修复了集合重命名功能 - 正确更新 `clientDateModified` 时间戳
44
+ - ✅ 修复了集合移动功能 - 确保父子关系正确建立
45
+ - 所有集合操作现在完全符合 Zotero 官方数据库规范
46
+
47
+ 现在可以正常使用:
48
+ - 创建新集合(顶级文件夹)
49
+ - 创建子集合(支持多层嵌套)
50
+ - 重命名集合
51
+ - 移动集合到其他父集合
52
+ - 获取子集合列表
53
+
54
+ ### v1.1.2
55
+
56
+ - 改进数据库连接稳定性
57
+ - 优化错误处理机制
58
+
59
+ ### v1.1.0
60
+
61
+ - 将 42 个工具整合为 13 个基于动作的工具
62
+ - 简化接口同时保持全部功能
63
+
64
+ ---
65
+
66
+ ## �🚀 快速开始
67
+
68
+ ### 前置要求
69
+
70
+ - Node.js 18.0 或更高版本
71
+ - Zotero 7.0 或更高版本
72
+ - 支持 MCP 的 AI 客户端(如 Claude Desktop、Cursor、VS Code Copilot)
73
+
74
+ ### 安装方式
75
+
76
+ #### 方式一:通过 npm 全局安装(推荐)
77
+
78
+ ```bash
79
+ npm install -g zotero-bridge
80
+ ```
81
+
82
+ #### 方式二:从源码构建
83
+
84
+ ```bash
85
+ # 克隆仓库
86
+ git clone https://github.com/Combjellyshen/ZoteroBridge.git
87
+ cd ZoteroBridge
88
+
89
+ # 安装依赖
90
+ npm install
91
+
92
+ # 构建项目
93
+ npm run build
94
+ ```
95
+
96
+ ### 配置 AI 客户端
97
+
98
+ #### Claude Desktop
99
+
100
+ 添加到 Claude Desktop 配置文件:
101
+
102
+ **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
103
+ **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
104
+
105
+ ```json
106
+ {
107
+ "mcpServers": {
108
+ "zotero-bridge": {
109
+ "command": "npx",
110
+ "args": ["-y", "zotero-bridge"],
111
+ "env": {}
112
+ }
113
+ }
114
+ }
115
+ ```
116
+
117
+ 如果从源码构建:
118
+
119
+ ```json
120
+ {
121
+ "mcpServers": {
122
+ "zotero-bridge": {
123
+ "command": "node",
124
+ "args": ["path/to/ZoteroBridge/dist/index.js"],
125
+ "env": {}
126
+ }
127
+ }
128
+ }
129
+ ```
130
+
131
+ #### Cursor IDE
132
+
133
+ 在项目根目录创建 `.cursor/mcp.json`:
134
+
135
+ ```json
136
+ {
137
+ "mcpServers": {
138
+ "zotero-bridge": {
139
+ "command": "npx",
140
+ "args": ["-y", "zotero-bridge"]
141
+ }
142
+ }
143
+ }
144
+ ```
145
+
146
+ #### VS Code Copilot
147
+
148
+ 1. 打开 VS Code 设置 (`Ctrl+,`)
149
+ 2. 搜索 `github.copilot.chat.mcpServers`
150
+ 3. 点击 "在 settings.json 中编辑"
151
+ 4. 添加以下配置:
152
+
153
+ ```json
154
+ "github.copilot.chat.mcpServers": {
155
+ "zotero-bridge": {
156
+ "command": "npx",
157
+ "args": ["-y", "zotero-bridge"]
158
+ }
159
+ }
160
+ ```
161
+
162
+ #### 自定义数据库路径
163
+
164
+ 如果您的 Zotero 数据库不在默认位置:
165
+
166
+ ```json
167
+ {
168
+ "mcpServers": {
169
+ "zotero-bridge": {
170
+ "command": "npx",
171
+ "args": ["-y", "zotero-bridge", "--db", "D:/MyZotero/zotero.sqlite"]
172
+ }
173
+ }
174
+ }
175
+ ```
176
+
177
+ ---
178
+
179
+ ## 🛠️ 可用工具(13 个整合工具)
180
+
181
+ > v1.1.0+ 版本将原有 42 个工具整合为 13 个基于动作的工具,简化了接口同时保持全部功能。
182
+
183
+ ### manage_collection - 文件夹管理
184
+
185
+ 管理 Zotero 文件夹(集合)的所有操作。
186
+
187
+ | 动作 | 描述 |
188
+ |------|------|
189
+ | `list` | 列出所有文件夹 |
190
+ | `get` | 获取文件夹详情 |
191
+ | `create` | 创建新文件夹 |
192
+ | `rename` | 重命名文件夹 |
193
+ | `move` | 移动文件夹到新父级 |
194
+ | `delete` | 删除文件夹 |
195
+ | `get_subcollections` | 获取子文件夹 |
196
+ | `add_item` | 将条目添加到文件夹 |
197
+ | `remove_item` | 从文件夹移除条目 |
198
+ | `get_items` | 获取文件夹中的所有条目 |
199
+
200
+ ### manage_tags - 标签管理
201
+
202
+ 管理标签的所有操作。
203
+
204
+ | 动作 | 描述 |
205
+ |------|------|
206
+ | `list` | 列出所有标签 |
207
+ | `get_item_tags` | 获取条目的所有标签 |
208
+ | `add` | 为条目添加标签 |
209
+ | `remove` | 从条目移除标签 |
210
+ | `create` | 创建新标签 |
211
+
212
+ ### search_items - 搜索条目
213
+
214
+ 按标题搜索 Zotero 条目。
215
+
216
+ ### get_item_details - 获取条目详情
217
+
218
+ 通过 ID 或 Key 获取条目的详细信息。
219
+
220
+ ### manage_item_content - 内容管理
221
+
222
+ 管理条目的摘要和笔记。
223
+
224
+ | 动作 | 描述 |
225
+ |------|------|
226
+ | `get_abstract` | 获取条目摘要 |
227
+ | `set_abstract` | 设置条目摘要 |
228
+ | `get_notes` | 获取条目笔记 |
229
+ | `add_note` | 为条目添加笔记 |
230
+
231
+ ### manage_pdf - PDF 操作
232
+
233
+ PDF 文件的各种操作。
234
+
235
+ | 动作 | 描述 |
236
+ |------|------|
237
+ | `extract_text` | 从 PDF 提取全文 |
238
+ | `get_summary` | 获取 PDF 摘要信息 |
239
+ | `list` | 获取条目的 PDF 附件列表 |
240
+ | `search` | 在 PDF 中搜索文本 |
241
+ | `generate_abstract` | 从 PDF 内容生成摘要 |
242
+
243
+ ### find_by_identifier - 标识符搜索
244
+
245
+ 通过各种标识符查找文献,支持自动检测。
246
+
247
+ | 类型 | 描述 |
248
+ |------|------|
249
+ | `doi` | 通过 DOI 查找 |
250
+ | `isbn` | 通过 ISBN 查找 |
251
+ | `pmid` | 通过 PubMed ID 查找 |
252
+ | `arxiv` | 通过 arXiv ID 查找 |
253
+ | `url` | 通过 URL 查找 |
254
+ | `auto` | 自动检测标识符类型 |
255
+
256
+ ### get_annotations - 获取标注
257
+
258
+ 获取 PDF 标注(高亮、笔记等),支持按类型、颜色筛选或搜索。
259
+
260
+ ### search_fulltext - 全文搜索
261
+
262
+ 在 Zotero 全文索引中搜索或获取附件的全文内容。
263
+
264
+ ### find_related_items - 查找相关条目
265
+
266
+ 通过多种方式查找相关文献。
267
+
268
+ | 方法 | 描述 |
269
+ |------|------|
270
+ | `manual` | 获取手动关联的条目 |
271
+ | `tags` | 通过共享标签查找 |
272
+ | `creators` | 通过共享作者查找 |
273
+ | `collection` | 在同一文件夹中查找 |
274
+ | `all` | 使用所有方法查找 |
275
+
276
+ ### get_database_info - 数据库信息
277
+
278
+ 获取 Zotero 数据库信息(路径、存储位置、统计数据)。
279
+
280
+ ### raw_query - 原始 SQL 查询
281
+
282
+ 执行原始 SQL 查询(仅支持 SELECT,只读)。
283
+
284
+ ### library_maintenance - 库维护 🆕
285
+
286
+ 维护和清理 Zotero 库的工具。
287
+
288
+ | 动作 | 描述 |
289
+ |------|------|
290
+ | `find_duplicates` | 查找重复条目(按标题、DOI 或 ISBN) |
291
+ | `validate_attachments` | 验证附件文件是否存在 |
292
+ | `get_valid_attachment` | 获取条目的有效附件 |
293
+ | `find_with_valid_pdf` | 查找有有效 PDF 的条目 |
294
+ | `cleanup_orphans` | 清理孤立的附件记录(支持 dry-run) |
295
+ | `merge_items` | 合并重复条目 |
296
+
297
+ ---
298
+
299
+ ## 📖 使用示例
300
+
301
+ ### 与 Claude/Copilot 配合使用
302
+
303
+ ```
304
+ # 搜索文献
305
+ 搜索标题中包含"深度学习"的条目
306
+
307
+ # 获取详情
308
+ 获取 itemID 为 1234 的条目详细信息
309
+
310
+ # 管理文件夹
311
+ 创建一个名为"机器学习论文"的新文件夹
312
+ 将条目 1234 添加到文件夹 5678
313
+
314
+ # PDF 操作
315
+ 提取附件 ID 为 100 的 PDF 全文
316
+ 在这个 PDF 中搜索"neural network"
317
+
318
+ # 通过 DOI 查找
319
+ 查找 DOI 为 10.1126/science.aaa2397 的文献
320
+
321
+ # 获取标注
322
+ 获取条目 1234 的所有高亮标注
323
+
324
+ # 库维护
325
+ 查找我的库中的重复条目
326
+ 检查条目 1234 的附件是否有效
327
+ ```
328
+
329
+ ---
330
+
331
+ ## 🏗️ 项目结构
332
+
333
+ ```
334
+ ZoteroBridge/
335
+ ├── src/
336
+ │ ├── index.ts # MCP 服务器入口
337
+ │ ├── database.ts # Zotero SQLite 数据库操作
338
+ │ ├── pdf.ts # PDF 处理模块
339
+ │ └── tools.ts # MCP 工具定义(13 个整合工具)
340
+ ├── dist/ # 编译输出
341
+ ├── test/ # 测试文件
342
+ ├── package.json
343
+ ├── tsconfig.json
344
+ └── README.md
345
+ ```
346
+
347
+ ---
348
+
349
+ ## 👨‍💻 开发指南
350
+
351
+ ### 开发模式
352
+
353
+ ```bash
354
+ # 监听文件变化并自动编译
355
+ npm run dev
356
+ ```
357
+
358
+ ### 构建
359
+
360
+ ```bash
361
+ npm run build
362
+ ```
363
+
364
+ ### 命令行参数
365
+
366
+ ```bash
367
+ # 显示帮助
368
+ zotero-bridge --help
369
+
370
+ # 指定数据库路径
371
+ zotero-bridge --db /path/to/zotero.sqlite
372
+
373
+ # 只读模式
374
+ zotero-bridge --readonly
375
+ ```
376
+
377
+ ---
378
+
379
+ ## ⚠️ 注意事项
380
+
381
+ 1. **关闭 Zotero**:使用写入功能时,请关闭 Zotero 客户端以避免数据库锁定
382
+ 2. **备份数据**:在进行修改前备份 `zotero.sqlite`
383
+ 3. **只读模式**:仅读取数据时使用 `--readonly` 参数更安全
384
+ 4. **附件验证**:使用 `library_maintenance` 的 `validate_attachments` 检查文件是否存在
385
+
386
+ ---
387
+
388
+ ## 📝 更新日志
389
+ ### v1.1.4 (2026-02-01)
390
+
391
+ 🔧 **重要修复 - 数据库兼容性**
392
+ - ✅ 修复重复项查询不一致问题 - `findItemByDOI/ISBN` 现在始终返回最新修改的条目
393
+ - ✅ 修复 `itemTags.type` 字段 - 该字段为 NOT NULL,必须提供值
394
+ - ✅ 动态获取 `note`/`attachment` 的 itemTypeID,不再硬编码
395
+ - ✅ 所有查询现在排除 `deletedItems` 表中的已删除条目
396
+
397
+ 🚀 **新功能**
398
+ - ✨ 添加事务支持 (`beginTransaction/commitTransaction/rollbackTransaction`)
399
+ - ✨ `mergeItems` 现在使用事务保证数据一致性
400
+ - ✨ `mergeItems` 新增附件转移功能
401
+ - ✨ 重复项查询现在返回 `_duplicateWarning` 警告信息
402
+
403
+ 🛡️ **安全性改进**
404
+ - 所有写操作前检查 Zotero 进程状态
405
+ - 自动创建数据库备份
406
+ - 批量操作使用事务保护
407
+ ### v1.1.2 (2025-02-01)
408
+ - 更新所有依赖到最新版本
409
+ - 修复 Zod 4.x 兼容性问题
410
+ - 修复 pdf-parse 2.x ESM 导入问题
411
+
412
+ ### v1.1.1 (2025-02-01)
413
+ - 将 42 个工具整合为 13 个基于动作的工具
414
+ - 新增 `library_maintenance` 工具(重复检测、附件验证、孤立清理、条目合并)
415
+
416
+ ### v1.1.0
417
+ - 初始整合版本
418
+
419
+ ---
420
+
421
+ ## 📄 许可证
422
+
423
+ 本项目采用 [MIT 许可证](LICENSE)。
424
+
425
+ ---
426
+
427
+ ## 🙏 致谢
428
+
429
+ - [Zotero](https://www.zotero.org/) - 优秀的开源文献管理工具
430
+ - [Model Context Protocol](https://modelcontextprotocol.io/) - AI 工具集成协议
431
+ - [cookjohn/zotero-mcp](https://github.com/cookjohn/zotero-mcp) - 项目参考
432
+
433
+ ---
434
+
435
+ ## 📬 联系方式
436
+
437
+ - 作者:Combjellyshen
438
+ - GitHub:[https://github.com/Combjellyshen/ZoteroBridge](https://github.com/Combjellyshen/ZoteroBridge)
439
+ - npm:[https://www.npmjs.com/package/zotero-bridge](https://www.npmjs.com/package/zotero-bridge)
440
+
441
+ 欢迎提交 Issue 或 Pull Request!