mcp-grampsweb 1.0.0

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.
Files changed (67) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +133 -0
  3. package/dist/auth.d.ts +37 -0
  4. package/dist/auth.d.ts.map +1 -0
  5. package/dist/auth.js +119 -0
  6. package/dist/auth.js.map +1 -0
  7. package/dist/client.d.ts +44 -0
  8. package/dist/client.d.ts.map +1 -0
  9. package/dist/client.js +153 -0
  10. package/dist/client.js.map +1 -0
  11. package/dist/config.d.ts +11 -0
  12. package/dist/config.d.ts.map +1 -0
  13. package/dist/config.js +32 -0
  14. package/dist/config.js.map +1 -0
  15. package/dist/constants.d.ts +24 -0
  16. package/dist/constants.d.ts.map +1 -0
  17. package/dist/constants.js +50 -0
  18. package/dist/constants.js.map +1 -0
  19. package/dist/index.d.ts +9 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +132 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/schemas/common.d.ts +308 -0
  24. package/dist/schemas/common.d.ts.map +1 -0
  25. package/dist/schemas/common.js +120 -0
  26. package/dist/schemas/common.js.map +1 -0
  27. package/dist/schemas/entities.d.ts +1165 -0
  28. package/dist/schemas/entities.d.ts.map +1 -0
  29. package/dist/schemas/entities.js +125 -0
  30. package/dist/schemas/entities.js.map +1 -0
  31. package/dist/schemas/index.d.ts +7 -0
  32. package/dist/schemas/index.d.ts.map +1 -0
  33. package/dist/schemas/index.js +7 -0
  34. package/dist/schemas/index.js.map +1 -0
  35. package/dist/schemas/search.d.ts +47 -0
  36. package/dist/schemas/search.d.ts.map +1 -0
  37. package/dist/schemas/search.js +24 -0
  38. package/dist/schemas/search.js.map +1 -0
  39. package/dist/tools/analysis.d.ts +115 -0
  40. package/dist/tools/analysis.d.ts.map +1 -0
  41. package/dist/tools/analysis.js +387 -0
  42. package/dist/tools/analysis.js.map +1 -0
  43. package/dist/tools/create.d.ts +355 -0
  44. package/dist/tools/create.d.ts.map +1 -0
  45. package/dist/tools/create.js +547 -0
  46. package/dist/tools/create.js.map +1 -0
  47. package/dist/tools/index.d.ts +468 -0
  48. package/dist/tools/index.d.ts.map +1 -0
  49. package/dist/tools/index.js +17 -0
  50. package/dist/tools/index.js.map +1 -0
  51. package/dist/tools/search.d.ts +95 -0
  52. package/dist/tools/search.d.ts.map +1 -0
  53. package/dist/tools/search.js +161 -0
  54. package/dist/tools/search.js.map +1 -0
  55. package/dist/types.d.ts +210 -0
  56. package/dist/types.d.ts.map +1 -0
  57. package/dist/types.js +5 -0
  58. package/dist/types.js.map +1 -0
  59. package/dist/utils/errors.d.ts +19 -0
  60. package/dist/utils/errors.d.ts.map +1 -0
  61. package/dist/utils/errors.js +48 -0
  62. package/dist/utils/errors.js.map +1 -0
  63. package/dist/utils/formatting.d.ts +60 -0
  64. package/dist/utils/formatting.d.ts.map +1 -0
  65. package/dist/utils/formatting.js +256 -0
  66. package/dist/utils/formatting.js.map +1 -0
  67. package/package.json +48 -0
