@vheins/local-memory-mcp 0.1.40 → 0.1.44
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/README.md +59 -11
- package/dist/server.js +19 -10
- package/dist/server.js.map +1 -1
- package/dist/server_robustness.test.d.ts +2 -0
- package/dist/server_robustness.test.d.ts.map +1 -0
- package/dist/server_robustness.test.js +107 -0
- package/dist/server_robustness.test.js.map +1 -0
- package/dist/storage/vectors.d.ts +5 -0
- package/dist/storage/vectors.d.ts.map +1 -1
- package/dist/storage/vectors.js +7 -0
- package/dist/storage/vectors.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -17,24 +17,72 @@ Built with a **Local-First** philosophy, this service stores architectural decis
|
|
|
17
17
|
- 📉 **Automatic Memory Decay:** Automatically archives obsolete memories to keep the context clean and relevant.
|
|
18
18
|
- 📊 **Glassy Dashboard:** Visualize memories, usage statistics, and audit interaction logs through a modern web interface.
|
|
19
19
|
|
|
20
|
-
##
|
|
20
|
+
## 🔌 MCP Usage & Configuration
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
Add this service to your AI Agent (Claude Desktop, Cursor, Windsurf, etc.) using one of the methods below.
|
|
23
|
+
|
|
24
|
+
> 💡 **Recommendation:** If your MCP runs frequently (agents, CI, automation), avoid `npx` and use a global or local install instead. It reduces unnecessary NPM downloads and speeds up Agent startup.
|
|
25
|
+
|
|
26
|
+
### 🚀 Quick Start (Zero Setup)
|
|
27
|
+
Best for **first-time users** or **quick testing**. This uses `npx` to run the server without any permanent setup.
|
|
28
|
+
|
|
29
|
+
```json
|
|
30
|
+
"local-memory": {
|
|
31
|
+
"command": "npx",
|
|
32
|
+
"args": ["-y", "@vheins/local-memory-mcp"],
|
|
33
|
+
"type": "stdio"
|
|
34
|
+
}
|
|
25
35
|
```
|
|
36
|
+
* **Uses `npx`**: Automatically handles the execution.
|
|
37
|
+
* **Tradeoff**: May re-download the package in some environments and is not optimal for frequent execution.
|
|
38
|
+
|
|
39
|
+
### ⚡ Recommended for Production / Frequent Usage
|
|
40
|
+
This method ensures the fastest startup times and maximum reliability for daily use.
|
|
26
41
|
|
|
27
|
-
|
|
28
|
-
|
|
42
|
+
1. **Install globally:**
|
|
43
|
+
```bash
|
|
44
|
+
npm install -g @vheins/local-memory-mcp
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
2. **Add to your configuration:**
|
|
48
|
+
```json
|
|
49
|
+
"local-memory": {
|
|
50
|
+
"command": "local-memory-mcp",
|
|
51
|
+
"type": "stdio"
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
* **Faster startup**: No network checks required on every start.
|
|
55
|
+
* **No repeated downloads**: Saves bandwidth and avoids NPM registry dependency.
|
|
56
|
+
* **Better for automation**: More stable for heavy-duty Agent workflows.
|
|
57
|
+
|
|
58
|
+
### 🧠 How It Works (Important Insight)
|
|
59
|
+
* **npx usage**: When you use `npx`, it often performs a network request to check for the latest version or re-downloads the package if it's not in the cache. Since MCP clients start and stop tools frequently, this can lead to hundreds of unnecessary downloads.
|
|
60
|
+
* **Installed binary**: By installing the package, you keep a permanent copy on your disk. The Agent reuses this local version instantly, providing a much smoother experience.
|
|
61
|
+
|
|
62
|
+
## 📊 Glassy Dashboard
|
|
63
|
+
|
|
64
|
+
Visualize and manage your Agent's memory through a modern web interface.
|
|
65
|
+
|
|
66
|
+
### How to Run
|
|
67
|
+
```bash
|
|
68
|
+
local-memory-mcp dashboard
|
|
69
|
+
```
|
|
70
|
+
*If not installed globally, use:* `npx @vheins/local-memory-mcp dashboard`
|
|
29
71
|
|
|
72
|
+
### Auto-launch in VS Code
|
|
73
|
+
Add this to your `.vscode/tasks.json` to have the dashboard start automatically:
|
|
30
74
|
```json
|
|
31
75
|
{
|
|
32
|
-
"
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
"
|
|
76
|
+
"version": "2.0.0",
|
|
77
|
+
"tasks": [
|
|
78
|
+
{
|
|
79
|
+
"label": "Launch Memory Dashboard",
|
|
80
|
+
"type": "shell",
|
|
81
|
+
"command": "npx -y @vheins/local-memory-mcp dashboard",
|
|
82
|
+
"isBackground": true,
|
|
83
|
+
"runOptions": { "runOn": "folderOpen" }
|
|
36
84
|
}
|
|
37
|
-
|
|
85
|
+
]
|
|
38
86
|
}
|
|
39
87
|
```
|
|
40
88
|
|
package/dist/server.js
CHANGED
|
@@ -31,7 +31,12 @@ if (process.argv.includes("doctor")) {
|
|
|
31
31
|
// Create storage instances
|
|
32
32
|
const db = new SQLiteStore();
|
|
33
33
|
const vectors = new RealVectorStore(db);
|
|
34
|
+
// Pre-load vector model in background to avoid initial request timeout
|
|
35
|
+
vectors.initialize().catch(err => {
|
|
36
|
+
logger.warn("[Server] Initial vector model loading failed. Will retry on first use.", { error: String(err) });
|
|
37
|
+
});
|
|
34
38
|
// Optional: Automatic cleanup of expired/low-utility memories (default: disabled)
|
|
39
|
+
// ... (rest of cleanup code) ...
|
|
35
40
|
const expiredArchived = db.archiveExpiredMemories();
|
|
36
41
|
const lowScoreArchived = db.archiveLowScoreMemories();
|
|
37
42
|
const totalArchived = (expiredArchived || 0) + (lowScoreArchived || 0);
|
|
@@ -85,8 +90,9 @@ rl.on("line", async (line) => {
|
|
|
85
90
|
return;
|
|
86
91
|
}
|
|
87
92
|
const { id, method, params } = msg;
|
|
88
|
-
|
|
89
|
-
|
|
93
|
+
const isNotification = id === undefined || id === null;
|
|
94
|
+
// --- initialize (Request) ---
|
|
95
|
+
if (method === "initialize" && !isNotification) {
|
|
90
96
|
reply({
|
|
91
97
|
jsonrpc: "2.0",
|
|
92
98
|
id,
|
|
@@ -96,17 +102,20 @@ rl.on("line", async (line) => {
|
|
|
96
102
|
capabilities: CAPABILITIES.capabilities
|
|
97
103
|
}
|
|
98
104
|
});
|
|
99
|
-
reply({
|
|
100
|
-
jsonrpc: "2.0",
|
|
101
|
-
method: "notifications/initialized",
|
|
102
|
-
params: {}
|
|
103
|
-
});
|
|
104
105
|
return;
|
|
105
106
|
}
|
|
106
|
-
// ---
|
|
107
|
-
if (
|
|
107
|
+
// --- notifications ---
|
|
108
|
+
if (isNotification) {
|
|
109
|
+
// We ignore all notifications by default, especially standard ones
|
|
110
|
+
if (method === "notifications/initialized") {
|
|
111
|
+
logger.debug("[Server] Client initialized");
|
|
112
|
+
}
|
|
113
|
+
else if (method === "notifications/cancelled") {
|
|
114
|
+
logger.debug("[Server] Request cancelled by client", { params });
|
|
115
|
+
}
|
|
108
116
|
return;
|
|
109
|
-
|
|
117
|
+
}
|
|
118
|
+
// --- route request ---
|
|
110
119
|
try {
|
|
111
120
|
const result = await handleMethod(method, params);
|
|
112
121
|
reply({
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server_robustness.test.d.ts","sourceRoot":"","sources":["../src/server_robustness.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { describe, it, expect, beforeAll } from "vitest";
|
|
2
|
+
import { spawn } from "child_process";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import fs from "fs";
|
|
5
|
+
describe("Server Robustness & Notification Handling", () => {
|
|
6
|
+
let server;
|
|
7
|
+
const serverPath = path.resolve(__dirname, "../dist/server.js");
|
|
8
|
+
beforeAll(async () => {
|
|
9
|
+
// Ensure the server is built
|
|
10
|
+
if (!fs.existsSync(serverPath)) {
|
|
11
|
+
throw new Error("Server not built. Run npm run build first.");
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
it("should handle initialize request and respond", async () => {
|
|
15
|
+
server = spawn("node", [serverPath]);
|
|
16
|
+
const responsePromise = new Promise((resolve) => {
|
|
17
|
+
server.stdout?.on("data", (data) => {
|
|
18
|
+
const lines = data.toString().split("\n");
|
|
19
|
+
for (const line of lines) {
|
|
20
|
+
if (!line.trim())
|
|
21
|
+
continue;
|
|
22
|
+
const msg = JSON.parse(line);
|
|
23
|
+
if (msg.id === 1)
|
|
24
|
+
resolve(msg);
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
server.stdin?.write(JSON.stringify({
|
|
29
|
+
jsonrpc: "2.0",
|
|
30
|
+
id: 1,
|
|
31
|
+
method: "initialize",
|
|
32
|
+
params: {}
|
|
33
|
+
}) + "\n");
|
|
34
|
+
const response = await responsePromise;
|
|
35
|
+
expect(response.id).toBe(1);
|
|
36
|
+
expect(response.result).toBeDefined();
|
|
37
|
+
expect(response.result.protocolVersion).toBe("2024-11-05");
|
|
38
|
+
server.kill();
|
|
39
|
+
});
|
|
40
|
+
it("should silently ignore notifications/cancelled", async () => {
|
|
41
|
+
server = spawn("node", [serverPath]);
|
|
42
|
+
let receivedResponse = false;
|
|
43
|
+
server.stdout?.on("data", (data) => {
|
|
44
|
+
const line = data.toString().trim();
|
|
45
|
+
if (line) {
|
|
46
|
+
try {
|
|
47
|
+
const msg = JSON.parse(line);
|
|
48
|
+
// Ignore standard responses to initialize if they happen
|
|
49
|
+
if (msg.method !== "notifications/initialized") {
|
|
50
|
+
receivedResponse = true;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch (e) { }
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
// Send a notification
|
|
57
|
+
server.stdin?.write(JSON.stringify({
|
|
58
|
+
jsonrpc: "2.0",
|
|
59
|
+
method: "notifications/cancelled",
|
|
60
|
+
params: { requestId: 1 }
|
|
61
|
+
}) + "\n");
|
|
62
|
+
// Wait a bit to ensure no response is sent
|
|
63
|
+
await new Promise(r => setTimeout(r, 500));
|
|
64
|
+
expect(receivedResponse).toBe(false);
|
|
65
|
+
server.kill();
|
|
66
|
+
});
|
|
67
|
+
it("should respond with error to unknown request but NOT to unknown notification", async () => {
|
|
68
|
+
server = spawn("node", [serverPath]);
|
|
69
|
+
const responses = [];
|
|
70
|
+
server.stdout?.on("data", (data) => {
|
|
71
|
+
const lines = data.toString().split("\n");
|
|
72
|
+
for (const line of lines) {
|
|
73
|
+
if (!line.trim())
|
|
74
|
+
continue;
|
|
75
|
+
try {
|
|
76
|
+
responses.push(JSON.parse(line));
|
|
77
|
+
}
|
|
78
|
+
catch (e) { }
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
// 1. Unknown notification
|
|
82
|
+
server.stdin?.write(JSON.stringify({
|
|
83
|
+
jsonrpc: "2.0",
|
|
84
|
+
method: "unknown/notification",
|
|
85
|
+
params: {}
|
|
86
|
+
}) + "\n");
|
|
87
|
+
// 2. Unknown request
|
|
88
|
+
server.stdin?.write(JSON.stringify({
|
|
89
|
+
jsonrpc: "2.0",
|
|
90
|
+
id: 2,
|
|
91
|
+
method: "unknown/request",
|
|
92
|
+
params: {}
|
|
93
|
+
}) + "\n");
|
|
94
|
+
// Wait for response to the request
|
|
95
|
+
await new Promise(r => setTimeout(r, 500));
|
|
96
|
+
// Should only have 1 response (for the request, not the notification)
|
|
97
|
+
// Actually, it might have more if initialize was called, but here we didn't call it.
|
|
98
|
+
const errorResponse = responses.find(r => r.id === 2);
|
|
99
|
+
expect(errorResponse).toBeDefined();
|
|
100
|
+
expect(errorResponse.error).toBeDefined();
|
|
101
|
+
expect(errorResponse.error.message).toContain("Unsupported method");
|
|
102
|
+
// Ensure no response for the notification
|
|
103
|
+
expect(responses.length).toBe(1);
|
|
104
|
+
server.kill();
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
//# sourceMappingURL=server_robustness.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server_robustness.test.js","sourceRoot":"","sources":["../src/server_robustness.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,11 @@ export declare class RealVectorStore implements VectorStore {
|
|
|
5
5
|
private extractor;
|
|
6
6
|
private modelName;
|
|
7
7
|
constructor(db: SQLiteStore);
|
|
8
|
+
/**
|
|
9
|
+
* Triggers background loading of the vector model.
|
|
10
|
+
* Useful for avoiding timeouts on the first search/upsert request.
|
|
11
|
+
*/
|
|
12
|
+
initialize(): Promise<void>;
|
|
8
13
|
private getExtractor;
|
|
9
14
|
private cosineSimilarity;
|
|
10
15
|
upsert(id: string, text: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vectors.d.ts","sourceRoot":"","sources":["../../src/storage/vectors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,qBAAa,eAAgB,YAAW,WAAW;IACjD,OAAO,CAAC,EAAE,CAAc;IACxB,OAAO,CAAC,SAAS,CAA0C;IAC3D,OAAO,CAAC,SAAS,CAA6B;gBAElC,EAAE,EAAE,WAAW;
|
|
1
|
+
{"version":3,"file":"vectors.d.ts","sourceRoot":"","sources":["../../src/storage/vectors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,qBAAa,eAAgB,YAAW,WAAW;IACjD,OAAO,CAAC,EAAE,CAAc;IACxB,OAAO,CAAC,SAAS,CAA0C;IAC3D,OAAO,CAAC,SAAS,CAA6B;gBAElC,EAAE,EAAE,WAAW;IAI3B;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAInB,YAAY;IAS1B,OAAO,CAAC,gBAAgB;IAalB,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa/C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAyBnF"}
|
package/dist/storage/vectors.js
CHANGED
|
@@ -7,6 +7,13 @@ export class RealVectorStore {
|
|
|
7
7
|
constructor(db) {
|
|
8
8
|
this.db = db;
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* Triggers background loading of the vector model.
|
|
12
|
+
* Useful for avoiding timeouts on the first search/upsert request.
|
|
13
|
+
*/
|
|
14
|
+
async initialize() {
|
|
15
|
+
await this.getExtractor();
|
|
16
|
+
}
|
|
10
17
|
async getExtractor() {
|
|
11
18
|
if (!this.extractor) {
|
|
12
19
|
logger.info(`[Vectors] Loading model: ${this.modelName}...`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vectors.js","sourceRoot":"","sources":["../../src/storage/vectors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vectors.js","sourceRoot":"","sources":["../../src/storage/vectors.ts"],"names":[],"mappings":"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"}
|