@graphite-atlas/mcp-server 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 (52) hide show
  1. package/EXAMPLES.md +501 -0
  2. package/LICENSE +21 -0
  3. package/README.md +440 -0
  4. package/dist/client.d.ts +272 -0
  5. package/dist/client.d.ts.map +1 -0
  6. package/dist/client.js +335 -0
  7. package/dist/client.js.map +1 -0
  8. package/dist/index.d.ts +16 -0
  9. package/dist/index.d.ts.map +1 -0
  10. package/dist/index.js +124 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/tools/analytics.d.ts +9 -0
  13. package/dist/tools/analytics.d.ts.map +1 -0
  14. package/dist/tools/analytics.js +374 -0
  15. package/dist/tools/analytics.js.map +1 -0
  16. package/dist/tools/atlases.d.ts +7 -0
  17. package/dist/tools/atlases.d.ts.map +1 -0
  18. package/dist/tools/atlases.js +132 -0
  19. package/dist/tools/atlases.js.map +1 -0
  20. package/dist/tools/batch.d.ts +10 -0
  21. package/dist/tools/batch.d.ts.map +1 -0
  22. package/dist/tools/batch.js +154 -0
  23. package/dist/tools/batch.js.map +1 -0
  24. package/dist/tools/brain-dump.d.ts +7 -0
  25. package/dist/tools/brain-dump.d.ts.map +1 -0
  26. package/dist/tools/brain-dump.js +98 -0
  27. package/dist/tools/brain-dump.js.map +1 -0
  28. package/dist/tools/index.d.ts +18 -0
  29. package/dist/tools/index.d.ts.map +1 -0
  30. package/dist/tools/index.js +29 -0
  31. package/dist/tools/index.js.map +1 -0
  32. package/dist/tools/mage.d.ts +10 -0
  33. package/dist/tools/mage.d.ts.map +1 -0
  34. package/dist/tools/mage.js +531 -0
  35. package/dist/tools/mage.js.map +1 -0
  36. package/dist/tools/paths.d.ts +7 -0
  37. package/dist/tools/paths.d.ts.map +1 -0
  38. package/dist/tools/paths.js +245 -0
  39. package/dist/tools/paths.js.map +1 -0
  40. package/dist/tools/points.d.ts +7 -0
  41. package/dist/tools/points.d.ts.map +1 -0
  42. package/dist/tools/points.js +225 -0
  43. package/dist/tools/points.js.map +1 -0
  44. package/dist/tools/validation.d.ts +9 -0
  45. package/dist/tools/validation.d.ts.map +1 -0
  46. package/dist/tools/validation.js +323 -0
  47. package/dist/tools/validation.js.map +1 -0
  48. package/dist/tools/views.d.ts +9 -0
  49. package/dist/tools/views.d.ts.map +1 -0
  50. package/dist/tools/views.js +335 -0
  51. package/dist/tools/views.js.map +1 -0
  52. package/package.json +62 -0
