@henrychong-ai/mcp-neo4j-knowledge-graph 1.1.2 → 1.1.3

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.
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CLI tool for generating embeddings for entities in the knowledge graph
4
+ *
5
+ * Usage:
6
+ * npm run embeddings:generate # Generate for all entities without embeddings
7
+ * npm run embeddings:generate -- --limit 10 # Test with first 10 entities
8
+ * npm run embeddings:generate -- --force # Regenerate all embeddings (even if exist)
9
+ *
10
+ * Requirements:
11
+ * - OPENAI_API_KEY environment variable must be set
12
+ * - Neo4j connection configured (NEO4J_URI, NEO4J_USERNAME, NEO4J_PASSWORD)
13
+ */
14
+ interface GenerateEmbeddingsOptions {
15
+ limit?: number;
16
+ force?: boolean;
17
+ batchSize?: number;
18
+ }
19
+ /**
20
+ * Generate embeddings for entities in the knowledge graph
21
+ */
22
+ declare function generateEmbeddings(options?: GenerateEmbeddingsOptions): Promise<void>;
23
+ export { generateEmbeddings };
@@ -0,0 +1,218 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CLI tool for generating embeddings for entities in the knowledge graph
4
+ *
5
+ * Usage:
6
+ * npm run embeddings:generate # Generate for all entities without embeddings
7
+ * npm run embeddings:generate -- --limit 10 # Test with first 10 entities
8
+ * npm run embeddings:generate -- --force # Regenerate all embeddings (even if exist)
9
+ *
10
+ * Requirements:
11
+ * - OPENAI_API_KEY environment variable must be set
12
+ * - Neo4j connection configured (NEO4J_URI, NEO4J_USERNAME, NEO4J_PASSWORD)
13
+ */
14
+ import { Neo4jStorageProvider } from '../storage/neo4j/Neo4jStorageProvider.js';
15
+ import { EmbeddingServiceFactory } from '../embeddings/EmbeddingServiceFactory.js';
16
+ import dotenv from 'dotenv';
17
+ // Load environment variables
18
+ dotenv.config();
19
+ /**
20
+ * Parse command line arguments
21
+ */
22
+ function parseArgs() {
23
+ const args = process.argv.slice(2);
24
+ const options = {
25
+ batchSize: 10, // Process 10 entities at a time
26
+ };
27
+ for (let i = 0; i < args.length; i++) {
28
+ switch (args[i]) {
29
+ case '--limit':
30
+ options.limit = parseInt(args[++i], 10);
31
+ break;
32
+ case '--force':
33
+ options.force = true;
34
+ break;
35
+ case '--batch-size':
36
+ options.batchSize = parseInt(args[++i], 10);
37
+ break;
38
+ case '--help':
39
+ printHelp();
40
+ process.exit(0);
41
+ }
42
+ }
43
+ return options;
44
+ }
45
+ /**
46
+ * Print help message
47
+ */
48
+ function printHelp() {
49
+ console.log(`
50
+ Generate Embeddings CLI Tool
51
+
52
+ Usage:
53
+ npm run embeddings:generate [options]
54
+
55
+ Options:
56
+ --limit <n> Generate embeddings for first N entities only (for testing)
57
+ --force Regenerate embeddings even if they already exist
58
+ --batch-size <n> Number of entities to process in each batch (default: 10)
59
+ --help Show this help message
60
+
61
+ Environment Variables:
62
+ OPENAI_API_KEY Required: Your OpenAI API key
63
+ NEO4J_URI Neo4j connection URI (default: bolt://localhost:7687)
64
+ NEO4J_USERNAME Neo4j username (default: neo4j)
65
+ NEO4J_PASSWORD Neo4j password
66
+
67
+ Examples:
68
+ npm run embeddings:generate # Generate for all entities
69
+ npm run embeddings:generate -- --limit 5 # Test with 5 entities first
70
+ npm run embeddings:generate -- --force # Regenerate all
71
+ `);
72
+ }
73
+ /**
74
+ * Generate embeddings for entities in the knowledge graph
75
+ */
76
+ async function generateEmbeddings(options = {}) {
77
+ console.log('\nšŸš€ Starting embedding generation...\n');
78
+ // Validate OpenAI API key
79
+ if (!process.env.OPENAI_API_KEY) {
80
+ console.error('āŒ Error: OPENAI_API_KEY environment variable is not set');
81
+ console.error(' Please set your OpenAI API key:');
82
+ console.error(' export OPENAI_API_KEY=sk-your-key-here\n');
83
+ process.exit(1);
84
+ }
85
+ // Create storage provider
86
+ console.log('šŸ“Š Connecting to Neo4j...');
87
+ const storageProvider = new Neo4jStorageProvider({
88
+ config: {
89
+ uri: process.env.NEO4J_URI || 'bolt://localhost:7687',
90
+ username: process.env.NEO4J_USERNAME || 'neo4j',
91
+ password: process.env.NEO4J_PASSWORD || '',
92
+ database: process.env.NEO4J_DATABASE || 'neo4j',
93
+ },
94
+ });
95
+ try {
96
+ // Create embedding service
97
+ console.log('šŸ¤– Initializing OpenAI embedding service...');
98
+ const embeddingService = EmbeddingServiceFactory.createFromEnvironment();
99
+ const modelInfo = embeddingService.getProviderInfo();
100
+ console.log(` Provider: ${modelInfo.provider}`);
101
+ console.log(` Model: ${modelInfo.model}`);
102
+ console.log(` Dimensions: ${modelInfo.dimensions}\n`);
103
+ // Query entities
104
+ const whereClause = options.force
105
+ ? 'WHERE e.validTo IS NULL'
106
+ : 'WHERE e.validTo IS NULL AND (e.embedding IS NULL OR size(e.embedding) = 0)';
107
+ const limitClause = options.limit ? `LIMIT ${options.limit}` : '';
108
+ console.log('šŸ” Querying entities without embeddings...');
109
+ const query = `
110
+ MATCH (e:Entity)
111
+ ${whereClause}
112
+ RETURN e.name AS name, e.observations AS observations, e.entityType AS entityType
113
+ ORDER BY e.name
114
+ ${limitClause}
115
+ `;
116
+ const connectionManager = storageProvider.getConnectionManager();
117
+ const result = await connectionManager.executeQuery(query, {});
118
+ const entities = result.records.map((record) => ({
119
+ name: record.get('name'),
120
+ observations: record.get('observations'),
121
+ entityType: record.get('entityType'),
122
+ }));
123
+ if (entities.length === 0) {
124
+ console.log('āœ… All entities already have embeddings!\n');
125
+ await storageProvider.close();
126
+ return;
127
+ }
128
+ console.log(` Found ${entities.length} entities to process\n`);
129
+ // Process in batches
130
+ const batchSize = options.batchSize || 10;
131
+ let processed = 0;
132
+ let succeeded = 0;
133
+ let failed = 0;
134
+ for (let i = 0; i < entities.length; i += batchSize) {
135
+ const batch = entities.slice(i, Math.min(i + batchSize, entities.length));
136
+ const batchNum = Math.floor(i / batchSize) + 1;
137
+ const totalBatches = Math.ceil(entities.length / batchSize);
138
+ console.log(`šŸ“¦ Processing batch ${batchNum}/${totalBatches} (${batch.length} entities)...`);
139
+ for (const entity of batch) {
140
+ try {
141
+ // Prepare text from observations
142
+ const observations = Array.isArray(entity.observations)
143
+ ? entity.observations
144
+ : JSON.parse(entity.observations || '[]');
145
+ const text = observations.join('\n');
146
+ if (!text || text.trim().length === 0) {
147
+ console.log(` āš ļø Skipping ${entity.name}: no observations`);
148
+ processed++;
149
+ continue;
150
+ }
151
+ // Generate embedding
152
+ const embedding = await embeddingService.generateEmbedding(text);
153
+ // Update entity
154
+ const updateQuery = `
155
+ MATCH (e:Entity {name: $name})
156
+ WHERE e.validTo IS NULL
157
+ SET e.embedding = $embedding, e.updatedAt = $now
158
+ RETURN e.name
159
+ `;
160
+ await connectionManager.executeQuery(updateQuery, {
161
+ name: entity.name,
162
+ embedding,
163
+ now: Date.now(),
164
+ });
165
+ console.log(` āœ… ${entity.name} (${entity.entityType})`);
166
+ succeeded++;
167
+ }
168
+ catch (error) {
169
+ console.error(` āŒ Failed: ${entity.name}`);
170
+ console.error(` Error: ${error instanceof Error ? error.message : String(error)}`);
171
+ failed++;
172
+ }
173
+ processed++;
174
+ }
175
+ // Progress summary
176
+ const progress = ((processed / entities.length) * 100).toFixed(1);
177
+ console.log(` Progress: ${processed}/${entities.length} (${progress}%)\n`);
178
+ // Rate limiting: small delay between batches
179
+ if (i + batchSize < entities.length) {
180
+ await new Promise((resolve) => setTimeout(resolve, 1000));
181
+ }
182
+ }
183
+ // Final summary
184
+ console.log('═══════════════════════════════════════════════════');
185
+ console.log('šŸ“Š Embedding Generation Complete!');
186
+ console.log('═══════════════════════════════════════════════════');
187
+ console.log(` Total processed: ${processed}`);
188
+ console.log(` āœ… Succeeded: ${succeeded}`);
189
+ if (failed > 0) {
190
+ console.log(` āŒ Failed: ${failed}`);
191
+ }
192
+ console.log('═══════════════════════════════════════════════════\n');
193
+ // Calculate estimated cost
194
+ const avgTokensPerEntity = 200; // Conservative estimate
195
+ const totalTokens = succeeded * avgTokensPerEntity;
196
+ const costPer1MTokens = 0.02; // text-embedding-3-small
197
+ const estimatedCost = (totalTokens / 1000000) * costPer1MTokens;
198
+ console.log(`šŸ’° Estimated cost: $${estimatedCost.toFixed(4)} USD`);
199
+ console.log(` (${totalTokens.toLocaleString()} tokens Ɨ $${costPer1MTokens}/1M tokens)\n`);
200
+ }
201
+ catch (error) {
202
+ console.error('\nāŒ Fatal error:', error);
203
+ process.exit(1);
204
+ }
205
+ finally {
206
+ await storageProvider.close();
207
+ }
208
+ }
209
+ // Main execution
210
+ if (import.meta.url === `file://${process.argv[1]}`) {
211
+ const options = parseArgs();
212
+ generateEmbeddings(options).catch((error) => {
213
+ console.error('Unhandled error:', error);
214
+ process.exit(1);
215
+ });
216
+ }
217
+ export { generateEmbeddings };
218
+ //# sourceMappingURL=generate-embeddings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-embeddings.js","sourceRoot":"","sources":["../../src/cli/generate-embeddings.ts"],"names":[],"mappings":"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"}
@@ -88,6 +88,35 @@ export class Neo4jSchemaManager {
88
88
  async createEntityConstraints(recreate = false) {
89
89
  this.log('Creating entity name constraint...');
90
90
  const constraintName = 'entity_name';
91
+ // Check for conflicting constraints on Entity nodes with 'name' property
92
+ const allConstraints = await this.listConstraints();
93
+ const entityConstraints = allConstraints.filter((c) => {
94
+ // Neo4j returns either 'labelsOrTypes' or 'entityType' depending on version
95
+ const label = c.labelsOrTypes || c.entityType;
96
+ const properties = c.properties;
97
+ return ((label === 'Entity' || (Array.isArray(label) && label.includes('Entity'))) &&
98
+ Array.isArray(properties) &&
99
+ properties.includes('name'));
100
+ });
101
+ // Warn about conflicting constraints
102
+ let hasConflicts = false;
103
+ for (const constraint of entityConstraints) {
104
+ if (constraint.name !== constraintName) {
105
+ hasConflicts = true;
106
+ this.log(`āš ļø WARNING: Found conflicting Entity constraint: ${constraint.name}`);
107
+ this.log(` Properties: ${JSON.stringify(constraint.properties)}`);
108
+ if (recreate) {
109
+ this.log(` Dropping conflicting constraint: ${constraint.name}`);
110
+ await this.dropConstraintIfExists(constraint.name);
111
+ }
112
+ else {
113
+ this.log(` Run with recreate=true to automatically remove conflicting constraints`);
114
+ }
115
+ }
116
+ }
117
+ if (hasConflicts && !recreate) {
118
+ this.log('āš ļø Conflicting constraints detected. Use npm run neo4j:init with recreate=true to fix automatically.');
119
+ }
91
120
  if (recreate) {
92
121
  await this.dropConstraintIfExists(constraintName);
93
122
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Neo4jSchemaManager.js","sourceRoot":"","sources":["../../../src/storage/neo4j/Neo4jSchemaManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Neo4jSchemaManager.js","sourceRoot":"","sources":["../../../src/storage/neo4j/Neo4jSchemaManager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@henrychong-ai/mcp-neo4j-knowledge-graph",
3
- "version": "1.1.2",
3
+ "version": "1.1.3",
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>",
@@ -46,7 +46,9 @@
46
46
  "format": "prettier --write \"**/*.{ts,json,md}\"",
47
47
  "fix": "npm run lint:fix && npm run format",
48
48
  "neo4j:init": "tsx src/cli/neo4j-setup.ts init",
49
- "neo4j:test": "tsx src/cli/neo4j-setup.ts test"
49
+ "neo4j:test": "tsx src/cli/neo4j-setup.ts test",
50
+ "embeddings:generate": "tsx src/cli/generate-embeddings.ts",
51
+ "embeddings:test": "tsx src/cli/generate-embeddings.ts -- --limit 5"
50
52
  },
51
53
  "dependencies": {
52
54
  "@modelcontextprotocol/sdk": "1.11.0",