memory-journal-mcp 4.3.0 → 4.4.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.
- package/.dockerignore +131 -122
- package/.gitattributes +29 -0
- package/.github/workflows/docker-publish.yml +1 -1
- package/.github/workflows/lint-and-test.yml +1 -2
- package/.github/workflows/secrets-scanning.yml +0 -1
- package/.github/workflows/security-update.yml +6 -6
- package/.vscode/settings.json +17 -15
- package/CHANGELOG.md +1065 -11
- package/DOCKER_README.md +51 -33
- package/Dockerfile +14 -12
- package/README.md +68 -33
- package/SECURITY.md +225 -220
- package/dist/cli.js +7 -0
- package/dist/cli.js.map +1 -1
- package/dist/constants/ServerInstructions.d.ts +1 -1
- package/dist/constants/ServerInstructions.d.ts.map +1 -1
- package/dist/constants/ServerInstructions.js +70 -26
- package/dist/constants/ServerInstructions.js.map +1 -1
- package/dist/constants/icons.d.ts +2 -0
- package/dist/constants/icons.d.ts.map +1 -1
- package/dist/constants/icons.js +6 -0
- package/dist/constants/icons.js.map +1 -1
- package/dist/database/SqliteAdapter.d.ts +51 -10
- package/dist/database/SqliteAdapter.d.ts.map +1 -1
- package/dist/database/SqliteAdapter.js +143 -43
- package/dist/database/SqliteAdapter.js.map +1 -1
- package/dist/filtering/ToolFilter.d.ts +1 -1
- package/dist/filtering/ToolFilter.d.ts.map +1 -1
- package/dist/filtering/ToolFilter.js +7 -1
- package/dist/filtering/ToolFilter.js.map +1 -1
- package/dist/github/GitHubIntegration.d.ts +74 -2
- package/dist/github/GitHubIntegration.d.ts.map +1 -1
- package/dist/github/GitHubIntegration.js +508 -7
- package/dist/github/GitHubIntegration.js.map +1 -1
- package/dist/handlers/prompts/index.js +1 -0
- package/dist/handlers/prompts/index.js.map +1 -1
- package/dist/handlers/resources/index.d.ts.map +1 -1
- package/dist/handlers/resources/index.js +257 -13
- package/dist/handlers/resources/index.js.map +1 -1
- package/dist/handlers/tools/index.d.ts.map +1 -1
- package/dist/handlers/tools/index.js +595 -8
- package/dist/handlers/tools/index.js.map +1 -1
- package/dist/server/McpServer.d.ts +2 -0
- package/dist/server/McpServer.d.ts.map +1 -1
- package/dist/server/McpServer.js +69 -26
- package/dist/server/McpServer.js.map +1 -1
- package/dist/types/index.d.ts +97 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utils/logger.d.ts +1 -0
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +8 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/progress-utils.d.ts +18 -3
- package/dist/utils/progress-utils.d.ts.map +1 -1
- package/dist/utils/progress-utils.js.map +1 -1
- package/dist/utils/security-utils.d.ts +91 -0
- package/dist/utils/security-utils.d.ts.map +1 -0
- package/dist/utils/security-utils.js +184 -0
- package/dist/utils/security-utils.js.map +1 -0
- package/dist/vector/VectorSearchManager.d.ts +2 -1
- package/dist/vector/VectorSearchManager.d.ts.map +1 -1
- package/dist/vector/VectorSearchManager.js +100 -34
- package/dist/vector/VectorSearchManager.js.map +1 -1
- package/docker-compose.yml +46 -37
- package/mcp-config-example.json +0 -2
- package/package.json +21 -14
- package/releases/v4.3.1.md +69 -0
- package/releases/v4.4.0.md +120 -0
- package/server.json +3 -3
- package/src/cli.ts +11 -0
- package/src/constants/ServerInstructions.ts +70 -26
- package/src/constants/icons.ts +7 -0
- package/src/database/SqliteAdapter.ts +165 -44
- package/src/filtering/ToolFilter.ts +7 -1
- package/src/github/GitHubIntegration.ts +588 -8
- package/src/handlers/prompts/index.ts +1 -0
- package/src/handlers/resources/index.ts +318 -12
- package/src/handlers/tools/index.ts +686 -13
- package/src/server/McpServer.ts +79 -37
- package/src/types/index.ts +98 -0
- package/src/utils/logger.ts +10 -1
- package/src/utils/progress-utils.ts +17 -6
- package/src/utils/security-utils.ts +205 -0
- package/src/vector/VectorSearchManager.ts +110 -39
- package/tests/constants/icons.test.ts +102 -0
- package/tests/constants/server-instructions.test.ts +549 -0
- package/tests/database/sqlite-adapter.bench.ts +63 -0
- package/tests/database/sqlite-adapter.test.ts +555 -0
- package/tests/filtering/tool-filter.test.ts +266 -0
- package/tests/github/github-integration.test.ts +1024 -0
- package/tests/handlers/github-resource-handlers.test.ts +473 -0
- package/tests/handlers/github-tool-handlers.test.ts +556 -0
- package/tests/handlers/prompt-handlers.test.ts +91 -0
- package/tests/handlers/resource-handlers.test.ts +339 -0
- package/tests/handlers/tool-handlers.test.ts +497 -0
- package/tests/handlers/vector-tool-handlers.test.ts +238 -0
- package/tests/security/sql-injection.test.ts +347 -0
- package/tests/server/mcp-server.bench.ts +55 -0
- package/tests/server/mcp-server.test.ts +675 -0
- package/tests/utils/logger.test.ts +180 -0
- package/tests/utils/mcp-logger.test.ts +212 -0
- package/tests/utils/progress-utils.test.ts +156 -0
- package/tests/utils/security-utils.test.ts +82 -0
- package/tests/vector/vector-search-manager.test.ts +335 -0
- package/tests/vector/vector-search.bench.ts +53 -0
- package/vitest.config.ts +15 -0
- package/.github/workflows/DOCKER_DEPLOYMENT_SETUP.md +0 -387
- package/.github/workflows/dependabot-auto-merge.yml +0 -42
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-utils.js","sourceRoot":"","sources":["../../src/utils/security-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,7 +49,8 @@ export declare class VectorSearchManager {
|
|
|
49
49
|
*/
|
|
50
50
|
removeEntry(entryId: number): Promise<boolean>;
|
|
51
51
|
/**
|
|
52
|
-
* Rebuild index from database entries
|
|
52
|
+
* Rebuild index from database entries.
|
|
53
|
+
* Uses paginated fetching and parallel batch embedding for performance.
|
|
53
54
|
* @param db - Database adapter
|
|
54
55
|
* @param progress - Optional progress context for notifications
|
|
55
56
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VectorSearchManager.d.ts","sourceRoot":"","sources":["../../src/vector/VectorSearchManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"VectorSearchManager.d.ts","sourceRoot":"","sources":["../../src/vector/VectorSearchManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAc/E,0CAA0C;AAC1C,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,YAAY,CAAA;CACvB;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,QAAQ,CAEC;IACjB,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,YAAY,CAAQ;gBAEhB,MAAM,EAAE,MAAM,EAAE,SAAS,SAAgB;IAOrD;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA2CjC;;OAEG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiBxD;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2ClE;;OAEG;IACG,MAAM,CACR,KAAK,EAAE,MAAM,EACb,KAAK,SAAK,EACV,mBAAmB,SAAM,GAC1B,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAmClC;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYpD;;;;;OAKG;IACG,YAAY,CAAC,EAAE,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IA8IlF;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CAkB1F"}
|
|
@@ -14,6 +14,10 @@ import { sendProgress } from '../utils/progress-utils.js';
|
|
|
14
14
|
const DEFAULT_MODEL = 'Xenova/all-MiniLM-L6-v2';
|
|
15
15
|
/** Embedding dimensions for all-MiniLM-L6-v2 */
|
|
16
16
|
const EMBEDDING_DIMENSIONS = 384;
|
|
17
|
+
/** Number of entries to embed concurrently during rebuild */
|
|
18
|
+
const REBUILD_BATCH_SIZE = 5;
|
|
19
|
+
/** Number of entries to fetch per page during rebuild */
|
|
20
|
+
const REBUILD_PAGE_SIZE = 200;
|
|
17
21
|
/**
|
|
18
22
|
* VectorSearchManager - Handles semantic search with local embeddings
|
|
19
23
|
*/
|
|
@@ -185,7 +189,8 @@ export class VectorSearchManager {
|
|
|
185
189
|
}
|
|
186
190
|
}
|
|
187
191
|
/**
|
|
188
|
-
* Rebuild index from database entries
|
|
192
|
+
* Rebuild index from database entries.
|
|
193
|
+
* Uses paginated fetching and parallel batch embedding for performance.
|
|
189
194
|
* @param db - Database adapter
|
|
190
195
|
* @param progress - Optional progress context for notifications
|
|
191
196
|
*/
|
|
@@ -197,56 +202,117 @@ export class VectorSearchManager {
|
|
|
197
202
|
return 0;
|
|
198
203
|
}
|
|
199
204
|
logger.info('Rebuilding vector index from database...', { module: 'VectorSearch' });
|
|
200
|
-
// Step 1: Get
|
|
201
|
-
const
|
|
202
|
-
const dbIds = new Set(
|
|
203
|
-
//
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
205
|
+
// Step 1: Get total entry count and build ID set for orphan detection
|
|
206
|
+
const totalEntries = db.getActiveEntryCount();
|
|
207
|
+
const dbIds = new Set();
|
|
208
|
+
// Collect all active entry IDs via pagination (avoids loading all content at once)
|
|
209
|
+
for (let offset = 0; offset < totalEntries; offset += REBUILD_PAGE_SIZE) {
|
|
210
|
+
const page = db.getEntriesPage(offset, REBUILD_PAGE_SIZE);
|
|
211
|
+
for (const entry of page) {
|
|
212
|
+
dbIds.add(String(entry.id));
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
// Step 2: Clean up existing index items
|
|
216
|
+
// If the index is corrupted (e.g., from a process kill), recreate it
|
|
217
|
+
try {
|
|
218
|
+
const indexItems = await this.index.listItems();
|
|
219
|
+
let orphansRemoved = 0;
|
|
220
|
+
for (const item of indexItems) {
|
|
221
|
+
if (!dbIds.has(item.id)) {
|
|
222
|
+
try {
|
|
223
|
+
await this.index.deleteItem(item.id);
|
|
224
|
+
orphansRemoved++;
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
// Ignore errors during cleanup
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
if (orphansRemoved > 0) {
|
|
232
|
+
logger.info(`Cleaned up ${String(orphansRemoved)} orphaned vector entries`, {
|
|
233
|
+
module: 'VectorSearch',
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
// Step 3: Delete all remaining items to prepare for clean re-index
|
|
237
|
+
// This avoids the double-delete overhead of calling addEntry (upsert) per item
|
|
238
|
+
const remainingItems = await this.index.listItems();
|
|
239
|
+
for (const item of remainingItems) {
|
|
209
240
|
try {
|
|
210
241
|
await this.index.deleteItem(item.id);
|
|
211
|
-
orphansRemoved++;
|
|
212
242
|
}
|
|
213
243
|
catch {
|
|
214
|
-
// Ignore
|
|
244
|
+
// Ignore
|
|
215
245
|
}
|
|
216
246
|
}
|
|
217
247
|
}
|
|
218
|
-
|
|
219
|
-
|
|
248
|
+
catch (indexError) {
|
|
249
|
+
// Index files are corrupted — recreate from scratch
|
|
250
|
+
logger.warning('Vector index corrupted, recreating...', {
|
|
220
251
|
module: 'VectorSearch',
|
|
252
|
+
error: indexError instanceof Error ? indexError.message : String(indexError),
|
|
221
253
|
});
|
|
254
|
+
// Delete and recreate the vectra index directory
|
|
255
|
+
if (fs.existsSync(this.indexPath)) {
|
|
256
|
+
fs.rmSync(this.indexPath, { recursive: true, force: true });
|
|
257
|
+
fs.mkdirSync(this.indexPath, { recursive: true });
|
|
258
|
+
}
|
|
259
|
+
this.index = new LocalIndex(this.indexPath);
|
|
260
|
+
await this.index.createIndex();
|
|
261
|
+
logger.info('Recreated vector index after corruption', { module: 'VectorSearch' });
|
|
222
262
|
}
|
|
223
|
-
// Step
|
|
224
|
-
|
|
225
|
-
//
|
|
226
|
-
await sendProgress(progress, 0,
|
|
263
|
+
// Step 4: Re-index all entries using paginated fetch
|
|
264
|
+
// Embeddings are generated in parallel batches (CPU-bound, safe),
|
|
265
|
+
// but vectra insertions are sequential (file I/O, not concurrency-safe)
|
|
266
|
+
await sendProgress(progress, 0, totalEntries, 'Starting vector index rebuild...');
|
|
227
267
|
let indexed = 0;
|
|
228
|
-
for (
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
268
|
+
for (let offset = 0; offset < totalEntries; offset += REBUILD_PAGE_SIZE) {
|
|
269
|
+
const page = db.getEntriesPage(offset, REBUILD_PAGE_SIZE);
|
|
270
|
+
// Generate embeddings in parallel batches
|
|
271
|
+
for (let i = 0; i < page.length; i += REBUILD_BATCH_SIZE) {
|
|
272
|
+
const batch = page.slice(i, i + REBUILD_BATCH_SIZE);
|
|
273
|
+
// Parallel embedding generation
|
|
274
|
+
const embeddings = await Promise.all(batch.map(async (entry) => {
|
|
275
|
+
try {
|
|
276
|
+
return { entry, embedding: await this.generateEmbedding(entry.content) };
|
|
277
|
+
}
|
|
278
|
+
catch {
|
|
279
|
+
return { entry, embedding: null };
|
|
280
|
+
}
|
|
281
|
+
}));
|
|
282
|
+
// Sequential vectra insertion (file I/O not concurrency-safe)
|
|
283
|
+
for (const { entry, embedding } of embeddings) {
|
|
284
|
+
if (embedding !== null) {
|
|
285
|
+
try {
|
|
286
|
+
await this.index.insertItem({
|
|
287
|
+
id: String(entry.id),
|
|
288
|
+
vector: embedding,
|
|
289
|
+
metadata: {
|
|
290
|
+
entryId: entry.id,
|
|
291
|
+
contentPreview: entry.content.slice(0, 100),
|
|
292
|
+
},
|
|
293
|
+
});
|
|
294
|
+
indexed++;
|
|
295
|
+
}
|
|
296
|
+
catch (error) {
|
|
297
|
+
logger.error('Failed to insert entry into vector index', {
|
|
298
|
+
module: 'VectorSearch',
|
|
299
|
+
entityId: entry.id,
|
|
300
|
+
error: error instanceof Error ? error.message : String(error),
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
// Report progress every 10 entries to avoid flooding
|
|
306
|
+
if (indexed % 10 === 0 || indexed === totalEntries) {
|
|
307
|
+
await sendProgress(progress, indexed, totalEntries, `Indexed ${String(indexed)} of ${String(totalEntries)} entries`);
|
|
308
|
+
}
|
|
242
309
|
}
|
|
243
310
|
}
|
|
244
311
|
// Force index to refresh by re-listing items
|
|
245
312
|
// This ensures the internal query structures are updated and ready for search
|
|
246
|
-
// The 100ms delay was insufficient because it didn't refresh the internal state
|
|
247
313
|
await this.index.listItems();
|
|
248
314
|
// Final progress
|
|
249
|
-
await sendProgress(progress, indexed,
|
|
315
|
+
await sendProgress(progress, indexed, totalEntries, 'Vector index rebuild complete');
|
|
250
316
|
logger.info(`Rebuilt vector index with ${String(indexed)} entries`, {
|
|
251
317
|
module: 'VectorSearch',
|
|
252
318
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VectorSearchManager.js","sourceRoot":"","sources":["../../src/vector/VectorSearchManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAG3C,OAAO,EAAE,YAAY,EAAwB,MAAM,4BAA4B,CAAA;AAE/E,4DAA4D;AAC5D,MAAM,aAAa,GAAG,yBAAyB,CAAA;AAE/C,gDAAgD;AAChD,MAAM,oBAAoB,GAAG,GAAG,CAAA;
|
|
1
|
+
{"version":3,"file":"VectorSearchManager.js","sourceRoot":"","sources":["../../src/vector/VectorSearchManager.ts"],"names":[],"mappings":"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"}
|
package/docker-compose.yml
CHANGED
|
@@ -1,37 +1,46 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
-
|
|
10
|
-
#
|
|
11
|
-
-
|
|
12
|
-
#
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
1
|
+
services:
|
|
2
|
+
memory-journal-mcp:
|
|
3
|
+
build: .
|
|
4
|
+
container_name: memory-journal-mcp
|
|
5
|
+
volumes:
|
|
6
|
+
# Mount local data directory for persistent SQLite database
|
|
7
|
+
- ./data:/app/data:rw,noexec,nosuid,nodev
|
|
8
|
+
environment:
|
|
9
|
+
- DB_PATH=/app/data/memory_journal.db
|
|
10
|
+
# Optional: GitHub integration
|
|
11
|
+
# - GITHUB_TOKEN=ghp_your_token_here
|
|
12
|
+
# - GITHUB_REPO_PATH=/app/repo
|
|
13
|
+
# Optional: CORS origin (default: *)
|
|
14
|
+
# - MCP_CORS_ORIGIN=http://localhost:3000
|
|
15
|
+
stdin_open: true
|
|
16
|
+
tty: true
|
|
17
|
+
# MCP stdio communication (default transport)
|
|
18
|
+
command: ['node', 'dist/cli.js']
|
|
19
|
+
restart: unless-stopped
|
|
20
|
+
|
|
21
|
+
# HTTP transport service for remote access
|
|
22
|
+
memory-journal-mcp-http:
|
|
23
|
+
build: .
|
|
24
|
+
container_name: memory-journal-mcp-http
|
|
25
|
+
volumes:
|
|
26
|
+
- ./data:/app/data:rw,noexec,nosuid,nodev
|
|
27
|
+
environment:
|
|
28
|
+
- DB_PATH=/app/data/memory_journal.db
|
|
29
|
+
- MCP_HOST=0.0.0.0
|
|
30
|
+
# Optional: GitHub integration
|
|
31
|
+
# - GITHUB_TOKEN=ghp_your_token_here
|
|
32
|
+
# - GITHUB_REPO_PATH=/app/repo
|
|
33
|
+
# Optional: CORS origin (default: *)
|
|
34
|
+
# - MCP_CORS_ORIGIN=http://localhost:3000
|
|
35
|
+
ports:
|
|
36
|
+
- '3000:3000'
|
|
37
|
+
command:
|
|
38
|
+
['node', 'dist/cli.js', '--transport', 'http', '--port', '3000', '--server-host', '0.0.0.0']
|
|
39
|
+
restart: unless-stopped
|
|
40
|
+
deploy:
|
|
41
|
+
resources:
|
|
42
|
+
limits:
|
|
43
|
+
memory: 1g
|
|
44
|
+
cpus: '1.0'
|
|
45
|
+
profiles:
|
|
46
|
+
- http
|
package/mcp-config-example.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "memory-journal-mcp",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.4.0",
|
|
4
4
|
"description": "Project context management for AI-assisted development - Persistent knowledge graphs and intelligent context recall across fragmented AI threads",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -14,7 +14,11 @@
|
|
|
14
14
|
"lint": "eslint src/",
|
|
15
15
|
"lint:fix": "eslint src/ --fix",
|
|
16
16
|
"typecheck": "tsc --noEmit",
|
|
17
|
-
"check": "npm run lint && npm run typecheck"
|
|
17
|
+
"check": "npm run lint && npm run typecheck",
|
|
18
|
+
"test": "vitest run",
|
|
19
|
+
"test:watch": "vitest",
|
|
20
|
+
"test:coverage": "vitest run --coverage",
|
|
21
|
+
"bench": "vitest bench --run"
|
|
18
22
|
},
|
|
19
23
|
"keywords": [
|
|
20
24
|
"mcp",
|
|
@@ -46,32 +50,35 @@
|
|
|
46
50
|
"node": ">=24.0.0"
|
|
47
51
|
},
|
|
48
52
|
"dependencies": {
|
|
49
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
53
|
+
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
50
54
|
"@octokit/graphql": "^9.0.3",
|
|
51
55
|
"@octokit/rest": "^22.0.1",
|
|
52
56
|
"@xenova/transformers": "^2.17.2",
|
|
53
|
-
"commander": "^14.0.
|
|
54
|
-
"cors": "^2.8.
|
|
57
|
+
"commander": "^14.0.3",
|
|
58
|
+
"cors": "^2.8.6",
|
|
55
59
|
"express": "^5.2.1",
|
|
56
|
-
"simple-git": "^3.
|
|
57
|
-
"sql.js": "^1.
|
|
60
|
+
"simple-git": "^3.32.3",
|
|
61
|
+
"sql.js": "^1.14.0",
|
|
58
62
|
"vectra": "^0.12.3",
|
|
59
|
-
"zod": "^4.3.
|
|
63
|
+
"zod": "^4.3.6"
|
|
60
64
|
},
|
|
61
65
|
"devDependencies": {
|
|
62
|
-
"@eslint/js": "^
|
|
66
|
+
"@eslint/js": "^10.0.1",
|
|
63
67
|
"@types/cors": "^2.8.19",
|
|
64
68
|
"@types/express": "^5.0.6",
|
|
65
|
-
"@types/node": "^25.
|
|
66
|
-
"
|
|
67
|
-
"
|
|
69
|
+
"@types/node": "^25.3.2",
|
|
70
|
+
"@vitest/coverage-v8": "^4.0.18",
|
|
71
|
+
"eslint": "^10.0.2",
|
|
72
|
+
"globals": "^17.3.0",
|
|
68
73
|
"typescript": "^5.9.3",
|
|
69
|
-
"typescript-eslint": "^8.
|
|
74
|
+
"typescript-eslint": "^8.56.1",
|
|
75
|
+
"vitest": "^4.0.17"
|
|
70
76
|
},
|
|
71
77
|
"overrides": {
|
|
72
|
-
"axios": "^1.13.
|
|
78
|
+
"axios": "^1.13.5",
|
|
73
79
|
"brace-expansion": "^2.0.2",
|
|
74
80
|
"glob": "^11.1.0",
|
|
81
|
+
"tar": "^7.5.8",
|
|
75
82
|
"tmp": "^0.2.4"
|
|
76
83
|
}
|
|
77
84
|
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# v4.3.1 - OutputSchema Fix & CVE Remediations
|
|
2
|
+
|
|
3
|
+
Released: February 5, 2026
|
|
4
|
+
|
|
5
|
+
## Highlights
|
|
6
|
+
|
|
7
|
+
- **OutputSchema Fix** — Fixed `get_cross_project_insights` validation error on empty results
|
|
8
|
+
- **Security Patches** — Remediated 3 CVEs in Docker image (libexpat CRITICAL, tar HIGH)
|
|
9
|
+
- **Dependency Updates** — MCP SDK 1.26.0 and other updates
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Fixed
|
|
14
|
+
|
|
15
|
+
### `get_cross_project_insights` OutputSchema Validation
|
|
16
|
+
|
|
17
|
+
When no projects met the minimum entry threshold, the tool returned only `message` and `projects` fields, failing outputSchema validation.
|
|
18
|
+
|
|
19
|
+
**Now returns all required fields:**
|
|
20
|
+
|
|
21
|
+
- `project_count: 0`
|
|
22
|
+
- `total_entries: 0`
|
|
23
|
+
- `inactive_projects: []`
|
|
24
|
+
- `time_distribution: []`
|
|
25
|
+
- `message` (with explanation)
|
|
26
|
+
- `projects: []`
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Security
|
|
31
|
+
|
|
32
|
+
### CVE-2026-24515 (libexpat) — CRITICAL
|
|
33
|
+
|
|
34
|
+
Null pointer dereference vulnerability. Fixed by explicitly installing libexpat from Alpine edge repositories in Dockerfile.
|
|
35
|
+
|
|
36
|
+
### CVE-2026-25210 (libexpat) — MEDIUM
|
|
37
|
+
|
|
38
|
+
Integer overflow leading to information disclosure. Same fix as CVE-2026-24515.
|
|
39
|
+
|
|
40
|
+
### CVE-2026-24842 (tar) — HIGH
|
|
41
|
+
|
|
42
|
+
Path traversal vulnerability in npm's bundled tar package. Updated from 7.5.4 → 7.5.7 in Dockerfile.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Changed
|
|
47
|
+
|
|
48
|
+
### Dependency Updates
|
|
49
|
+
|
|
50
|
+
| Package | From | To |
|
|
51
|
+
| --------------------------- | ------- | ------ |
|
|
52
|
+
| `@modelcontextprotocol/sdk` | 1.25.3 | 1.26.0 |
|
|
53
|
+
| `@types/node` | 25.0.10 | 25.2.0 |
|
|
54
|
+
| `commander` | 14.0.2 | 14.0.3 |
|
|
55
|
+
| `globals` | 17.1.0 | 17.3.0 |
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Upgrade
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
# npm
|
|
63
|
+
npm update -g memory-journal-mcp
|
|
64
|
+
|
|
65
|
+
# Docker
|
|
66
|
+
docker pull writenotenow/memory-journal-mcp:v4.3.1
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**Full Changelog**: https://github.com/neverinfamous/memory-journal-mcp/wiki/CHANGELOG
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# v4.4.0 - Milestones, Insights, Security Hardening & Performance
|
|
2
|
+
|
|
3
|
+
Released: February 27, 2026
|
|
4
|
+
|
|
5
|
+
## Highlights
|
|
6
|
+
|
|
7
|
+
- **GitHub Milestones Integration** — Full CRUD support with 5 new tools, 2 new resources, and briefing/status integration
|
|
8
|
+
- **Repository Insights/Traffic Tool** — New `get_repo_insights` tool and `memory://github/insights` resource for monitoring stars, forks, clones, views, referrers, and popular paths (14-day rolling data)
|
|
9
|
+
- **HTTP Transport Security Hardening** — Configurable CORS, request body size limits, security headers, session timeout, and error log token scrubbing
|
|
10
|
+
- **Performance Improvements** — Debounced database save, paginated vector rebuild, parallel batch embedding, GitHub API TTL cache, and startup deduplication
|
|
11
|
+
- **15+ Bug Fixes** — Including `memory://significant` sort correctness, `delete_entry` permanent delete, JournalEntry GitHub metadata exposure, and `list_tags` zero-count filtering
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Added
|
|
16
|
+
|
|
17
|
+
### GitHub Milestones Integration
|
|
18
|
+
|
|
19
|
+
Full lifecycle management for GitHub Milestones:
|
|
20
|
+
|
|
21
|
+
- **5 new tools**: `get_github_milestones`, `get_github_milestone`, `create_github_milestone`, `update_github_milestone`, `delete_github_milestone`
|
|
22
|
+
- **2 new resources**: `memory://github/milestones` (list) and `memory://milestones/{number}` (detail)
|
|
23
|
+
- Briefing and status resources now include milestone progress data
|
|
24
|
+
- `create_github_issue_with_entry` accepts optional `milestone_number` parameter
|
|
25
|
+
|
|
26
|
+
### Repository Insights/Traffic
|
|
27
|
+
|
|
28
|
+
- **New tool**: `get_repo_insights` with token-efficient `sections` parameter
|
|
29
|
+
- **New resource**: `memory://github/insights` — compact summary (~150 tokens)
|
|
30
|
+
- Surfaces stars, forks, watchers, clones, views, top referrers, and popular pages
|
|
31
|
+
- Extended 10-minute cache TTL for slowly-changing traffic data
|
|
32
|
+
|
|
33
|
+
### Server Host Bind Parameter
|
|
34
|
+
|
|
35
|
+
- New `--server-host` CLI option and `MCP_HOST` / `HOST` environment variables
|
|
36
|
+
- Defaults to `localhost`; set to `0.0.0.0` for container deployments
|
|
37
|
+
|
|
38
|
+
### Performance Benchmarking Suite
|
|
39
|
+
|
|
40
|
+
- New `npm run bench` script using `vitest bench` for baseline performance measurement
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Improved
|
|
45
|
+
|
|
46
|
+
- **`get_entry_by_id` Importance Scoring Breakdown** — Returns weighted component contributions
|
|
47
|
+
- **`get_cross_project_insights` Inactive Threshold Visibility** — Self-documenting `inactiveThresholdDays` field
|
|
48
|
+
- **Database I/O — Debounced Save** — 500ms debounce batches rapid writes into single disk flush
|
|
49
|
+
- **Vector Index Rebuild** — Paginated fetching (200 per page) + parallel batch embedding (5 at a time) + sequential insertion
|
|
50
|
+
- **Server Startup — `getTools()` Deduplication** — Eliminated duplicate call during startup
|
|
51
|
+
- **GitHub API — TTL Response Cache** — 5-minute cache for read methods with automatic invalidation on mutations
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Fixed
|
|
56
|
+
|
|
57
|
+
- **`memory://significant` Importance Sort** — Fixed resource returning timestamp-sorted instead of importance-sorted entries when >20 entries exist
|
|
58
|
+
- **`memory://instructions` Active Tool Count** — Fixed hardcoded 3-tool fallback; now uses `getAllToolNames()`
|
|
59
|
+
- **`memory://health` Tool Count** — Dynamic computation from `TOOL_GROUPS` instead of hardcoded value
|
|
60
|
+
- **`delete_entry` Permanent Delete** — Now works on previously soft-deleted entries via `getEntryByIdIncludeDeleted()`
|
|
61
|
+
- **`delete_entry` Existence Check (P154)** — Pre-checks entry existence before mutation
|
|
62
|
+
- **`link_entries` Existence Check (P154)** — Pre-checks both source and target entry existence
|
|
63
|
+
- **`visualize_relationships` Disambiguation (P154)** — Clear "Entry not found" message for nonexistent entries
|
|
64
|
+
- **`list_tags` Zero-Count Filtering** — No longer returns orphan tags with zero usage
|
|
65
|
+
- **`get_github_issue` Missing Milestone Field** — Now maps `issue.milestone` from API response
|
|
66
|
+
- **`JournalEntry` GitHub Metadata** — 10 GitHub fields now included in all tool responses
|
|
67
|
+
- **`delete_github_milestone` Structured Error** — Returns proper `DeleteMilestoneOutputSchema` on failure
|
|
68
|
+
- **`ServerInstructions.ts` Entry Types** — Updated from 7 stale types to full 13-type union
|
|
69
|
+
- **Docker Hub Short Description** — Corrected "HTTPS" → "HTTP/SSE"
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Security
|
|
74
|
+
|
|
75
|
+
- **HTTP Transport Hardening** — Configurable CORS (`--cors-origin`), 1MB request body limit, `X-Content-Type-Options: nosniff` + `X-Frame-Options: DENY`, 30-min session timeout
|
|
76
|
+
- **Error Log Token Scrubbing** — Automatic sanitization of GitHub tokens and Authorization headers
|
|
77
|
+
- **CVE-2026-26960 (tar)** — Updated npm's bundled tar → 7.5.8 (HIGH, path traversal CVSS 7.1)
|
|
78
|
+
- **GHSA-w7fw-mjwx-w883 (qs)** — Updated qs 6.14.1 → 6.14.2 (low, arrayLimit bypass DoS)
|
|
79
|
+
- **GHSA-43fc-jf86-j433 (axios)** — Override to 1.13.5 (DoS via `__proto__` key)
|
|
80
|
+
- **SECURITY.md Rewrite** — Complete rewrite for TypeScript era
|
|
81
|
+
- **docker-compose.yml Rewrite** — Removed Python-era configuration, added secure mounts
|
|
82
|
+
- **Dockerfile Healthcheck** — Replaced no-op healthcheck with `process.exit(0)` validation
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## CI/CD
|
|
87
|
+
|
|
88
|
+
- Removed Dependabot auto-merge workflow — manual review required
|
|
89
|
+
- Trivy Action updated to 0.34.0
|
|
90
|
+
- CI test matrix aligned to `[24.x, 25.x]` matching `engines.node: >=24.0.0`
|
|
91
|
+
- Blocking `npm audit` — known vulnerabilities now fail the pipeline
|
|
92
|
+
- Blocking secret scanning — verified leaks now fail the pipeline
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Dependencies
|
|
97
|
+
|
|
98
|
+
| Package | From | To |
|
|
99
|
+
| --------------------------- | ------ | -------------- |
|
|
100
|
+
| `@eslint/js` | 9.39.2 | 10.0.1 (major) |
|
|
101
|
+
| `@modelcontextprotocol/sdk` | 1.26.0 | 1.27.1 (minor) |
|
|
102
|
+
| `@types/node` | 25.2.0 | 25.3.2 (minor) |
|
|
103
|
+
| `eslint` | 9.39.2 | 10.0.2 (major) |
|
|
104
|
+
| `simple-git` | 3.28.0 | 3.32.3 (minor) |
|
|
105
|
+
| `sql.js` | 1.12.0 | 1.14.0 (minor) |
|
|
106
|
+
| `typescript-eslint` | 8.54.0 | 8.56.1 (minor) |
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Upgrade
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# npm
|
|
114
|
+
npm update -g memory-journal-mcp
|
|
115
|
+
|
|
116
|
+
# Docker
|
|
117
|
+
docker pull writenotenow/memory-journal-mcp:v4.4.0
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**Full Changelog**: https://github.com/neverinfamous/memory-journal-mcp/wiki/CHANGELOG
|
package/server.json
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
"name": "io.github.neverinfamous/memory-journal-mcp",
|
|
4
4
|
"title": "Memory Journal MCP",
|
|
5
5
|
"description": "MCP server– Project memory system with GitHub-aware context, knowledge graphs, and CI/PR timelines",
|
|
6
|
-
"version": "4.
|
|
6
|
+
"version": "4.4.0",
|
|
7
7
|
"packages": [
|
|
8
8
|
{
|
|
9
9
|
"registryType": "oci",
|
|
10
|
-
"identifier": "docker.io/writenotenow/memory-journal-mcp:v4.
|
|
11
|
-
"version": "4.
|
|
10
|
+
"identifier": "docker.io/writenotenow/memory-journal-mcp:v4.4.0",
|
|
11
|
+
"version": "4.4.0",
|
|
12
12
|
"transport": {
|
|
13
13
|
"type": "stdio"
|
|
14
14
|
}
|