@@ -0,0 +1,531 @@
1
+ /**
2
+ * MAGE (Memgraph Advanced Graph Extensions) Algorithm Tools
3
+ *
4
+ * Provides production-grade graph algorithms using Memgraph's MAGE library.
5
+ * https://memgraph.com/docs/advanced-algorithms
6
+ */
7
+ import { z } from 'zod';
8
+ export function createMAGETools(client) {
9
+ return [
10
+ // PageRank - Production grade
11
+ {
12
+ name: 'mage_pagerank',
13
+ description: `Calculate PageRank using Memgraph's MAGE library (production-grade implementation).
14
+
15
+ PageRank identifies the most influential nodes based on the quality and quantity of connections. A node is important if important nodes point to it.
16
+
17
+ Use cases:
18
+ - Find most influential people in the organization
19
+ - Identify critical processes
20
+ - Discover authoritative information sources
21
+ - Rank systems by importance
22
+
23
+ NOTE: Requires MAGE library to be installed in your Memgraph instance.
24
+ Install with: CALL mage.load("pagerank") or install MAGE query modules.`,
25
+ inputSchema: {
26
+ type: 'object',
27
+ properties: {
28
+ atlas_id: {
29
+ type: 'string',
30
+ description: 'The atlas to analyze',
31
+ },
32
+ limit: {
33
+ type: 'number',
34
+ description: 'Number of top nodes to return (default: 20)',
35
+ minimum: 1,
36
+ maximum: 100,
37
+ },
38
+ damping_factor: {
39
+ type: 'number',
40
+ description: 'PageRank damping factor (default: 0.85)',
41
+ minimum: 0,
42
+ maximum: 1,
43
+ },
44
+ stop_epsilon: {
45
+ type: 'number',
46
+ description: 'Convergence threshold (default: 0.01)',
47
+ },
48
+ },
49
+ required: ['atlas_id'],
50
+ },
51
+ async execute(args) {
52
+ const schema = z.object({
53
+ atlas_id: z.string(),
54
+ limit: z.number().min(1).max(100).optional().default(20),
55
+ damping_factor: z.number().min(0).max(1).optional().default(0.85),
56
+ stop_epsilon: z.number().optional().default(0.01),
57
+ });
58
+ const { atlas_id, limit, damping_factor, stop_epsilon } = schema.parse(args);
59
+ // Run MAGE PageRank algorithm
60
+ // Note: Requires MAGE library installed in Memgraph
61
+ const query = `
62
+ CALL pagerank.rank() YIELD node, rank
63
+ WITH node, rank
64
+ WHERE node:Point AND node.atlasId = $atlasId AND node.deletedAt IS NULL
65
+ WITH node, rank
66
+ ORDER BY rank DESC
67
+ LIMIT $limit
68
+ RETURN node.id as id,
69
+ node.name as name,
70
+ node.type as type,
71
+ rank
72
+ `;
73
+ const results = await client.queryCypher(atlas_id, {
74
+ query,
75
+ parameters: { atlasId: atlas_id, limit },
76
+ });
77
+ return {
78
+ nodes: results.map((r, index) => ({
79
+ rank: index + 1,
80
+ id: r.id,
81
+ name: r.name,
82
+ type: r.type,
83
+ pagerank_score: r.rank,
84
+ })),
85
+ count: results.length,
86
+ algorithm: 'pagerank_mage',
87
+ parameters: { damping_factor, stop_epsilon },
88
+ interpretation: 'Higher PageRank = more influential/authoritative node',
89
+ };
90
+ },
91
+ },
92
+ // Betweenness Centrality - Production grade
93
+ {
94
+ name: 'mage_betweenness_centrality',
95
+ description: `Calculate betweenness centrality using MAGE (production-grade).
96
+
97
+ Identifies nodes that act as bridges in the network. High betweenness = critical connector that many paths go through.
98
+
99
+ Use cases:
100
+ - Find key people connecting different teams
101
+ - Identify bottleneck processes
102
+ - Detect single points of failure
103
+ - Understand information flow gatekeepers
104
+
105
+ This is the real algorithm with O(n³) complexity - may be slow on large graphs.`,
106
+ inputSchema: {
107
+ type: 'object',
108
+ properties: {
109
+ atlas_id: {
110
+ type: 'string',
111
+ description: 'The atlas to analyze',
112
+ },
113
+ limit: {
114
+ type: 'number',
115
+ description: 'Number of top nodes to return (default: 20)',
116
+ },
117
+ normalized: {
118
+ type: 'boolean',
119
+ description: 'Normalize scores (default: true)',
120
+ },
121
+ },
122
+ required: ['atlas_id'],
123
+ },
124
+ async execute(args) {
125
+ const schema = z.object({
126
+ atlas_id: z.string(),
127
+ limit: z.number().min(1).max(100).optional().default(20),
128
+ normalized: z.boolean().optional().default(true),
129
+ });
130
+ const { atlas_id, limit, normalized } = schema.parse(args);
131
+ // Run MAGE Betweenness Centrality
132
+ // Note: Requires MAGE library installed in Memgraph
133
+ const query = `
134
+ CALL betweenness_centrality.get()
135
+ YIELD node, betweenness_centrality
136
+ WITH node, betweenness_centrality
137
+ WHERE node:Point AND node.atlasId = $atlasId AND node.deletedAt IS NULL
138
+ WITH node, betweenness_centrality
139
+ ORDER BY betweenness_centrality DESC
140
+ LIMIT $limit
141
+ RETURN node.id as id,
142
+ node.name as name,
143
+ node.type as type,
144
+ betweenness_centrality
145
+ `;
146
+ const results = await client.queryCypher(atlas_id, {
147
+ query,
148
+ parameters: { atlasId: atlas_id, limit },
149
+ });
150
+ return {
151
+ nodes: results.map((r, index) => ({
152
+ rank: index + 1,
153
+ id: r.id,
154
+ name: r.name,
155
+ type: r.type,
156
+ betweenness_score: r.betweenness_centrality,
157
+ })),
158
+ count: results.length,
159
+ algorithm: 'betweenness_centrality_mage',
160
+ parameters: { normalized },
161
+ interpretation: 'Higher score = more critical bridge/connector node',
162
+ };
163
+ },
164
+ },
165
+ // Community Detection (Louvain/Leiden)
166
+ {
167
+ name: 'mage_detect_communities',
168
+ description: `Detect communities/clusters using Leiden algorithm (MAGE).
169
+
170
+ Identifies naturally forming groups or teams within your organization. Communities are groups of nodes with dense internal connections.
171
+
172
+ Use cases:
173
+ - Discover informal team structures
174
+ - Identify organizational silos
175
+ - Find collaboration clusters
176
+ - Understand departmental boundaries
177
+ - Detect cross-functional groups
178
+
179
+ Returns communities as node groups with community IDs.`,
180
+ inputSchema: {
181
+ type: 'object',
182
+ properties: {
183
+ atlas_id: {
184
+ type: 'string',
185
+ description: 'The atlas to analyze',
186
+ },
187
+ min_community_size: {
188
+ type: 'number',
189
+ description: 'Minimum nodes per community to include in results (default: 2)',
190
+ },
191
+ },
192
+ required: ['atlas_id'],
193
+ },
194
+ async execute(args) {
195
+ const schema = z.object({
196
+ atlas_id: z.string(),
197
+ min_community_size: z.number().optional().default(2),
198
+ });
199
+ const { atlas_id, min_community_size } = schema.parse(args);
200
+ // Run MAGE Louvain Community Detection
201
+ const query = `
202
+ CALL louvain.communities()
203
+ YIELD node, community_id
204
+ WITH node, community_id
205
+ WHERE node:Point AND node.atlasId = $atlasId AND node.deletedAt IS NULL
206
+ WITH community_id, collect(node) as nodeList
207
+ WHERE size(nodeList) >= $minSize
208
+ WITH community_id, nodeList,
209
+ [n IN nodeList | {id: n.id, name: n.name, type: n.type}] as nodes
210
+ WITH community_id, nodes, size(nodes) as size
211
+ ORDER BY size DESC
212
+ RETURN community_id, nodes, size
213
+ `;
214
+ const results = await client.queryCypher(atlas_id, {
215
+ query,
216
+ parameters: { atlasId: atlas_id, minSize: min_community_size },
217
+ });
218
+ return {
219
+ communities: results.map((r, index) => ({
220
+ community_id: r.community_id,
221
+ rank: index + 1,
222
+ size: r.size,
223
+ nodes: r.nodes,
224
+ })),
225
+ total_communities: results.length,
226
+ algorithm: 'leiden_community_detection_mage',
227
+ interpretation: 'Communities are groups with dense internal connections. Useful for understanding team structures.',
228
+ };
229
+ },
230
+ },
231
+ // Weakly Connected Components
232
+ {
233
+ name: 'mage_connected_components',
234
+ description: `Find disconnected subgraphs using Weakly Connected Components (MAGE).
235
+
236
+ Identifies separate "islands" in your graph - groups of nodes that have no paths to other groups.
237
+
238
+ Use cases:
239
+ - Find isolated departments with no cross-communication
240
+ - Detect data silos
241
+ - Identify separate business units
242
+ - Discover disconnected processes
243
+ - Quality check: ensure your graph is connected
244
+
245
+ Returns separate components as groups.`,
246
+ inputSchema: {
247
+ type: 'object',
248
+ properties: {
249
+ atlas_id: {
250
+ type: 'string',
251
+ description: 'The atlas to analyze',
252
+ },
253
+ },
254
+ required: ['atlas_id'],
255
+ },
256
+ async execute(args) {
257
+ const schema = z.object({
258
+ atlas_id: z.string(),
259
+ });
260
+ const { atlas_id } = schema.parse(args);
261
+ // Run MAGE Weakly Connected Components
262
+ // Note: Requires MAGE library installed in Memgraph
263
+ const query = `
264
+ CALL weakly_connected_components.get()
265
+ YIELD node, component_id
266
+ WITH node, component_id
267
+ WHERE node:Point AND node.atlasId = $atlasId AND node.deletedAt IS NULL
268
+ WITH component_id, collect(node) as nodeList
269
+ WITH component_id, nodeList,
270
+ [n IN nodeList | {id: n.id, name: n.name, type: n.type}] as nodes
271
+ WITH component_id, nodes, size(nodes) as size
272
+ ORDER BY size DESC
273
+ RETURN component_id, nodes, size
274
+ `;
275
+ const results = await client.queryCypher(atlas_id, {
276
+ query,
277
+ parameters: { atlasId: atlas_id },
278
+ });
279
+ const is_connected = results.length === 1;
280
+ return {
281
+ components: results.map((r, index) => ({
282
+ component_id: r.component_id,
283
+ rank: index + 1,
284
+ size: r.size,
285
+ nodes: r.nodes,
286
+ })),
287
+ total_components: results.length,
288
+ is_fully_connected: is_connected,
289
+ algorithm: 'weakly_connected_components_mage',
290
+ interpretation: is_connected
291
+ ? 'Graph is fully connected - all nodes can reach each other.'
292
+ : `Graph has ${results.length} disconnected components. These are separate islands with no connections between them.`,
293
+ };
294
+ },
295
+ },
296
+ // Node Similarity
297
+ {
298
+ name: 'mage_node_similarity',
299
+ description: `Find nodes similar to a given node using MAGE node similarity.
300
+
301
+ Compares nodes based on their connections. Similar nodes have similar neighbors.
302
+
303
+ Use cases:
304
+ - Find people with similar roles
305
+ - Identify processes that are structurally similar
306
+ - Discover alternative systems/tools
307
+ - Recommend similar entities
308
+ - Find comparable positions across departments
309
+
310
+ Returns nodes ranked by similarity score.`,
311
+ inputSchema: {
312
+ type: 'object',
313
+ properties: {
314
+ atlas_id: {
315
+ type: 'string',
316
+ description: 'The atlas to search',
317
+ },
318
+ node_id: {
319
+ type: 'string',
320
+ description: 'Reference node to find similar nodes for',
321
+ },
322
+ limit: {
323
+ type: 'number',
324
+ description: 'Number of similar nodes to return (default: 10)',
325
+ },
326
+ },
327
+ required: ['atlas_id', 'node_id'],
328
+ },
329
+ async execute(args) {
330
+ const schema = z.object({
331
+ atlas_id: z.string(),
332
+ node_id: z.string(),
333
+ limit: z.number().min(1).max(50).optional().default(10),
334
+ });
335
+ const { atlas_id, node_id, limit } = schema.parse(args);
336
+ // Run MAGE Node Similarity using Jaccard coefficient
337
+ const query = `
338
+ MATCH (target:Point {id: $nodeId, atlasId: $atlasId})
339
+ WHERE target.deletedAt IS NULL
340
+ CALL node_similarity.jaccard(target)
341
+ YIELD node, similarity
342
+ WITH node, similarity
343
+ WHERE node:Point AND node.atlasId = $atlasId AND node.deletedAt IS NULL
344
+ AND node.id <> $nodeId
345
+ WITH node, similarity
346
+ ORDER BY similarity DESC
347
+ LIMIT $limit
348
+ RETURN node.id as id,
349
+ node.name as name,
350
+ node.type as type,
351
+ similarity
352
+ `;
353
+ const results = await client.queryCypher(atlas_id, {
354
+ query,
355
+ parameters: { atlasId: atlas_id, nodeId: node_id, limit },
356
+ });
357
+ return {
358
+ reference_node: node_id,
359
+ similar_nodes: results.map((r, index) => ({
360
+ rank: index + 1,
361
+ id: r.id,
362
+ name: r.name,
363
+ type: r.type,
364
+ similarity_score: r.similarity,
365
+ })),
366
+ count: results.length,
367
+ algorithm: 'node_similarity_jaccard_mage',
368
+ interpretation: 'Similarity based on shared connections. 1.0 = identical neighbors, 0.0 = no shared neighbors.',
369
+ };
370
+ },
371
+ },
372
+ // Shortest Path
373
+ {
374
+ name: 'mage_shortest_path',
375
+ description: `Find shortest path between two nodes using MAGE.
376
+
377
+ Discovers the minimum number of hops needed to connect two entities.
378
+
379
+ Use cases:
380
+ - "How is Person A connected to Person B?"
381
+ - "What's the chain of command from this role to CEO?"
382
+ - "How does this process connect to that outcome?"
383
+ - "What's the relationship path between these systems?"
384
+
385
+ Returns the shortest path with all intermediate nodes.`,
386
+ inputSchema: {
387
+ type: 'object',
388
+ properties: {
389
+ atlas_id: {
390
+ type: 'string',
391
+ description: 'The atlas to search',
392
+ },
393
+ source_id: {
394
+ type: 'string',
395
+ description: 'Starting node ID',
396
+ },
397
+ target_id: {
398
+ type: 'string',
399
+ description: 'Destination node ID',
400
+ },
401
+ },
402
+ required: ['atlas_id', 'source_id', 'target_id'],
403
+ },
404
+ async execute(args) {
405
+ const schema = z.object({
406
+ atlas_id: z.string(),
407
+ source_id: z.string(),
408
+ target_id: z.string(),
409
+ });
410
+ const { atlas_id, source_id, target_id } = schema.parse(args);
411
+ // Use Memgraph's BFS shortest path
412
+ const query = `
413
+ MATCH (source:Point {id: $sourceId, atlasId: $atlasId})
414
+ MATCH (target:Point {id: $targetId, atlasId: $atlasId})
415
+ WHERE source.deletedAt IS NULL AND target.deletedAt IS NULL
416
+ MATCH path = (source)-[:PATH*bfs..15]-(target)
417
+ WITH path
418
+ UNWIND nodes(path) as pathNode
419
+ WITH path, collect({id: pathNode.id, name: pathNode.name, type: pathNode.type}) as path_nodes
420
+ UNWIND relationships(path) as pathRel
421
+ WITH path, path_nodes, collect({type: pathRel.name}) as path_relationships
422
+ WITH path_nodes, path_relationships, size(relationships(path)) as distance
423
+ RETURN path_nodes, path_relationships, distance
424
+ LIMIT 1
425
+ `;
426
+ const results = await client.queryCypher(atlas_id, {
427
+ query,
428
+ parameters: {
429
+ atlasId: atlas_id,
430
+ sourceId: source_id,
431
+ targetId: target_id,
432
+ },
433
+ });
434
+ if (results.length === 0) {
435
+ return {
436
+ source_id,
437
+ target_id,
438
+ path_found: false,
439
+ message: 'No path exists between these nodes. They are in disconnected components.',
440
+ };
441
+ }
442
+ const result = results[0];
443
+ return {
444
+ source_id,
445
+ target_id,
446
+ path_found: true,
447
+ distance: result.distance,
448
+ path: result.path_nodes,
449
+ relationships: result.path_relationships,
450
+ algorithm: 'shortest_path_mage',
451
+ interpretation: `Shortest path has ${result.distance} hop(s)`,
452
+ };
453
+ },
454
+ },
455
+ // Degree Centrality
456
+ {
457
+ name: 'mage_degree_centrality',
458
+ description: `Calculate degree centrality using MAGE.
459
+
460
+ Identifies most connected nodes (nodes with the most direct connections).
461
+
462
+ Use cases:
463
+ - Find most connected people (social hubs)
464
+ - Identify central processes
465
+ - Discover highly-used systems
466
+ - Find nodes with most dependencies
467
+
468
+ Returns nodes ranked by number of connections.`,
469
+ inputSchema: {
470
+ type: 'object',
471
+ properties: {
472
+ atlas_id: {
473
+ type: 'string',
474
+ description: 'The atlas to analyze',
475
+ },
476
+ limit: {
477
+ type: 'number',
478
+ description: 'Number of top nodes to return (default: 20)',
479
+ },
480
+ type: {
481
+ type: 'string',
482
+ description: 'Type of degree: in, out, or both (default: both)',
483
+ enum: ['in', 'out', 'both'],
484
+ },
485
+ },
486
+ required: ['atlas_id'],
487
+ },
488
+ async execute(args) {
489
+ const schema = z.object({
490
+ atlas_id: z.string(),
491
+ limit: z.number().min(1).max(100).optional().default(20),
492
+ type: z.enum(['in', 'out', 'both']).optional().default('both'),
493
+ });
494
+ const { atlas_id, limit, type } = schema.parse(args);
495
+ // Run MAGE Degree Centrality
496
+ // Note: Requires MAGE library installed in Memgraph
497
+ const query = `
498
+ CALL degree_centrality.get()
499
+ YIELD node, degree
500
+ WITH node, degree
501
+ WHERE node:Point AND node.atlasId = $atlasId AND node.deletedAt IS NULL
502
+ WITH node, degree
503
+ ORDER BY degree DESC
504
+ LIMIT $limit
505
+ RETURN node.id as id,
506
+ node.name as name,
507
+ node.type as type,
508
+ degree
509
+ `;
510
+ const results = await client.queryCypher(atlas_id, {
511
+ query,
512
+ parameters: { atlasId: atlas_id, limit },
513
+ });
514
+ return {
515
+ nodes: results.map((r, index) => ({
516
+ rank: index + 1,
517
+ id: r.id,
518
+ name: r.name,
519
+ type: r.type,
520
+ degree: r.degree,
521
+ })),
522
+ count: results.length,
523
+ algorithm: 'degree_centrality_mage',
524
+ degree_type: type,
525
+ interpretation: 'Higher degree = more direct connections',
526
+ };
527
+ },
528
+ },
529
+ ];
530
+ }
531
+ //# sourceMappingURL=mage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mage.js","sourceRoot":"","sources":["../../src/tools/mage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Path (Edge/Relationship) Management Tools
3
+ */
4
+ import { GraphiteAtlasClient } from '../client.js';
5
+ import { MCPTool } from './index.js';
6
+ export declare function createPathTools(client: GraphiteAtlasClient): MCPTool[];
7
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/tools/paths.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGrC,wBAAgB,eAAe,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,EAAE,CA0PtE"}