zotero-bridge 1.0.1

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/dist/tools.js ADDED
@@ -0,0 +1,425 @@
1
+ /**
2
+ * ZoteroBridge - MCP Tool Definitions
3
+ *
4
+ * Defines all available MCP tools for Zotero operations
5
+ *
6
+ * @author Combjellyshen
7
+ */
8
+ import { z } from 'zod';
9
+ // ============================================
10
+ // Collection/Directory Tools
11
+ // ============================================
12
+ export const listCollectionsSchema = z.object({
13
+ libraryID: z.number().optional().default(1).describe('Library ID (default: 1 for personal library)')
14
+ });
15
+ export const getCollectionSchema = z.object({
16
+ collectionID: z.number().optional().describe('Collection ID'),
17
+ name: z.string().optional().describe('Collection name'),
18
+ libraryID: z.number().optional().default(1).describe('Library ID')
19
+ });
20
+ export const createCollectionSchema = z.object({
21
+ name: z.string().describe('Name of the new collection'),
22
+ parentCollectionID: z.number().optional().describe('Parent collection ID (null for root)'),
23
+ libraryID: z.number().optional().default(1).describe('Library ID')
24
+ });
25
+ export const renameCollectionSchema = z.object({
26
+ collectionID: z.number().describe('Collection ID to rename'),
27
+ newName: z.string().describe('New name for the collection')
28
+ });
29
+ export const moveCollectionSchema = z.object({
30
+ collectionID: z.number().describe('Collection ID to move'),
31
+ newParentID: z.number().nullable().describe('New parent collection ID (null for root)')
32
+ });
33
+ export const deleteCollectionSchema = z.object({
34
+ collectionID: z.number().describe('Collection ID to delete')
35
+ });
36
+ export const getSubcollectionsSchema = z.object({
37
+ parentCollectionID: z.number().describe('Parent collection ID')
38
+ });
39
+ // ============================================
40
+ // Tag Tools
41
+ // ============================================
42
+ export const listTagsSchema = z.object({});
43
+ export const addTagSchema = z.object({
44
+ itemID: z.number().describe('Item ID to add tag to'),
45
+ tagName: z.string().describe('Tag name to add'),
46
+ type: z.number().optional().default(0).describe('Tag type (0=user, 1=automatic)')
47
+ });
48
+ export const removeTagSchema = z.object({
49
+ itemID: z.number().describe('Item ID to remove tag from'),
50
+ tagName: z.string().describe('Tag name to remove')
51
+ });
52
+ export const getItemTagsSchema = z.object({
53
+ itemID: z.number().describe('Item ID to get tags for')
54
+ });
55
+ export const createTagSchema = z.object({
56
+ name: z.string().describe('Tag name to create'),
57
+ type: z.number().optional().default(0).describe('Tag type')
58
+ });
59
+ // ============================================
60
+ // Item Tools
61
+ // ============================================
62
+ export const searchItemsSchema = z.object({
63
+ query: z.string().describe('Search query for item titles'),
64
+ limit: z.number().optional().default(50).describe('Maximum number of results'),
65
+ libraryID: z.number().optional().default(1).describe('Library ID')
66
+ });
67
+ export const getItemDetailsSchema = z.object({
68
+ itemID: z.number().optional().describe('Item ID'),
69
+ itemKey: z.string().optional().describe('Item key')
70
+ });
71
+ export const addItemToCollectionSchema = z.object({
72
+ itemID: z.number().describe('Item ID to add'),
73
+ collectionID: z.number().describe('Collection ID to add item to')
74
+ });
75
+ export const removeItemFromCollectionSchema = z.object({
76
+ itemID: z.number().describe('Item ID to remove'),
77
+ collectionID: z.number().describe('Collection ID to remove item from')
78
+ });
79
+ export const getCollectionItemsSchema = z.object({
80
+ collectionID: z.number().describe('Collection ID to get items from')
81
+ });
82
+ // ============================================
83
+ // Abstract/Note Tools
84
+ // ============================================
85
+ export const getItemAbstractSchema = z.object({
86
+ itemID: z.number().describe('Item ID to get abstract for')
87
+ });
88
+ export const setItemAbstractSchema = z.object({
89
+ itemID: z.number().describe('Item ID to set abstract for'),
90
+ abstract: z.string().describe('Abstract text')
91
+ });
92
+ export const getItemNotesSchema = z.object({
93
+ itemID: z.number().describe('Item ID to get notes for')
94
+ });
95
+ export const addItemNoteSchema = z.object({
96
+ itemID: z.number().describe('Parent item ID'),
97
+ content: z.string().describe('Note content (can include HTML)'),
98
+ title: z.string().optional().default('').describe('Note title')
99
+ });
100
+ // ============================================
101
+ // PDF Tools
102
+ // ============================================
103
+ export const extractPDFTextSchema = z.object({
104
+ attachmentItemID: z.number().describe('Attachment item ID of the PDF')
105
+ });
106
+ export const getPDFSummarySchema = z.object({
107
+ attachmentItemID: z.number().describe('Attachment item ID of the PDF')
108
+ });
109
+ export const getItemPDFsSchema = z.object({
110
+ parentItemID: z.number().describe('Parent item ID to get PDFs from')
111
+ });
112
+ export const searchPDFSchema = z.object({
113
+ attachmentItemID: z.number().describe('Attachment item ID of the PDF'),
114
+ query: z.string().describe('Search query'),
115
+ caseSensitive: z.boolean().optional().default(false).describe('Case sensitive search')
116
+ });
117
+ export const generateAbstractFromPDFSchema = z.object({
118
+ attachmentItemID: z.number().describe('Attachment item ID of the PDF'),
119
+ maxLength: z.number().optional().default(1000).describe('Maximum length of generated abstract'),
120
+ saveToItem: z.boolean().optional().default(false).describe('Save generated abstract to parent item')
121
+ });
122
+ // ============================================
123
+ // Identifier Tools (DOI/ISBN)
124
+ // ============================================
125
+ export const findByDOISchema = z.object({
126
+ doi: z.string().describe('DOI to search for (with or without doi.org prefix)')
127
+ });
128
+ export const findByISBNSchema = z.object({
129
+ isbn: z.string().describe('ISBN to search for (with or without hyphens)')
130
+ });
131
+ export const findByIdentifierSchema = z.object({
132
+ identifier: z.string().describe('Identifier value (DOI, ISBN, PMID, etc.)'),
133
+ type: z.string().optional().describe('Identifier type: doi, isbn, pmid, arxiv, url')
134
+ });
135
+ // ============================================
136
+ // Annotation Tools
137
+ // ============================================
138
+ export const getItemAnnotationsSchema = z.object({
139
+ itemID: z.number().describe('Parent item ID to get annotations from')
140
+ });
141
+ export const getAttachmentAnnotationsSchema = z.object({
142
+ attachmentID: z.number().describe('Attachment item ID to get annotations from')
143
+ });
144
+ export const getAnnotationsByTypeSchema = z.object({
145
+ itemID: z.number().describe('Parent item ID'),
146
+ types: z.array(z.string()).describe('Annotation types: highlight, note, image, ink, underline')
147
+ });
148
+ export const getAnnotationsByColorSchema = z.object({
149
+ itemID: z.number().describe('Parent item ID'),
150
+ colors: z.array(z.string()).describe('Annotation colors (hex codes like #ffff00)')
151
+ });
152
+ export const searchAnnotationsSchema = z.object({
153
+ query: z.string().describe('Search query for annotation text/comments'),
154
+ itemID: z.number().optional().describe('Limit search to specific item')
155
+ });
156
+ // ============================================
157
+ // Fulltext Search Tools
158
+ // ============================================
159
+ export const searchFulltextSchema = z.object({
160
+ query: z.string().describe('Search query for fulltext content'),
161
+ libraryID: z.number().optional().default(1).describe('Library ID')
162
+ });
163
+ export const getFulltextContentSchema = z.object({
164
+ attachmentID: z.number().describe('Attachment item ID to get fulltext from')
165
+ });
166
+ export const searchFulltextWithContextSchema = z.object({
167
+ query: z.string().describe('Search query'),
168
+ contextLength: z.number().optional().default(100).describe('Characters of context around matches'),
169
+ libraryID: z.number().optional().default(1).describe('Library ID')
170
+ });
171
+ // ============================================
172
+ // Similar Items Tools
173
+ // ============================================
174
+ export const getRelatedItemsSchema = z.object({
175
+ itemID: z.number().describe('Item ID to get related items for')
176
+ });
177
+ export const findSimilarByTagsSchema = z.object({
178
+ itemID: z.number().describe('Item ID to find similar items for'),
179
+ minSharedTags: z.number().optional().default(2).describe('Minimum number of shared tags')
180
+ });
181
+ export const findSimilarByCreatorsSchema = z.object({
182
+ itemID: z.number().describe('Item ID to find similar items for')
183
+ });
184
+ export const findSimilarByCollectionSchema = z.object({
185
+ itemID: z.number().describe('Item ID to find similar items for')
186
+ });
187
+ // ============================================
188
+ // Utility Tools
189
+ // ============================================
190
+ export const getDatabaseInfoSchema = z.object({});
191
+ export const rawQuerySchema = z.object({
192
+ sql: z.string().describe('SQL query to execute (SELECT only)'),
193
+ params: z.array(z.any()).optional().default([]).describe('Query parameters')
194
+ });
195
+ // ============================================
196
+ // Tool Definitions
197
+ // ============================================
198
+ export const toolDefinitions = [
199
+ // Collection Tools
200
+ {
201
+ name: 'list_collections',
202
+ description: 'List all collections (folders) in the Zotero library',
203
+ inputSchema: listCollectionsSchema
204
+ },
205
+ {
206
+ name: 'get_collection',
207
+ description: 'Get a collection by ID or name',
208
+ inputSchema: getCollectionSchema
209
+ },
210
+ {
211
+ name: 'create_collection',
212
+ description: 'Create a new collection (folder)',
213
+ inputSchema: createCollectionSchema
214
+ },
215
+ {
216
+ name: 'rename_collection',
217
+ description: 'Rename an existing collection',
218
+ inputSchema: renameCollectionSchema
219
+ },
220
+ {
221
+ name: 'move_collection',
222
+ description: 'Move a collection to a new parent (or root)',
223
+ inputSchema: moveCollectionSchema
224
+ },
225
+ {
226
+ name: 'delete_collection',
227
+ description: 'Delete a collection',
228
+ inputSchema: deleteCollectionSchema
229
+ },
230
+ {
231
+ name: 'get_subcollections',
232
+ description: 'Get all subcollections of a collection',
233
+ inputSchema: getSubcollectionsSchema
234
+ },
235
+ // Tag Tools
236
+ {
237
+ name: 'list_tags',
238
+ description: 'List all tags in the library',
239
+ inputSchema: listTagsSchema
240
+ },
241
+ {
242
+ name: 'add_tag',
243
+ description: 'Add a tag to an item',
244
+ inputSchema: addTagSchema
245
+ },
246
+ {
247
+ name: 'remove_tag',
248
+ description: 'Remove a tag from an item',
249
+ inputSchema: removeTagSchema
250
+ },
251
+ {
252
+ name: 'get_item_tags',
253
+ description: 'Get all tags for an item',
254
+ inputSchema: getItemTagsSchema
255
+ },
256
+ {
257
+ name: 'create_tag',
258
+ description: 'Create a new tag',
259
+ inputSchema: createTagSchema
260
+ },
261
+ // Item Tools
262
+ {
263
+ name: 'search_items',
264
+ description: 'Search items by title',
265
+ inputSchema: searchItemsSchema
266
+ },
267
+ {
268
+ name: 'get_item_details',
269
+ description: 'Get detailed information about an item',
270
+ inputSchema: getItemDetailsSchema
271
+ },
272
+ {
273
+ name: 'add_item_to_collection',
274
+ description: 'Add an item to a collection',
275
+ inputSchema: addItemToCollectionSchema
276
+ },
277
+ {
278
+ name: 'remove_item_from_collection',
279
+ description: 'Remove an item from a collection',
280
+ inputSchema: removeItemFromCollectionSchema
281
+ },
282
+ {
283
+ name: 'get_collection_items',
284
+ description: 'Get all items in a collection',
285
+ inputSchema: getCollectionItemsSchema
286
+ },
287
+ // Abstract/Note Tools
288
+ {
289
+ name: 'get_item_abstract',
290
+ description: 'Get the abstract of an item',
291
+ inputSchema: getItemAbstractSchema
292
+ },
293
+ {
294
+ name: 'set_item_abstract',
295
+ description: 'Set or update the abstract of an item',
296
+ inputSchema: setItemAbstractSchema
297
+ },
298
+ {
299
+ name: 'get_item_notes',
300
+ description: 'Get all notes attached to an item',
301
+ inputSchema: getItemNotesSchema
302
+ },
303
+ {
304
+ name: 'add_item_note',
305
+ description: 'Add a note to an item',
306
+ inputSchema: addItemNoteSchema
307
+ },
308
+ // PDF Tools
309
+ {
310
+ name: 'extract_pdf_text',
311
+ description: 'Extract full text from a PDF attachment',
312
+ inputSchema: extractPDFTextSchema
313
+ },
314
+ {
315
+ name: 'get_pdf_summary',
316
+ description: 'Get summary information about a PDF',
317
+ inputSchema: getPDFSummarySchema
318
+ },
319
+ {
320
+ name: 'get_item_pdfs',
321
+ description: 'Get all PDF attachments for an item',
322
+ inputSchema: getItemPDFsSchema
323
+ },
324
+ {
325
+ name: 'search_pdf',
326
+ description: 'Search within a PDF for specific text',
327
+ inputSchema: searchPDFSchema
328
+ },
329
+ {
330
+ name: 'generate_abstract_from_pdf',
331
+ description: 'Extract and generate an abstract from PDF content',
332
+ inputSchema: generateAbstractFromPDFSchema
333
+ },
334
+ // Identifier Tools
335
+ {
336
+ name: 'find_by_doi',
337
+ description: 'Find an item by its DOI',
338
+ inputSchema: findByDOISchema
339
+ },
340
+ {
341
+ name: 'find_by_isbn',
342
+ description: 'Find an item by its ISBN',
343
+ inputSchema: findByISBNSchema
344
+ },
345
+ {
346
+ name: 'find_by_identifier',
347
+ description: 'Find an item by any identifier (DOI, ISBN, PMID, arXiv, URL)',
348
+ inputSchema: findByIdentifierSchema
349
+ },
350
+ // Annotation Tools
351
+ {
352
+ name: 'get_item_annotations',
353
+ description: 'Get all annotations (highlights, notes, etc.) from an item\'s PDF attachments',
354
+ inputSchema: getItemAnnotationsSchema
355
+ },
356
+ {
357
+ name: 'get_attachment_annotations',
358
+ description: 'Get annotations from a specific PDF attachment',
359
+ inputSchema: getAttachmentAnnotationsSchema
360
+ },
361
+ {
362
+ name: 'get_annotations_by_type',
363
+ description: 'Get annotations filtered by type (highlight, note, image, ink, underline)',
364
+ inputSchema: getAnnotationsByTypeSchema
365
+ },
366
+ {
367
+ name: 'get_annotations_by_color',
368
+ description: 'Get annotations filtered by color',
369
+ inputSchema: getAnnotationsByColorSchema
370
+ },
371
+ {
372
+ name: 'search_annotations',
373
+ description: 'Search annotations by text content',
374
+ inputSchema: searchAnnotationsSchema
375
+ },
376
+ // Fulltext Search Tools
377
+ {
378
+ name: 'search_fulltext',
379
+ description: 'Search in Zotero\'s fulltext index (searches indexed PDF content)',
380
+ inputSchema: searchFulltextSchema
381
+ },
382
+ {
383
+ name: 'get_fulltext_content',
384
+ description: 'Get the indexed fulltext content of an attachment',
385
+ inputSchema: getFulltextContentSchema
386
+ },
387
+ {
388
+ name: 'search_fulltext_with_context',
389
+ description: 'Search fulltext and return matching context snippets',
390
+ inputSchema: searchFulltextWithContextSchema
391
+ },
392
+ // Similar Items Tools
393
+ {
394
+ name: 'get_related_items',
395
+ description: 'Get manually linked related items',
396
+ inputSchema: getRelatedItemsSchema
397
+ },
398
+ {
399
+ name: 'find_similar_by_tags',
400
+ description: 'Find items with similar tags',
401
+ inputSchema: findSimilarByTagsSchema
402
+ },
403
+ {
404
+ name: 'find_similar_by_creators',
405
+ description: 'Find items by the same authors/creators',
406
+ inputSchema: findSimilarByCreatorsSchema
407
+ },
408
+ {
409
+ name: 'find_similar_by_collection',
410
+ description: 'Find items in the same collections',
411
+ inputSchema: findSimilarByCollectionSchema
412
+ },
413
+ // Utility Tools
414
+ {
415
+ name: 'get_database_info',
416
+ description: 'Get information about the Zotero database',
417
+ inputSchema: getDatabaseInfoSchema
418
+ },
419
+ {
420
+ name: 'raw_query',
421
+ description: 'Execute a raw SQL SELECT query (read-only)',
422
+ inputSchema: rawQuerySchema
423
+ }
424
+ ];
425
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "zotero-bridge",
3
+ "version": "1.0.1",
4
+ "mcpName": "io.github.combjellyshen/zotero-bridge",
5
+ "description": "ZoteroBridge - MCP Server for Zotero SQLite Database Integration",
6
+ "author": "Combjellyshen",
7
+ "license": "MIT",
8
+ "type": "module",
9
+ "main": "dist/index.js",
10
+ "types": "dist/index.d.ts",
11
+ "bin": {
12
+ "zotero-bridge": "./dist/index.js"
13
+ },
14
+ "scripts": {
15
+ "build": "tsc",
16
+ "dev": "tsc --watch",
17
+ "start": "node dist/index.js",
18
+ "test": "node test/run-test.mjs",
19
+ "lint": "eslint src/**/*.ts",
20
+ "clean": "rimraf dist"
21
+ },
22
+ "keywords": [
23
+ "zotero",
24
+ "mcp",
25
+ "model-context-protocol",
26
+ "sqlite",
27
+ "reference-management",
28
+ "pdf",
29
+ "research"
30
+ ],
31
+ "repository": {
32
+ "type": "git",
33
+ "url": "https://github.com/Combjellyshen/ZoteroBridge"
34
+ },
35
+ "engines": {
36
+ "node": ">=18.0.0"
37
+ },
38
+ "dependencies": {
39
+ "@modelcontextprotocol/sdk": "^1.0.0",
40
+ "sql.js": "^1.10.0",
41
+ "pdf-parse": "^1.1.1",
42
+ "zod": "^3.22.0"
43
+ },
44
+ "devDependencies": {
45
+ "@types/node": "^20.10.0",
46
+ "@types/sql.js": "^1.4.9",
47
+ "rimraf": "^5.0.5",
48
+ "typescript": "^5.3.0"
49
+ }
50
+ }
package/server.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
+ "name": "io.github.combjellyshen/zotero-bridge",
4
+ "description": "ZoteroBridge - MCP Server for Zotero SQLite Database Integration. Direct access to Zotero's SQLite database for collection management, tagging, PDF reading, and more.",
5
+ "repository": {
6
+ "url": "https://github.com/Combjellyshen/ZoteroBridge",
7
+ "source": "github"
8
+ },
9
+ "version": "1.0.1",
10
+ "packages": [
11
+ {
12
+ "registryType": "npm",
13
+ "identifier": "zotero-bridge",
14
+ "version": "1.0.1",
15
+ "transport": {
16
+ "type": "stdio"
17
+ }
18
+ }
19
+ ]
20
+ }