@@ -0,0 +1,547 @@
1
+ /**
2
+ * Entity creation tools
3
+ */
4
+ import { grampsClient } from "../client.js";
5
+ import { API_ENDPOINTS } from "../constants.js";
6
+ import { createPersonSchema, createFamilySchema, createEventSchema, createPlaceSchema, createSourceSchema, createCitationSchema, createNoteSchema, createMediaSchema, createRepositorySchema, } from "../schemas/entities.js";
7
+ // Gender string to number mapping
8
+ function mapGender(gender) {
9
+ if (!gender)
10
+ return undefined;
11
+ switch (gender.toLowerCase()) {
12
+ case "male":
13
+ return 1;
14
+ case "female":
15
+ return 0;
16
+ default:
17
+ return 2;
18
+ }
19
+ }
20
+ /**
21
+ * Create a person
22
+ */
23
+ export async function grampsCreatePerson(params) {
24
+ const validated = createPersonSchema.parse(params);
25
+ // Build the person object with proper class markers
26
+ const person = {
27
+ _class: "Person",
28
+ gramps_id: validated.gramps_id,
29
+ primary_name: validated.primary_name
30
+ ? { _class: "Name", ...validated.primary_name }
31
+ : undefined,
32
+ alternate_names: validated.alternate_names?.map((n) => ({
33
+ _class: "Name",
34
+ ...n,
35
+ })),
36
+ gender: mapGender(validated.gender),
37
+ event_ref_list: validated.event_ref_list?.map((e) => ({
38
+ _class: "EventRef",
39
+ ...e,
40
+ })),
41
+ family_list: validated.family_list,
42
+ parent_family_list: validated.parent_family_list,
43
+ media_list: validated.media_list?.map((m) => ({ _class: "MediaRef", ...m })),
44
+ citation_list: validated.citation_list,
45
+ note_list: validated.note_list,
46
+ attribute_list: validated.attribute_list?.map((a) => ({
47
+ _class: "Attribute",
48
+ ...a,
49
+ })),
50
+ tag_list: validated.tag_list,
51
+ private: validated.private,
52
+ };
53
+ const response = await grampsClient.post(API_ENDPOINTS.PEOPLE, person);
54
+ return `Created person: ${response.gramps_id} (handle: ${response.handle})`;
55
+ }
56
+ /**
57
+ * Create a family
58
+ */
59
+ export async function grampsCreateFamily(params) {
60
+ const validated = createFamilySchema.parse(params);
61
+ const family = {
62
+ _class: "Family",
63
+ gramps_id: validated.gramps_id,
64
+ father_handle: validated.father_handle,
65
+ mother_handle: validated.mother_handle,
66
+ child_ref_list: validated.child_ref_list?.map((c) => ({
67
+ _class: "ChildRef",
68
+ ...c,
69
+ })),
70
+ type: validated.type,
71
+ event_ref_list: validated.event_ref_list?.map((e) => ({
72
+ _class: "EventRef",
73
+ ...e,
74
+ })),
75
+ media_list: validated.media_list?.map((m) => ({ _class: "MediaRef", ...m })),
76
+ citation_list: validated.citation_list,
77
+ note_list: validated.note_list,
78
+ attribute_list: validated.attribute_list?.map((a) => ({
79
+ _class: "Attribute",
80
+ ...a,
81
+ })),
82
+ tag_list: validated.tag_list,
83
+ private: validated.private,
84
+ };
85
+ const response = await grampsClient.post(API_ENDPOINTS.FAMILIES, family);
86
+ return `Created family: ${response.gramps_id} (handle: ${response.handle})`;
87
+ }
88
+ /**
89
+ * Create an event
90
+ */
91
+ export async function grampsCreateEvent(params) {
92
+ const validated = createEventSchema.parse(params);
93
+ const event = {
94
+ _class: "Event",
95
+ gramps_id: validated.gramps_id,
96
+ type: validated.type,
97
+ date: validated.date ? { _class: "Date", ...validated.date } : undefined,
98
+ place: validated.place,
99
+ description: validated.description,
100
+ media_list: validated.media_list?.map((m) => ({ _class: "MediaRef", ...m })),
101
+ citation_list: validated.citation_list,
102
+ note_list: validated.note_list,
103
+ attribute_list: validated.attribute_list?.map((a) => ({
104
+ _class: "Attribute",
105
+ ...a,
106
+ })),
107
+ tag_list: validated.tag_list,
108
+ private: validated.private,
109
+ };
110
+ const response = await grampsClient.post(API_ENDPOINTS.EVENTS, event);
111
+ return `Created event: ${response.gramps_id} (handle: ${response.handle})`;
112
+ }
113
+ /**
114
+ * Create a place
115
+ */
116
+ export async function grampsCreatePlace(params) {
117
+ const validated = createPlaceSchema.parse(params);
118
+ const place = {
119
+ _class: "Place",
120
+ gramps_id: validated.gramps_id,
121
+ title: validated.title,
122
+ name: validated.name
123
+ ? { _class: "PlaceName", ...validated.name }
124
+ : undefined,
125
+ alt_names: validated.alt_names?.map((n) => ({ _class: "PlaceName", ...n })),
126
+ lat: validated.lat,
127
+ long: validated.long,
128
+ placeref_list: validated.placeref_list?.map((p) => ({
129
+ _class: "PlaceRef",
130
+ ...p,
131
+ })),
132
+ place_type: validated.place_type,
133
+ media_list: validated.media_list?.map((m) => ({ _class: "MediaRef", ...m })),
134
+ citation_list: validated.citation_list,
135
+ note_list: validated.note_list,
136
+ tag_list: validated.tag_list,
137
+ private: validated.private,
138
+ };
139
+ const response = await grampsClient.post(API_ENDPOINTS.PLACES, place);
140
+ return `Created place: ${response.gramps_id} (handle: ${response.handle})`;
141
+ }
142
+ /**
143
+ * Create a source
144
+ */
145
+ export async function grampsCreateSource(params) {
146
+ const validated = createSourceSchema.parse(params);
147
+ const source = {
148
+ _class: "Source",
149
+ gramps_id: validated.gramps_id,
150
+ title: validated.title,
151
+ author: validated.author,
152
+ pubinfo: validated.pubinfo,
153
+ abbrev: validated.abbrev,
154
+ reporef_list: validated.reporef_list?.map((r) => ({
155
+ _class: "RepoRef",
156
+ ...r,
157
+ })),
158
+ media_list: validated.media_list?.map((m) => ({ _class: "MediaRef", ...m })),
159
+ note_list: validated.note_list,
160
+ tag_list: validated.tag_list,
161
+ private: validated.private,
162
+ };
163
+ const response = await grampsClient.post(API_ENDPOINTS.SOURCES, source);
164
+ return `Created source: ${response.gramps_id} (handle: ${response.handle})`;
165
+ }
166
+ /**
167
+ * Create a citation
168
+ */
169
+ export async function grampsCreateCitation(params) {
170
+ const validated = createCitationSchema.parse(params);
171
+ const citation = {
172
+ _class: "Citation",
173
+ gramps_id: validated.gramps_id,
174
+ source_handle: validated.source_handle,
175
+ page: validated.page,
176
+ confidence: validated.confidence,
177
+ date: validated.date ? { _class: "Date", ...validated.date } : undefined,
178
+ media_list: validated.media_list?.map((m) => ({ _class: "MediaRef", ...m })),
179
+ note_list: validated.note_list,
180
+ tag_list: validated.tag_list,
181
+ private: validated.private,
182
+ };
183
+ const response = await grampsClient.post(API_ENDPOINTS.CITATIONS, citation);
184
+ return `Created citation: ${response.gramps_id} (handle: ${response.handle})`;
185
+ }
186
+ /**
187
+ * Create a note
188
+ */
189
+ export async function grampsCreateNote(params) {
190
+ const validated = createNoteSchema.parse(params);
191
+ const note = {
192
+ _class: "Note",
193
+ gramps_id: validated.gramps_id,
194
+ text: validated.text,
195
+ format: validated.format,
196
+ type: validated.type,
197
+ tag_list: validated.tag_list,
198
+ private: validated.private,
199
+ };
200
+ const response = await grampsClient.post(API_ENDPOINTS.NOTES, note);
201
+ return `Created note: ${response.gramps_id} (handle: ${response.handle})`;
202
+ }
203
+ /**
204
+ * Create a media object
205
+ */
206
+ export async function grampsCreateMedia(params) {
207
+ const validated = createMediaSchema.parse(params);
208
+ const media = {
209
+ _class: "Media",
210
+ gramps_id: validated.gramps_id,
211
+ path: validated.path,
212
+ mime: validated.mime,
213
+ desc: validated.desc,
214
+ date: validated.date ? { _class: "Date", ...validated.date } : undefined,
215
+ citation_list: validated.citation_list,
216
+ note_list: validated.note_list,
217
+ attribute_list: validated.attribute_list?.map((a) => ({
218
+ _class: "Attribute",
219
+ ...a,
220
+ })),
221
+ tag_list: validated.tag_list,
222
+ private: validated.private,
223
+ };
224
+ const response = await grampsClient.post(API_ENDPOINTS.MEDIA, media);
225
+ return `Created media: ${response.gramps_id} (handle: ${response.handle})`;
226
+ }
227
+ /**
228
+ * Create a repository
229
+ */
230
+ export async function grampsCreateRepository(params) {
231
+ const validated = createRepositorySchema.parse(params);
232
+ const repository = {
233
+ _class: "Repository",
234
+ gramps_id: validated.gramps_id,
235
+ name: validated.name,
236
+ type: validated.type,
237
+ address_list: validated.address_list?.map((a) => ({
238
+ _class: "Address",
239
+ ...a,
240
+ })),
241
+ urls: validated.urls?.map((u) => ({ _class: "Url", ...u })),
242
+ note_list: validated.note_list,
243
+ tag_list: validated.tag_list,
244
+ private: validated.private,
245
+ };
246
+ const response = await grampsClient.post(API_ENDPOINTS.REPOSITORIES, repository);
247
+ return `Created repository: ${response.gramps_id} (handle: ${response.handle})`;
248
+ }
249
+ // Tool definitions for MCP
250
+ export const createTools = {
251
+ gramps_create_person: {
252
+ name: "gramps_create_person",
253
+ description: "Create a new person record in Gramps. " +
254
+ "Provide name information and optionally gender, events, family links, etc.",
255
+ inputSchema: {
256
+ type: "object",
257
+ properties: {
258
+ gramps_id: {
259
+ type: "string",
260
+ description: "Gramps ID (auto-generated if not provided)",
261
+ },
262
+ primary_name: {
263
+ type: "object",
264
+ description: "Primary name",
265
+ properties: {
266
+ first_name: { type: "string" },
267
+ surname: { type: "string" },
268
+ suffix: { type: "string" },
269
+ title: { type: "string" },
270
+ },
271
+ },
272
+ gender: {
273
+ type: "string",
274
+ enum: ["male", "female", "unknown"],
275
+ description: "Gender",
276
+ },
277
+ private: {
278
+ type: "boolean",
279
+ description: "Mark as private",
280
+ },
281
+ },
282
+ required: ["primary_name"],
283
+ },
284
+ handler: grampsCreatePerson,
285
+ },
286
+ gramps_create_family: {
287
+ name: "gramps_create_family",
288
+ description: "Create a new family record in Gramps. " +
289
+ "Link father, mother, and children by their person handles.",
290
+ inputSchema: {
291
+ type: "object",
292
+ properties: {
293
+ gramps_id: {
294
+ type: "string",
295
+ description: "Gramps ID (auto-generated if not provided)",
296
+ },
297
+ father_handle: {
298
+ type: "string",
299
+ description: "Father's person handle",
300
+ },
301
+ mother_handle: {
302
+ type: "string",
303
+ description: "Mother's person handle",
304
+ },
305
+ child_ref_list: {
306
+ type: "array",
307
+ items: {
308
+ type: "object",
309
+ properties: {
310
+ ref: { type: "string", description: "Child's person handle" },
311
+ frel: { type: "string", description: "Father relationship type" },
312
+ mrel: { type: "string", description: "Mother relationship type" },
313
+ },
314
+ required: ["ref"],
315
+ },
316
+ description: "List of child references",
317
+ },
318
+ type: {
319
+ type: "string",
320
+ description: "Relationship type (e.g., 'Married', 'Unknown')",
321
+ },
322
+ },
323
+ required: [],
324
+ },
325
+ handler: grampsCreateFamily,
326
+ },
327
+ gramps_create_event: {
328
+ name: "gramps_create_event",
329
+ description: "Create a new event record in Gramps. " +
330
+ "Events include births, deaths, marriages, baptisms, etc.",
331
+ inputSchema: {
332
+ type: "object",
333
+ properties: {
334
+ gramps_id: {
335
+ type: "string",
336
+ description: "Gramps ID (auto-generated if not provided)",
337
+ },
338
+ type: {
339
+ type: "string",
340
+ description: "Event type (e.g., 'Birth', 'Death', 'Marriage', 'Burial')",
341
+ },
342
+ date: {
343
+ type: "object",
344
+ description: "Event date",
345
+ properties: {
346
+ dateval: {
347
+ type: "array",
348
+ items: { type: "number" },
349
+ description: "Date as [day, month, year]",
350
+ },
351
+ text: { type: "string", description: "Date as text" },
352
+ },
353
+ },
354
+ place: {
355
+ type: "string",
356
+ description: "Place handle",
357
+ },
358
+ description: {
359
+ type: "string",
360
+ description: "Event description",
361
+ },
362
+ },
363
+ required: ["type"],
364
+ },
365
+ handler: grampsCreateEvent,
366
+ },
367
+ gramps_create_place: {
368
+ name: "gramps_create_place",
369
+ description: "Create a new place record in Gramps. " +
370
+ "Places can be cities, countries, addresses, cemeteries, etc.",
371
+ inputSchema: {
372
+ type: "object",
373
+ properties: {
374
+ gramps_id: {
375
+ type: "string",
376
+ description: "Gramps ID (auto-generated if not provided)",
377
+ },
378
+ title: {
379
+ type: "string",
380
+ description: "Place title",
381
+ },
382
+ name: {
383
+ type: "object",
384
+ properties: {
385
+ value: { type: "string", description: "Place name" },
386
+ },
387
+ description: "Primary place name",
388
+ },
389
+ lat: {
390
+ type: "string",
391
+ description: "Latitude",
392
+ },
393
+ long: {
394
+ type: "string",
395
+ description: "Longitude",
396
+ },
397
+ place_type: {
398
+ type: "string",
399
+ description: "Place type (e.g., 'City', 'Country', 'State')",
400
+ },
401
+ },
402
+ required: [],
403
+ },
404
+ handler: grampsCreatePlace,
405
+ },
406
+ gramps_create_source: {
407
+ name: "gramps_create_source",
408
+ description: "Create a new source record in Gramps. " +
409
+ "Sources document where genealogical information comes from.",
410
+ inputSchema: {
411
+ type: "object",
412
+ properties: {
413
+ gramps_id: {
414
+ type: "string",
415
+ description: "Gramps ID (auto-generated if not provided)",
416
+ },
417
+ title: {
418
+ type: "string",
419
+ description: "Source title",
420
+ },
421
+ author: {
422
+ type: "string",
423
+ description: "Author",
424
+ },
425
+ pubinfo: {
426
+ type: "string",
427
+ description: "Publication information",
428
+ },
429
+ abbrev: {
430
+ type: "string",
431
+ description: "Abbreviation",
432
+ },
433
+ },
434
+ required: ["title"],
435
+ },
436
+ handler: grampsCreateSource,
437
+ },
438
+ gramps_create_citation: {
439
+ name: "gramps_create_citation",
440
+ description: "Create a new citation record in Gramps. " +
441
+ "Citations reference specific parts of sources.",
442
+ inputSchema: {
443
+ type: "object",
444
+ properties: {
445
+ gramps_id: {
446
+ type: "string",
447
+ description: "Gramps ID (auto-generated if not provided)",
448
+ },
449
+ source_handle: {
450
+ type: "string",
451
+ description: "Source handle",
452
+ },
453
+ page: {
454
+ type: "string",
455
+ description: "Page or location within source",
456
+ },
457
+ confidence: {
458
+ type: "number",
459
+ description: "Confidence level (0=Very Low to 4=Very High)",
460
+ },
461
+ },
462
+ required: ["source_handle"],
463
+ },
464
+ handler: grampsCreateCitation,
465
+ },
466
+ gramps_create_note: {
467
+ name: "gramps_create_note",
468
+ description: "Create a new note in Gramps. " +
469
+ "Notes contain textual information that can be attached to other records.",
470
+ inputSchema: {
471
+ type: "object",
472
+ properties: {
473
+ gramps_id: {
474
+ type: "string",
475
+ description: "Gramps ID (auto-generated if not provided)",
476
+ },
477
+ text: {
478
+ type: "string",
479
+ description: "Note text content",
480
+ },
481
+ type: {
482
+ type: "string",
483
+ description: "Note type (e.g., 'General', 'Research', 'Transcript')",
484
+ },
485
+ format: {
486
+ type: "number",
487
+ description: "Format (0=flowed, 1=preformatted)",
488
+ },
489
+ },
490
+ required: ["text"],
491
+ },
492
+ handler: grampsCreateNote,
493
+ },
494
+ gramps_create_media: {
495
+ name: "gramps_create_media",
496
+ description: "Create a new media object in Gramps. " +
497
+ "Media includes photos, documents, audio, video files.",
498
+ inputSchema: {
499
+ type: "object",
500
+ properties: {
501
+ gramps_id: {
502
+ type: "string",
503
+ description: "Gramps ID (auto-generated if not provided)",
504
+ },
505
+ path: {
506
+ type: "string",
507
+ description: "File path or URL",
508
+ },
509
+ mime: {
510
+ type: "string",
511
+ description: "MIME type",
512
+ },
513
+ desc: {
514
+ type: "string",
515
+ description: "Description",
516
+ },
517
+ },
518
+ required: ["path"],
519
+ },
520
+ handler: grampsCreateMedia,
521
+ },
522
+ gramps_create_repository: {
523
+ name: "gramps_create_repository",
524
+ description: "Create a new repository in Gramps. " +
525
+ "Repositories are places where sources are stored (libraries, archives, websites).",
526
+ inputSchema: {
527
+ type: "object",
528
+ properties: {
529
+ gramps_id: {
530
+ type: "string",
531
+ description: "Gramps ID (auto-generated if not provided)",
532
+ },
533
+ name: {
534
+ type: "string",
535
+ description: "Repository name",
536
+ },
537
+ type: {
538
+ type: "string",
539
+ description: "Repository type (e.g., 'Library', 'Archive', 'Website')",
540
+ },
541
+ },
542
+ required: ["name"],
543
+ },
544
+ handler: grampsCreateRepository,
545
+ },
546
+ };
547
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/tools/create.ts"],"names":[],"mappings":"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"}