@henrychong-ai/mcp-neo4j-knowledge-graph 2.3.1 → 2.3.2
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/index.js +2 -58
- package/dist/index.js.map +1 -1
- package/dist/server/setup.js +1 -1
- package/dist/storage/createAdaptedStorageProvider.d.ts +15 -0
- package/dist/storage/createAdaptedStorageProvider.js +76 -0
- package/dist/storage/createAdaptedStorageProvider.js.map +1 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@ import { EmbeddingServiceFactory } from './embeddings/EmbeddingServiceFactory.js
|
|
|
7
7
|
import { KnowledgeGraphManager } from './KnowledgeGraphManager.js';
|
|
8
8
|
import { PrometheusMetrics } from './metrics/PrometheusMetrics.js';
|
|
9
9
|
import { setupServer } from './server/setup.js';
|
|
10
|
+
import { createAdaptedStorageProvider } from './storage/createAdaptedStorageProvider.js';
|
|
10
11
|
import { logger } from './utils/logger.js';
|
|
11
12
|
// Re-export the types and classes for use in other modules
|
|
12
13
|
export * from './KnowledgeGraphManager.js';
|
|
@@ -49,64 +50,7 @@ try {
|
|
|
49
50
|
model: embeddingService.getModelInfo().name,
|
|
50
51
|
storageType: process.env.MEMORY_STORAGE_TYPE || 'neo4j',
|
|
51
52
|
});
|
|
52
|
-
|
|
53
|
-
// Create a compatible wrapper for the Neo4j storage provider
|
|
54
|
-
const adaptedStorageProvider = {
|
|
55
|
-
...storageProvider,
|
|
56
|
-
// Add a fake db with exec function for compatibility
|
|
57
|
-
db: {
|
|
58
|
-
exec: (sql) => {
|
|
59
|
-
logger.debug(`Neo4j adapter: Received SQL: ${sql}`);
|
|
60
|
-
// No-op, just for compatibility
|
|
61
|
-
return null;
|
|
62
|
-
},
|
|
63
|
-
prepare: () => ({
|
|
64
|
-
run: () => null,
|
|
65
|
-
all: () => [],
|
|
66
|
-
get: () => null,
|
|
67
|
-
}),
|
|
68
|
-
},
|
|
69
|
-
// Make sure getEntity is available
|
|
70
|
-
getEntity: async (name) => {
|
|
71
|
-
if (typeof storageProvider.getEntity === 'function') {
|
|
72
|
-
return storageProvider.getEntity(name);
|
|
73
|
-
}
|
|
74
|
-
const result = await storageProvider.openNodes([name]);
|
|
75
|
-
return result.entities[0] || null;
|
|
76
|
-
},
|
|
77
|
-
// Make sure storeEntityVector is available
|
|
78
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
79
|
-
storeEntityVector: async (name, embedding) => {
|
|
80
|
-
logger.debug(`Neo4j adapter: storeEntityVector called for ${name}`, {
|
|
81
|
-
embeddingType: typeof embedding,
|
|
82
|
-
vectorLength: embedding?.vector?.length || 'no vector',
|
|
83
|
-
model: embedding?.model || 'no model',
|
|
84
|
-
});
|
|
85
|
-
// Ensure embedding has the correct format
|
|
86
|
-
const formattedEmbedding = {
|
|
87
|
-
vector: embedding.vector || embedding,
|
|
88
|
-
model: embedding.model || 'unknown',
|
|
89
|
-
lastUpdated: embedding.lastUpdated || Date.now(),
|
|
90
|
-
};
|
|
91
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
92
|
-
if (typeof storageProvider.updateEntityEmbedding === 'function') {
|
|
93
|
-
try {
|
|
94
|
-
logger.debug(`Neo4j adapter: Using updateEntityEmbedding for ${name}`);
|
|
95
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
96
|
-
return await storageProvider.updateEntityEmbedding(name, formattedEmbedding);
|
|
97
|
-
}
|
|
98
|
-
catch (error) {
|
|
99
|
-
logger.error(`Neo4j adapter: Error in storeEntityVector for ${name}`, error);
|
|
100
|
-
throw error;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
const errorMsg = `Neo4j adapter: Neither storeEntityVector nor updateEntityEmbedding implemented for ${name}`;
|
|
105
|
-
logger.error(errorMsg);
|
|
106
|
-
throw new Error(errorMsg);
|
|
107
|
-
}
|
|
108
|
-
},
|
|
109
|
-
};
|
|
53
|
+
const adaptedStorageProvider = createAdaptedStorageProvider(storageProvider);
|
|
110
54
|
// Create the embedding job manager with adapted storage provider
|
|
111
55
|
embeddingJobManager = new EmbeddingJobManager(
|
|
112
56
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,2DAA2D;AAC3D,cAAc,4BAA4B,CAAC;AAG3C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,sDAAsD;AACtD,MAAM,eAAe,GAAG,yBAAyB,EAAE,CAAC;AAEpD,wEAAwE;AACxE,MAAM,sBAAsB,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,OAAO,CAAC;AAChF,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,YAAY,CAAC;AAElF,qFAAqF;AACrF,IAAI,iBAAiB,GAA6B,IAAI,CAAC;AAEvD,wEAAwE;AACxE,IAAI,mBAAoD,CAAC;AACzD,IAAI,CAAC;IACH,2CAA2C;IAC3C,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;IACvE,MAAM,CAAC,KAAK,CAAC,2BAA2B,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,SAAS,EAAE,CAAC,CAAC;IAC3F,MAAM,CAAC,KAAK,CAAC,0BAA0B,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,SAAS,EAAE,CAAC,CAAC;IAEvF,4DAA4D;IAC5D,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IAC1E,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CACT,6FAA6F,CAC9F,CAAC;IACJ,CAAC;IAED,mCAAmC;IACnC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,qBAAqB,EAAE,CAAC;IACzE,MAAM,CAAC,KAAK,CAAC,iCAAiC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;IAEjG,gFAAgF;IAChF,MAAM,kBAAkB,GAAG;QACzB,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,2BAA2B;YACxD,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,EAAE,CAAC;YAC9D,CAAC,CAAC,EAAE,EAAE,kCAAkC;QAC1C,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,6BAA6B;YACjD,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,EAAE,CAAC;YAChE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,oBAAoB;KACpC,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE;QAC9C,kBAAkB;QAClB,KAAK,EAAE,gBAAgB,CAAC,YAAY,EAAE,CAAC,IAAI;QAC3C,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO;KACxD,CAAC,CAAC;IAEH,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/server/setup.js
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { StorageProvider } from './StorageProvider.js';
|
|
2
|
+
/**
|
|
3
|
+
* Wraps a `StorageProvider` (typically `Neo4jStorageProvider`) into a shape
|
|
4
|
+
* `EmbeddingJobManager` expects: a `.db` shim (it was originally written
|
|
5
|
+
* against better-sqlite3) plus explicit method forwarders.
|
|
6
|
+
*
|
|
7
|
+
* Why method forwarders are explicit: object spread (`...storageProvider`) only
|
|
8
|
+
* copies OWN enumerable properties — class methods defined on the prototype are
|
|
9
|
+
* silently dropped. `EmbeddingJobManager.scheduleIncrementalRegeneration` calls
|
|
10
|
+
* `loadGraph` on the wrapper, and without an explicit forwarder it would throw
|
|
11
|
+
* `Storage provider does not support getAllEntities or loadGraph`. v2.3.2
|
|
12
|
+
* fixed exactly this gap (was silently breaking the daily backfill cron all the
|
|
13
|
+
* way back to v1.x).
|
|
14
|
+
*/
|
|
15
|
+
export declare function createAdaptedStorageProvider(storageProvider: StorageProvider): any;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { logger } from '../utils/logger.js';
|
|
2
|
+
/**
|
|
3
|
+
* Wraps a `StorageProvider` (typically `Neo4jStorageProvider`) into a shape
|
|
4
|
+
* `EmbeddingJobManager` expects: a `.db` shim (it was originally written
|
|
5
|
+
* against better-sqlite3) plus explicit method forwarders.
|
|
6
|
+
*
|
|
7
|
+
* Why method forwarders are explicit: object spread (`...storageProvider`) only
|
|
8
|
+
* copies OWN enumerable properties — class methods defined on the prototype are
|
|
9
|
+
* silently dropped. `EmbeddingJobManager.scheduleIncrementalRegeneration` calls
|
|
10
|
+
* `loadGraph` on the wrapper, and without an explicit forwarder it would throw
|
|
11
|
+
* `Storage provider does not support getAllEntities or loadGraph`. v2.3.2
|
|
12
|
+
* fixed exactly this gap (was silently breaking the daily backfill cron all the
|
|
13
|
+
* way back to v1.x).
|
|
14
|
+
*/
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
16
|
+
export function createAdaptedStorageProvider(storageProvider) {
|
|
17
|
+
return {
|
|
18
|
+
...storageProvider,
|
|
19
|
+
// SQLite-compatible no-op `.db` shim (EmbeddingJobManager initializes its
|
|
20
|
+
// own embedding_jobs table; with Neo4j there's no SQL DB on this side).
|
|
21
|
+
db: {
|
|
22
|
+
exec: (sql) => {
|
|
23
|
+
logger.debug(`Neo4j adapter: Received SQL: ${sql}`);
|
|
24
|
+
return null;
|
|
25
|
+
},
|
|
26
|
+
prepare: () => ({
|
|
27
|
+
run: () => null,
|
|
28
|
+
all: () => [],
|
|
29
|
+
get: () => null,
|
|
30
|
+
}),
|
|
31
|
+
},
|
|
32
|
+
// Forward loadGraph so _getAllEntitiesFromStorage works.
|
|
33
|
+
loadGraph: async () => {
|
|
34
|
+
if (typeof storageProvider.loadGraph === 'function') {
|
|
35
|
+
return storageProvider.loadGraph();
|
|
36
|
+
}
|
|
37
|
+
throw new Error('Underlying storage provider has no loadGraph method');
|
|
38
|
+
},
|
|
39
|
+
getEntity: async (name) => {
|
|
40
|
+
if (typeof storageProvider.getEntity === 'function') {
|
|
41
|
+
return storageProvider.getEntity(name);
|
|
42
|
+
}
|
|
43
|
+
const result = await storageProvider.openNodes([name]);
|
|
44
|
+
return result.entities[0] || null;
|
|
45
|
+
},
|
|
46
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
47
|
+
storeEntityVector: async (name, embedding) => {
|
|
48
|
+
logger.debug(`Neo4j adapter: storeEntityVector called for ${name}`, {
|
|
49
|
+
embeddingType: typeof embedding,
|
|
50
|
+
vectorLength: embedding?.vector?.length || 'no vector',
|
|
51
|
+
model: embedding?.model || 'no model',
|
|
52
|
+
});
|
|
53
|
+
const formattedEmbedding = {
|
|
54
|
+
vector: embedding.vector || embedding,
|
|
55
|
+
model: embedding.model || 'unknown',
|
|
56
|
+
lastUpdated: embedding.lastUpdated || Date.now(),
|
|
57
|
+
};
|
|
58
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
59
|
+
if (typeof storageProvider.updateEntityEmbedding === 'function') {
|
|
60
|
+
try {
|
|
61
|
+
logger.debug(`Neo4j adapter: Using updateEntityEmbedding for ${name}`);
|
|
62
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
63
|
+
return await storageProvider.updateEntityEmbedding(name, formattedEmbedding);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
logger.error(`Neo4j adapter: Error in storeEntityVector for ${name}`, error);
|
|
67
|
+
throw error;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const errorMsg = `Neo4j adapter: Neither storeEntityVector nor updateEntityEmbedding implemented for ${name}`;
|
|
71
|
+
logger.error(errorMsg);
|
|
72
|
+
throw new Error(errorMsg);
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=createAdaptedStorageProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createAdaptedStorageProvider.js","sourceRoot":"","sources":["../../src/storage/createAdaptedStorageProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C;;;;;;;;;;;;GAYG;AACH,8DAA8D;AAC9D,MAAM,UAAU,4BAA4B,CAAC,eAAgC;IAC3E,OAAO;QACL,GAAG,eAAe;QAElB,0EAA0E;QAC1E,wEAAwE;QACxE,EAAE,EAAE;YACF,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE;gBACpB,MAAM,CAAC,KAAK,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;gBACpD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;gBACd,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI;gBACf,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE;gBACb,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI;aAChB,CAAC;SACH;QAED,yDAAyD;QACzD,SAAS,EAAE,KAAK,IAAI,EAAE;YACpB,IAAI,OAAO,eAAe,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;gBACpD,OAAO,eAAe,CAAC,SAAS,EAAE,CAAC;YACrC,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QAED,SAAS,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;YAChC,IAAI,OAAO,eAAe,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;gBACpD,OAAO,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACvD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QACpC,CAAC;QAED,8DAA8D;QAC9D,iBAAiB,EAAE,KAAK,EAAE,IAAY,EAAE,SAAc,EAAE,EAAE;YACxD,MAAM,CAAC,KAAK,CAAC,+CAA+C,IAAI,EAAE,EAAE;gBAClE,aAAa,EAAE,OAAO,SAAS;gBAC/B,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,IAAI,WAAW;gBACtD,KAAK,EAAE,SAAS,EAAE,KAAK,IAAI,UAAU;aACtC,CAAC,CAAC;YAEH,MAAM,kBAAkB,GAAG;gBACzB,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,SAAS;gBACrC,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,SAAS;gBACnC,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE;aACjD,CAAC;YAEF,8DAA8D;YAC9D,IAAI,OAAQ,eAAuB,CAAC,qBAAqB,KAAK,UAAU,EAAE,CAAC;gBACzE,IAAI,CAAC;oBACH,MAAM,CAAC,KAAK,CAAC,kDAAkD,IAAI,EAAE,CAAC,CAAC;oBACvE,8DAA8D;oBAC9D,OAAO,MAAO,eAAuB,CAAC,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;gBACxF,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,CAAC,KAAK,CAAC,iDAAiD,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;oBAC7E,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;YACD,MAAM,QAAQ,GAAG,sFAAsF,IAAI,EAAE,CAAC;YAC9G,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@henrychong-ai/mcp-neo4j-knowledge-graph",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.2",
|
|
4
4
|
"description": "Neo4j-based knowledge graph MCP server with temporal versioning and semantic search",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Henry Chong <henry@henrychong.ai>",
|