zotero-bridge 1.1.2 → 1.1.3

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-en.md CHANGED
@@ -1,324 +1,426 @@
1
- # ZoteroBridge
2
-
3
- <p align="right">
4
- <a href="README.md">đŸ‡¨đŸ‡ŗ įŽ€äŊ“中文</a> | <b>đŸ‡Ŧ🇧 English</b>
5
- </p>
6
-
7
- <p align="center">
8
- <b>Model Context Protocol (MCP) Server for Zotero SQLite Database</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
- ## 📚 Overview
22
-
23
- ZoteroBridge is a Model Context Protocol (MCP) server that connects directly to Zotero's SQLite database (`zotero.sqlite`), enabling AI assistants (like Claude, ChatGPT, etc.) to interact with your Zotero reference library.
24
-
25
- ### ✨ Key Features
26
-
27
- - đŸ—‚ī¸ **Collection Management** - Create, rename, move, and delete Zotero collections (folders)
28
- - đŸˇī¸ **Tag Management** - Add, remove, and query tags for references
29
- - 📖 **Item Operations** - Search items, get details, manage collection relationships
30
- - 📝 **Abstract Management** - Read and set item abstracts, add notes
31
- - 📄 **PDF Processing** - Extract PDF full text, generate summaries, full-text search
32
-
33
- ---
34
-
35
- ## 🚀 Quick Start
36
-
37
- ### Prerequisites
38
-
39
- - Node.js 18.0 or higher
40
- - Zotero 7.0 or higher
41
- - An MCP-compatible AI client (e.g., Claude Desktop, Cursor)
42
-
43
- ### Installation
44
-
45
- ```bash
46
- # Clone the repository
47
- git clone https://github.com/Combjellyshen/ZoteroBridge.git
48
- cd ZoteroBridge
49
-
50
- # Install dependencies
51
- npm install
52
-
53
- # Build the project
54
- npm run build
55
- ```
56
-
57
- ### Configure AI Clients
58
-
59
- #### Claude Desktop
60
-
61
- Add to your Claude Desktop configuration file:
62
-
63
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
64
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
65
-
66
- ```json
67
- {
68
- "mcpServers": {
69
- "zotero-bridge": {
70
- "command": "node",
71
- "args": ["path/to/ZoteroBridge/dist/index.js"],
72
- "env": {}
73
- }
74
- }
75
- }
76
- ```
77
-
78
- #### Cursor IDE
79
-
80
- Create `.cursor/mcp.json` in your project root:
81
-
82
- ```json
83
- {
84
- "mcpServers": {
85
- "zotero-bridge": {
86
- "command": "node",
87
- "args": ["path/to/ZoteroBridge/dist/index.js"]
88
- }
89
- }
90
- }
91
- ```
92
-
93
- #### VS Code Copilot
94
-
95
- 1. Open VS Code Settings (`Ctrl+,`).
96
- 2. Search for `github.copilot.chat.mcpServers`.
97
- 3. Click "Edit in settings.json".
98
- 4. Add the following configuration:
99
-
100
- ```json
101
- "github.copilot.chat.mcpServers": {
102
- "zotero-bridge": {
103
- "command": "node",
104
- "args": ["path/to/ZoteroBridge/dist/index.js"]
105
- }
106
- }
107
- ```
108
- Make sure to replace `path/to/ZoteroBridge/dist/index.js` with the actual absolute path.
109
-
110
- #### Custom Database Path
111
-
112
- If your Zotero database is not in the default location:
113
-
114
- ```json
115
- {
116
- "mcpServers": {
117
- "zotero-bridge": {
118
- "command": "node",
119
- "args": [
120
- "path/to/ZoteroBridge/dist/index.js",
121
- "--db", "D:/MyZotero/zotero.sqlite"
122
- ]
123
- }
124
- }
125
- }
126
- ```
127
-
128
- ---
129
-
130
- ## đŸ› ī¸ Available Tools
131
-
132
- ### Collection Management
133
-
134
- | Tool | Description |
135
- |------|-------------|
136
- | `list_collections` | List all collections |
137
- | `get_collection` | Get collection details |
138
- | `create_collection` | Create a new collection |
139
- | `rename_collection` | Rename a collection |
140
- | `move_collection` | Move collection to new parent |
141
- | `delete_collection` | Delete a collection |
142
- | `get_subcollections` | Get subcollections |
143
-
144
- ### Tag Management
145
-
146
- | Tool | Description |
147
- |------|-------------|
148
- | `list_tags` | List all tags |
149
- | `create_tag` | Create a new tag |
150
- | `add_tag` | Add a tag to an item |
151
- | `remove_tag` | Remove a tag from an item |
152
- | `get_item_tags` | Get all tags for an item |
153
-
154
- ### Item Operations
155
-
156
- | Tool | Description |
157
- |------|-------------|
158
- | `search_items` | Search items by title |
159
- | `get_item_details` | Get detailed item information |
160
- | `add_item_to_collection` | Add item to a collection |
161
- | `remove_item_from_collection` | Remove item from a collection |
162
- | `get_collection_items` | Get all items in a collection |
163
-
164
- ### Abstract and Notes
165
-
166
- | Tool | Description |
167
- |------|-------------|
168
- | `get_item_abstract` | Get item abstract |
169
- | `set_item_abstract` | Set item abstract |
170
- | `get_item_notes` | Get item notes |
171
- | `add_item_note` | Add a note to an item |
172
-
173
- ### PDF Processing
174
-
175
- | Tool | Description |
176
- |------|-------------|
177
- | `extract_pdf_text` | Extract full text from PDF |
178
- | `get_pdf_summary` | Get PDF summary information |
179
- | `get_item_pdfs` | Get PDF attachments for an item |
180
- | `search_pdf` | Search text within a PDF |
181
- | `generate_abstract_from_pdf` | Generate abstract from PDF content |
182
-
183
- ### Utilities
184
-
185
- | Tool | Description |
186
- |------|-------------|
187
- | `get_database_info` | Get database information |
188
- | `raw_query` | Execute raw SQL query (SELECT only) |
189
-
190
- ### Identifier Search (DOI/ISBN)
191
-
192
- | Tool | Description |
193
- |------|-------------|
194
- | `find_by_doi` | Find item by DOI |
195
- | `find_by_isbn` | Find item by ISBN |
196
- | `find_by_identifier` | Find item by any identifier (DOI, ISBN, PMID, arXiv) |
197
-
198
- ### PDF Annotations
199
-
200
- | Tool | Description |
201
- |------|-------------|
202
- | `get_item_annotations` | Get all annotations for an item (highlights, notes, etc.) |
203
- | `get_attachment_annotations` | Get annotations from a specific attachment |
204
- | `get_annotations_by_type` | Filter annotations by type (highlight, note, etc.) |
205
- | `get_annotations_by_color` | Filter annotations by color |
206
- | `search_annotations` | Search within annotation content |
207
-
208
- ### Fulltext Search
209
-
210
- | Tool | Description |
211
- |------|-------------|
212
- | `search_fulltext` | Search in fulltext index |
213
- | `get_fulltext_content` | Get fulltext content of an attachment |
214
- | `search_fulltext_with_context` | Fulltext search with context snippets |
215
-
216
- ### Related Items
217
-
218
- | Tool | Description |
219
- |------|-------------|
220
- | `get_related_items` | Get manually linked related items |
221
- | `find_similar_by_tags` | Find similar items by shared tags |
222
- | `find_similar_by_creators` | Find similar items by shared authors |
223
- | `find_similar_by_collection` | Find similar items in same collection |
224
-
225
- ---
226
-
227
- ## 📖 Usage Examples
228
-
229
- ### Using with Claude
230
-
231
- ```
232
- # List all collections
233
- List all collections in my Zotero library
234
-
235
- # Create a new collection
236
- Create a new collection called "Machine Learning Papers"
237
-
238
- # Search items
239
- Search for items with "deep learning" in the title
240
-
241
- # Extract PDF content
242
- Extract the full text from this item's PDF and generate a summary
243
-
244
- # Add tags
245
- Add "important" and "to-read" tags to this item
246
- ```
247
-
248
- ---
249
-
250
- ## đŸ—ī¸ Project Structure
251
-
252
- ```
253
- ZoteroBridge/
254
- ├── src/
255
- │ ├── index.ts # MCP server entry point
256
- │ ├── database.ts # Zotero SQLite database operations
257
- │ ├── pdf.ts # PDF processing module
258
- │ └── tools.ts # MCP tool definitions
259
- ├── dist/ # Compiled output
260
- ├── package.json
261
- ├── tsconfig.json
262
- └── README.md
263
- ```
264
-
265
- ---
266
-
267
- ## 👨‍đŸ’ģ Development Guide
268
-
269
- ### Development Mode
270
-
271
- ```bash
272
- # Watch for file changes and auto-compile
273
- npm run dev
274
- ```
275
-
276
- ### Build
277
-
278
- ```bash
279
- npm run build
280
- ```
281
-
282
- ### Command Line Arguments
283
-
284
- ```bash
285
- # Show help
286
- node dist/index.js --help
287
-
288
- # Specify database path
289
- node dist/index.js --db /path/to/zotero.sqlite
290
-
291
- # Read-only mode
292
- node dist/index.js --readonly
293
- ```
294
-
295
- ---
296
-
297
- ## âš ī¸ Important Notes
298
-
299
- 1. **Close Zotero**: When using write features, close the Zotero client to avoid database locking
300
- 2. **Backup Data**: Backup `zotero.sqlite` before making modifications
301
- 3. **Read-only Mode**: Use `--readonly` flag when only reading data for safety
302
-
303
- ---
304
-
305
- ## 📄 License
306
-
307
- This project is licensed under the [MIT License](LICENSE).
308
-
309
- ---
310
-
311
- ## 🙏 Acknowledgements
312
-
313
- - [Zotero](https://www.zotero.org/) - Excellent open-source reference management tool
314
- - [Model Context Protocol](https://modelcontextprotocol.io/) - AI tool integration protocol
315
- - [cookjohn/zotero-mcp](https://github.com/cookjohn/zotero-mcp) - Project reference
316
-
317
- ---
318
-
319
- ## đŸ“Ŧ Contact
320
-
321
- - Author: Combjellyshen
322
- - GitHub: [https://github.com/Combjellyshen/ZoteroBridge](https://github.com/Combjellyshen/ZoteroBridge)
323
-
324
- Feel free to submit Issues or Pull Requests!
1
+ # ZoteroBridge
2
+
3
+ <p align="right">
4
+ <a href="README.md">đŸ‡¨đŸ‡ŗ įŽ€äŊ“中文</a> | <b>đŸ‡Ŧ🇧 English</b>
5
+ </p>
6
+
7
+ <p align="center">
8
+ <b>Model Context Protocol (MCP) Server for Zotero SQLite Database</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
+ ## 📚 Overview
23
+
24
+ ZoteroBridge is a Model Context Protocol (MCP) server that connects directly to Zotero''s SQLite database (`zotero.sqlite`), enabling AI assistants (like Claude, ChatGPT, GitHub Copilot, etc.) to interact with your Zotero reference library.
25
+
26
+ ### ✨ Key Features
27
+
28
+ - đŸ—‚ī¸ **Collection Management** - Create, rename, move, and delete Zotero collections (folders)
29
+ - đŸˇī¸ **Tag Management** - Add, remove, and query tags for references
30
+ - 📖 **Item Operations** - Search items, get details, manage collection relationships
31
+ - 📝 **Content Management** - Read/set abstracts, add notes
32
+ - 📄 **PDF Processing** - Extract full text, generate summaries, full-text search, get annotations
33
+ - 🔍 **Identifier Search** - Find items by DOI, ISBN, PMID, arXiv, URL
34
+ - 🔗 **Related Items** - Find similar items by manual links, shared tags/creators
35
+ - đŸ› ī¸ **Library Maintenance** - Find duplicates, validate attachments, cleanup orphans, merge items
36
+
37
+ ---
38
+
39
+ ## īŋŊ Changelog
40
+
41
+ ### v1.1.3 (2026-02-01)
42
+
43
+ 🔧 **Fixes**
44
+ - ✅ Fixed collection (folder) creation - added required `clientDateModified` field
45
+ - ✅ Fixed collection rename - properly updates `clientDateModified` timestamp
46
+ - ✅ Fixed collection move - ensures parent-child relationships are correctly established
47
+ - ✅ All collection operations now fully comply with Zotero's official database schema
48
+
49
+ Now working properly:
50
+ - Create new collections (top-level folders)
51
+ - Create subcollections (supports multi-level nesting)
52
+ - Rename collections
53
+ - Move collections to other parent collections
54
+ - Get subcollection lists
55
+
56
+ ### v1.1.2
57
+
58
+ - Improved database connection stability
59
+ - Optimized error handling mechanisms
60
+
61
+ ### v1.1.0
62
+
63
+ - Consolidated 42 tools into 13 action-based tools
64
+ - Simplified interface while maintaining all functionality
65
+
66
+ ---
67
+
68
+ ## īŋŊ🚀 Quick Start
69
+
70
+ ### Prerequisites
71
+
72
+ - Node.js 18.0 or higher
73
+ - Zotero 7.0 or higher
74
+ - An MCP-compatible AI client (e.g., Claude Desktop, Cursor, VS Code Copilot)
75
+
76
+ ### Installation
77
+
78
+ #### Option 1: Install via npm (Recommended)
79
+
80
+ ```bash
81
+ npm install -g zotero-bridge
82
+ ```
83
+
84
+ #### Option 2: Build from Source
85
+
86
+ ```bash
87
+ # Clone the repository
88
+ git clone https://github.com/Combjellyshen/ZoteroBridge.git
89
+ cd ZoteroBridge
90
+
91
+ # Install dependencies
92
+ npm install
93
+
94
+ # Build the project
95
+ npm run build
96
+ ```
97
+
98
+ ### Configure AI Clients
99
+
100
+ #### Claude Desktop
101
+
102
+ Add to your Claude Desktop configuration file:
103
+
104
+ **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
105
+ **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
106
+
107
+ ```json
108
+ {
109
+ "mcpServers": {
110
+ "zotero-bridge": {
111
+ "command": "npx",
112
+ "args": ["-y", "zotero-bridge"],
113
+ "env": {}
114
+ }
115
+ }
116
+ }
117
+ ```
118
+
119
+ If building from source:
120
+
121
+ ```json
122
+ {
123
+ "mcpServers": {
124
+ "zotero-bridge": {
125
+ "command": "node",
126
+ "args": ["path/to/ZoteroBridge/dist/index.js"],
127
+ "env": {}
128
+ }
129
+ }
130
+ }
131
+ ```
132
+
133
+ #### Cursor IDE
134
+
135
+ Create `.cursor/mcp.json` in your project root:
136
+
137
+ ```json
138
+ {
139
+ "mcpServers": {
140
+ "zotero-bridge": {
141
+ "command": "npx",
142
+ "args": ["-y", "zotero-bridge"]
143
+ }
144
+ }
145
+ }
146
+ ```
147
+
148
+ #### VS Code Copilot
149
+
150
+ 1. Open VS Code Settings (`Ctrl+,`)
151
+ 2. Search for `github.copilot.chat.mcpServers`
152
+ 3. Click "Edit in settings.json"
153
+ 4. Add the following configuration:
154
+
155
+ ```json
156
+ "github.copilot.chat.mcpServers": {
157
+ "zotero-bridge": {
158
+ "command": "npx",
159
+ "args": ["-y", "zotero-bridge"]
160
+ }
161
+ }
162
+ ```
163
+
164
+ #### Custom Database Path
165
+
166
+ If your Zotero database is not in the default location:
167
+
168
+ ```json
169
+ {
170
+ "mcpServers": {
171
+ "zotero-bridge": {
172
+ "command": "npx",
173
+ "args": ["-y", "zotero-bridge", "--db", "D:/MyZotero/zotero.sqlite"]
174
+ }
175
+ }
176
+ }
177
+ ```
178
+
179
+ ---
180
+
181
+ ## đŸ› ī¸ Available Tools (13 Consolidated Tools)
182
+
183
+ > Version 1.1.0+ consolidates the original 42 tools into 13 action-based tools, simplifying the interface while maintaining full functionality.
184
+
185
+ ### manage_collection - Collection Management
186
+
187
+ All operations for managing Zotero collections (folders).
188
+
189
+ | Action | Description |
190
+ |--------|-------------|
191
+ | `list` | List all collections |
192
+ | `get` | Get collection details |
193
+ | `create` | Create a new collection |
194
+ | `rename` | Rename a collection |
195
+ | `move` | Move collection to new parent |
196
+ | `delete` | Delete a collection |
197
+ | `get_subcollections` | Get subcollections |
198
+ | `add_item` | Add item to collection |
199
+ | `remove_item` | Remove item from collection |
200
+ | `get_items` | Get all items in collection |
201
+
202
+ ### manage_tags - Tag Management
203
+
204
+ All operations for managing tags.
205
+
206
+ | Action | Description |
207
+ |--------|-------------|
208
+ | `list` | List all tags |
209
+ | `get_item_tags` | Get all tags for an item |
210
+ | `add` | Add tag to an item |
211
+ | `remove` | Remove tag from an item |
212
+ | `create` | Create a new tag |
213
+
214
+ ### search_items - Search Items
215
+
216
+ Search Zotero items by title.
217
+
218
+ ### get_item_details - Get Item Details
219
+
220
+ Get detailed information about an item by ID or key.
221
+
222
+ ### manage_item_content - Content Management
223
+
224
+ Manage item abstracts and notes.
225
+
226
+ | Action | Description |
227
+ |--------|-------------|
228
+ | `get_abstract` | Get item abstract |
229
+ | `set_abstract` | Set item abstract |
230
+ | `get_notes` | Get item notes |
231
+ | `add_note` | Add a note to item |
232
+
233
+ ### manage_pdf - PDF Operations
234
+
235
+ Various operations for PDF files.
236
+
237
+ | Action | Description |
238
+ |--------|-------------|
239
+ | `extract_text` | Extract full text from PDF |
240
+ | `get_summary` | Get PDF summary information |
241
+ | `list` | Get PDF attachments for an item |
242
+ | `search` | Search text within PDF |
243
+ | `generate_abstract` | Generate abstract from PDF content |
244
+
245
+ ### find_by_identifier - Identifier Search
246
+
247
+ Find items by various identifiers with auto-detection support.
248
+
249
+ | Type | Description |
250
+ |------|-------------|
251
+ | `doi` | Find by DOI |
252
+ | `isbn` | Find by ISBN |
253
+ | `pmid` | Find by PubMed ID |
254
+ | `arxiv` | Find by arXiv ID |
255
+ | `url` | Find by URL |
256
+ | `auto` | Auto-detect identifier type |
257
+
258
+ ### get_annotations - Get Annotations
259
+
260
+ Get PDF annotations (highlights, notes, etc.) with optional filters by type, color, or search query.
261
+
262
+ ### search_fulltext - Full-text Search
263
+
264
+ Search in Zotero''s full-text index or get full-text content of an attachment.
265
+
266
+ ### find_related_items - Find Related Items
267
+
268
+ Find related items through multiple methods.
269
+
270
+ | Method | Description |
271
+ |--------|-------------|
272
+ | `manual` | Get manually linked items |
273
+ | `tags` | Find by shared tags |
274
+ | `creators` | Find by shared authors |
275
+ | `collection` | Find in same collection |
276
+ | `all` | Use all methods |
277
+
278
+ ### get_database_info - Database Info
279
+
280
+ Get Zotero database information (path, storage, statistics).
281
+
282
+ ### raw_query - Raw SQL Query
283
+
284
+ Execute raw SQL queries (SELECT only, read-only).
285
+
286
+ ### library_maintenance - Library Maintenance 🆕
287
+
288
+ Tools for maintaining and cleaning up your Zotero library.
289
+
290
+ | Action | Description |
291
+ |--------|-------------|
292
+ | `find_duplicates` | Find duplicate items (by title, DOI, or ISBN) |
293
+ | `validate_attachments` | Validate if attachment files exist |
294
+ | `get_valid_attachment` | Get valid attachment for an item |
295
+ | `find_with_valid_pdf` | Find items with valid PDFs |
296
+ | `cleanup_orphans` | Cleanup orphan attachment records (supports dry-run) |
297
+ | `merge_items` | Merge duplicate items |
298
+
299
+ ---
300
+
301
+ ## 📖 Usage Examples
302
+
303
+ ### Using with Claude/Copilot
304
+
305
+ ```
306
+ # Search items
307
+ Search for items with "deep learning" in the title
308
+
309
+ # Get details
310
+ Get detailed information for item ID 1234
311
+
312
+ # Manage collections
313
+ Create a new collection called "Machine Learning Papers"
314
+ Add item 1234 to collection 5678
315
+
316
+ # PDF operations
317
+ Extract full text from attachment ID 100
318
+ Search for "neural network" in this PDF
319
+
320
+ # Find by DOI
321
+ Find the item with DOI 10.1126/science.aaa2397
322
+
323
+ # Get annotations
324
+ Get all highlight annotations for item 1234
325
+
326
+ # Library maintenance
327
+ Find duplicate items in my library
328
+ Check if attachments for item 1234 are valid
329
+ ```
330
+
331
+ ---
332
+
333
+ ## đŸ—ī¸ Project Structure
334
+
335
+ ```
336
+ ZoteroBridge/
337
+ ├── src/
338
+ │ ├── index.ts # MCP server entry point
339
+ │ ├── database.ts # Zotero SQLite database operations
340
+ │ ├── pdf.ts # PDF processing module
341
+ │ └── tools.ts # MCP tool definitions (13 consolidated tools)
342
+ ├── dist/ # Compiled output
343
+ ├── test/ # Test files
344
+ ├── package.json
345
+ ├── tsconfig.json
346
+ └── README.md
347
+ ```
348
+
349
+ ---
350
+
351
+ ## 👨‍đŸ’ģ Development Guide
352
+
353
+ ### Development Mode
354
+
355
+ ```bash
356
+ # Watch for file changes and auto-compile
357
+ npm run dev
358
+ ```
359
+
360
+ ### Build
361
+
362
+ ```bash
363
+ npm run build
364
+ ```
365
+
366
+ ### Command Line Arguments
367
+
368
+ ```bash
369
+ # Show help
370
+ zotero-bridge --help
371
+
372
+ # Specify database path
373
+ zotero-bridge --db /path/to/zotero.sqlite
374
+
375
+ # Read-only mode
376
+ zotero-bridge --readonly
377
+ ```
378
+
379
+ ---
380
+
381
+ ## âš ī¸ Important Notes
382
+
383
+ 1. **Close Zotero**: When using write features, close the Zotero client to avoid database locking
384
+ 2. **Backup Data**: Backup `zotero.sqlite` before making modifications
385
+ 3. **Read-only Mode**: Use `--readonly` flag when only reading data for safety
386
+ 4. **Attachment Validation**: Use `library_maintenance` with `validate_attachments` to check if files exist
387
+
388
+ ---
389
+
390
+ ## 📝 Changelog
391
+
392
+ ### v1.1.2 (2025-02-01)
393
+ - Updated all dependencies to latest versions
394
+ - Fixed Zod 4.x compatibility issues
395
+ - Fixed pdf-parse 2.x ESM import issues
396
+
397
+ ### v1.1.1 (2025-02-01)
398
+ - Consolidated 42 tools into 13 action-based tools
399
+ - Added `library_maintenance` tool (duplicate detection, attachment validation, orphan cleanup, item merging)
400
+
401
+ ### v1.1.0
402
+ - Initial consolidated version
403
+
404
+ ---
405
+
406
+ ## 📄 License
407
+
408
+ This project is licensed under the [MIT License](LICENSE).
409
+
410
+ ---
411
+
412
+ ## 🙏 Acknowledgements
413
+
414
+ - [Zotero](https://www.zotero.org/) - Excellent open-source reference management tool
415
+ - [Model Context Protocol](https://modelcontextprotocol.io/) - AI tool integration protocol
416
+ - [cookjohn/zotero-mcp](https://github.com/cookjohn/zotero-mcp) - Project reference
417
+
418
+ ---
419
+
420
+ ## đŸ“Ŧ Contact
421
+
422
+ - Author: Combjellyshen
423
+ - GitHub: [https://github.com/Combjellyshen/ZoteroBridge](https://github.com/Combjellyshen/ZoteroBridge)
424
+ - npm: [https://www.npmjs.com/package/zotero-bridge](https://www.npmjs.com/package/zotero-bridge)
425
+
426
+ Feel free to submit Issues or Pull Requests!