mcp-grampsweb 1.0.2 → 1.2.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 (55) hide show
  1. package/dist/client.d.ts.map +1 -1
  2. package/dist/client.js +4 -0
  3. package/dist/client.js.map +1 -1
  4. package/dist/constants.d.ts +7 -0
  5. package/dist/constants.d.ts.map +1 -1
  6. package/dist/constants.js +8 -0
  7. package/dist/constants.js.map +1 -1
  8. package/dist/index.js +28 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/prompts/index.d.ts +26 -0
  11. package/dist/prompts/index.d.ts.map +1 -0
  12. package/dist/prompts/index.js +310 -0
  13. package/dist/prompts/index.js.map +1 -0
  14. package/dist/schemas/common.d.ts +67 -4
  15. package/dist/schemas/common.d.ts.map +1 -1
  16. package/dist/schemas/common.js +13 -2
  17. package/dist/schemas/common.js.map +1 -1
  18. package/dist/schemas/entities.d.ts +154 -36
  19. package/dist/schemas/entities.d.ts.map +1 -1
  20. package/dist/tools/analysis.d.ts.map +1 -1
  21. package/dist/tools/analysis.js +134 -56
  22. package/dist/tools/analysis.js.map +1 -1
  23. package/dist/tools/convenience.d.ts +59 -0
  24. package/dist/tools/convenience.d.ts.map +1 -0
  25. package/dist/tools/convenience.js +131 -0
  26. package/dist/tools/convenience.js.map +1 -0
  27. package/dist/tools/create.d.ts +35 -0
  28. package/dist/tools/create.d.ts.map +1 -1
  29. package/dist/tools/create.js +216 -44
  30. package/dist/tools/create.js.map +1 -1
  31. package/dist/tools/index.d.ts +253 -1
  32. package/dist/tools/index.d.ts.map +1 -1
  33. package/dist/tools/index.js +7 -1
  34. package/dist/tools/index.js.map +1 -1
  35. package/dist/tools/list.d.ts +88 -0
  36. package/dist/tools/list.d.ts.map +1 -0
  37. package/dist/tools/list.js +222 -0
  38. package/dist/tools/list.js.map +1 -0
  39. package/dist/tools/search.d.ts.map +1 -1
  40. package/dist/tools/search.js +67 -24
  41. package/dist/tools/search.js.map +1 -1
  42. package/dist/tools/update.d.ts +662 -0
  43. package/dist/tools/update.d.ts.map +1 -0
  44. package/dist/tools/update.js +383 -0
  45. package/dist/tools/update.js.map +1 -0
  46. package/dist/types.d.ts +11 -0
  47. package/dist/types.d.ts.map +1 -1
  48. package/dist/utils/formatting.d.ts.map +1 -1
  49. package/dist/utils/formatting.js +23 -2
  50. package/dist/utils/formatting.js.map +1 -1
  51. package/dist/utils/response.d.ts +34 -0
  52. package/dist/utils/response.d.ts.map +1 -0
  53. package/dist/utils/response.js +71 -0
  54. package/dist/utils/response.js.map +1 -0
  55. package/package.json +1 -1
@@ -2,9 +2,9 @@
2
2
  * Search and retrieval tools
3
3
  */
4
4
  import { grampsClient } from "../client.js";
5
- import { API_ENDPOINTS, ENTITY_ENDPOINT_MAP } from "../constants.js";
5
+ import { API_ENDPOINTS, ENTITY_ENDPOINT_MAP, MESSAGES } from "../constants.js";
6
6
  import { searchSchema, findSchema, getEntitySchema } from "../schemas/search.js";
7
- import { formatSearchResults, formatEntity } from "../utils/formatting.js";
7
+ import { formatToolResponse, formatEntityList } from "../utils/response.js";
8
8
  /**
9
9
  * GQL-based search for entities
10
10
  */
@@ -15,19 +15,36 @@ export async function grampsSearch(params) {
15
15
  throw new Error(`Unknown entity type: ${entity_type}`);
16
16
  }
17
17
  const response = await grampsClient.get(endpoint, {
18
- gramps: query,
18
+ gql: query,
19
19
  page,
20
20
  pagesize,
21
21
  });
22
22
  // Format response
23
23
  if (!response || (Array.isArray(response) && response.length === 0)) {
24
- return `No ${entity_type} found matching query: ${query}`;
24
+ return formatToolResponse({
25
+ status: "empty",
26
+ summary: MESSAGES.NO_RESULTS(entity_type, query),
27
+ details: "GQL syntax: property operator value. Examples: gender = 1, primary_name.first_name ~ John",
28
+ });
25
29
  }
26
- const results = (Array.isArray(response) ? response : [response]).map((obj) => ({
27
- object_type: entity_type,
28
- object: obj,
30
+ const entities = Array.isArray(response) ? response : [response];
31
+ const formattedEntities = entities.map((obj) => ({
32
+ handle: obj.handle,
33
+ gramps_id: obj.gramps_id,
34
+ // Include type-specific summary field
35
+ ...(entity_type === "people" && { name: formatPersonSummary(obj) }),
36
+ ...(entity_type === "places" && { name: obj.name?.value || obj.title }),
37
+ ...(entity_type === "sources" && { title: obj.title }),
38
+ ...(entity_type === "events" && { type: obj.type }),
29
39
  }));
30
- return formatSearchResults(results);
40
+ return formatEntityList(entity_type, formattedEntities);
41
+ }
42
+ function formatPersonSummary(person) {
43
+ const p = person;
44
+ if (!p.primary_name)
45
+ return "Unknown";
46
+ const parts = [p.primary_name.first_name, p.primary_name.surname].filter(Boolean);
47
+ return parts.join(" ") || "Unknown";
31
48
  }
32
49
  /**
33
50
  * Full-text search across all entities
@@ -40,13 +57,18 @@ export async function grampsFind(params) {
40
57
  pagesize,
41
58
  });
42
59
  if (!response.data || response.data.length === 0) {
43
- return `No results found for: ${query}`;
44
- }
45
- let result = formatSearchResults(response.data);
46
- if (response.total_count !== undefined) {
47
- result += `\n\nTotal results: ${response.total_count}`;
60
+ return formatToolResponse({
61
+ status: "empty",
62
+ summary: MESSAGES.NO_RESULTS("records", query),
63
+ details: MESSAGES.SEARCH_HINT,
64
+ });
48
65
  }
49
- return result;
66
+ const formattedResults = response.data.map((item) => ({
67
+ type: item.object_type,
68
+ handle: item.object.handle,
69
+ gramps_id: item.object.gramps_id,
70
+ }));
71
+ return formatEntityList("records", formattedResults, response.total_count);
50
72
  }
51
73
  /**
52
74
  * Get a specific entity by handle or ID
@@ -60,7 +82,12 @@ export async function grampsGet(params) {
60
82
  // Try to get by handle first
61
83
  try {
62
84
  const response = await grampsClient.get(`${endpoint}${handle}`);
63
- return formatEntity(response, entity_type);
85
+ return formatToolResponse({
86
+ status: "success",
87
+ summary: `Found ${entity_type.replace(/s$/, "")} ${response.gramps_id}`,
88
+ data: response,
89
+ details: `Handle: ${response.handle} - use this handle to reference in other operations.`,
90
+ });
64
91
  }
65
92
  catch (error) {
66
93
  // If not found by handle, try searching by gramps_id
@@ -69,8 +96,19 @@ export async function grampsGet(params) {
69
96
  gramps: `gramps_id=${handle}`,
70
97
  });
71
98
  if (searchResponse && searchResponse.length > 0) {
72
- return formatEntity(searchResponse[0], entity_type);
99
+ const entity = searchResponse[0];
100
+ return formatToolResponse({
101
+ status: "success",
102
+ summary: `Found ${entity_type.replace(/s$/, "")} ${entity.gramps_id}`,
103
+ data: entity,
104
+ details: `Handle: ${entity.handle} - use this handle to reference in other operations.`,
105
+ });
73
106
  }
107
+ return formatToolResponse({
108
+ status: "empty",
109
+ summary: MESSAGES.NOT_FOUND(entity_type.replace(/s$/, ""), handle),
110
+ details: "Use gramps_find to search for the correct handle or ID.",
111
+ });
74
112
  }
75
113
  throw error;
76
114
  }
@@ -79,9 +117,11 @@ export async function grampsGet(params) {
79
117
  export const searchTools = {
80
118
  gramps_search: {
81
119
  name: "gramps_search",
82
- description: "Search for Gramps entities using GQL (Gramps Query Language). " +
83
- "Examples: 'surname=Smith', 'gender=M', 'birth.date.year>1900'. " +
84
- "Use for structured queries on specific entity types.",
120
+ description: "Search using GQL (Gramps Query Language) for structured queries. " +
121
+ "USE FOR: Finding entities by attributes (name, date, gender, etc.). " +
122
+ "SYNTAX: property operator value, combined with 'and'/'or'. " +
123
+ "EXAMPLES: primary_name.surname_list[0].surname ~ Smith, gender = 1 (male=1, female=0). " +
124
+ "RETURNS: List of handles - use handles with gramps_get for full details.",
85
125
  inputSchema: {
86
126
  type: "object",
87
127
  properties: {
@@ -111,9 +151,10 @@ export const searchTools = {
111
151
  },
112
152
  gramps_find: {
113
153
  name: "gramps_find",
114
- description: "Full-text search across all Gramps records. " +
115
- "Use for finding people, places, sources, etc. by name or keyword. " +
116
- "Returns results from all entity types.",
154
+ description: "Full-text search across ALL entity types at once. " +
155
+ "USE FOR: Quick lookup by name, keyword, or ID when you don't know the entity type. " +
156
+ "RETURNS: Mixed results (people, places, sources, etc.) with handles. " +
157
+ "NEXT STEP: Use gramps_get with handle to retrieve full entity details.",
117
158
  inputSchema: {
118
159
  type: "object",
119
160
  properties: {
@@ -138,8 +179,10 @@ export const searchTools = {
138
179
  },
139
180
  gramps_get: {
140
181
  name: "gramps_get",
141
- description: "Get full details of a specific Gramps entity by its handle or Gramps ID. " +
142
- "Use after finding an entity with search to get complete information.",
182
+ description: "Retrieve complete details of a specific entity by handle or Gramps ID. " +
183
+ "USE FOR: Getting full record after finding entity in search results. " +
184
+ "REQUIRED: entity_type and handle (from search results). " +
185
+ "RETURNS: Complete entity data including all relationships and attributes.",
143
186
  inputSchema: {
144
187
  type: "object",
145
188
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"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"}