multimodemind 0.1.0 → 0.1.1
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 +10 -8
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +6 -5
- package/dist/cli/config.js.map +1 -1
- package/dist/index.js +15 -6
- package/dist/index.js.map +1 -1
- package/package.json +1 -2
package/README.md
CHANGED
|
@@ -38,21 +38,23 @@ npm install -g multimodemind
|
|
|
38
38
|
|
|
39
39
|
## Usage
|
|
40
40
|
|
|
41
|
-
Run as an MCP server over stdio:
|
|
41
|
+
Run as an MCP server over stdio. Pass your Markdown vault as the first argument:
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
|
-
|
|
44
|
+
mmind "/path/to/your/vault"
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
Store data is written to `~/.mmind` by default, so `mmind` works from any
|
|
48
|
+
directory. Everything can also be configured via environment variables (which
|
|
49
|
+
take precedence over the positional argument):
|
|
48
50
|
|
|
49
51
|
| Variable | Default | Purpose |
|
|
50
52
|
|---|---|---|
|
|
51
|
-
| `MMIND_VAULT_PATH` | *(
|
|
52
|
-
| `MMIND_SQLITE_PATH` |
|
|
53
|
-
| `MMIND_LEVELDB_PATH` |
|
|
54
|
-
| `MMIND_FILES_PATH` |
|
|
55
|
-
| `MMIND_VECTOR_PATH` |
|
|
53
|
+
| `MMIND_VAULT_PATH` | *(first CLI arg, else disabled)* | Markdown vault directory |
|
|
54
|
+
| `MMIND_SQLITE_PATH` | `~/.mmind/memory.db` | SQLite database file |
|
|
55
|
+
| `MMIND_LEVELDB_PATH` | `~/.mmind/leveldb` | LevelDB directory |
|
|
56
|
+
| `MMIND_FILES_PATH` | `~/.mmind/files` | Files directory |
|
|
57
|
+
| `MMIND_VECTOR_PATH` | `~/.mmind/vector-index` | Vector index directory |
|
|
56
58
|
| `OPENAI_API_KEY` | *(unset)* | Enables OpenAI embeddings; falls back to a local model when absent |
|
|
57
59
|
|
|
58
60
|
### Embeddings
|
package/dist/cli/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAUD,wBAAgB,UAAU,IAAI,eAAe,CAO5C;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAGrD"}
|
package/dist/cli/config.js
CHANGED
|
@@ -4,13 +4,14 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs';
|
|
6
6
|
import { join } from 'path';
|
|
7
|
-
|
|
7
|
+
import { homedir } from 'os';
|
|
8
|
+
const CONFIG_DIR = join(homedir(), '.mmind');
|
|
8
9
|
const CONFIG_FILE = join(CONFIG_DIR, 'config.json');
|
|
9
10
|
const DEFAULTS = {
|
|
10
|
-
sqlitePath: '
|
|
11
|
-
leveldbPath: '
|
|
12
|
-
filesPath: '
|
|
13
|
-
vectorIndexPath: '
|
|
11
|
+
sqlitePath: join(CONFIG_DIR, 'memory.db'),
|
|
12
|
+
leveldbPath: join(CONFIG_DIR, 'leveldb'),
|
|
13
|
+
filesPath: join(CONFIG_DIR, 'files'),
|
|
14
|
+
vectorIndexPath: join(CONFIG_DIR, 'vector-index'),
|
|
14
15
|
vaultPath: null,
|
|
15
16
|
};
|
|
16
17
|
export function loadConfig() {
|
package/dist/cli/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAUpD,MAAM,QAAQ,GAAoB;IAChC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC;IACzC,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;IACxC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;IACpC,eAAe,EAAE,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC;IACjD,SAAS,EAAE,IAAI;CAChB,CAAC;AAEF,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC;IACrD,IAAI,CAAC;QACH,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,EAAqB,CAAC;IAC/F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAoB;IAC7C,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACpE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
*
|
|
9
9
|
* All paths can also be set via environment variables (see MultimodeMindConfig).
|
|
10
10
|
*/
|
|
11
|
+
import { homedir } from 'os';
|
|
12
|
+
import { join } from 'path';
|
|
11
13
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
12
14
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
13
15
|
import { createEmbeddingProvider } from './embeddings/index.js';
|
|
@@ -17,13 +19,20 @@ import { registerRetrieveTool } from './tools/retrieve.js';
|
|
|
17
19
|
import { registerStoreTool } from './tools/store.js';
|
|
18
20
|
import { registerSourcesTool } from './tools/sources.js';
|
|
19
21
|
// ─── Config from environment ──────────────────────────────────────────────────
|
|
22
|
+
// Store data lives under ~/.mmind by default so the server works no matter
|
|
23
|
+
// which directory it is launched from (MCP clients set an arbitrary cwd).
|
|
24
|
+
const HOME_MMIND = join(homedir(), '.mmind');
|
|
20
25
|
function loadConfig() {
|
|
26
|
+
// Vault path may be passed as the first positional argument, e.g.
|
|
27
|
+
// mmind "/path/to/vault"
|
|
28
|
+
// The MMIND_VAULT_PATH env var takes precedence if both are provided.
|
|
29
|
+
const positionalVault = process.argv[2];
|
|
21
30
|
return {
|
|
22
|
-
vaultPath: process.env['MMIND_VAULT_PATH'],
|
|
23
|
-
filesPath: process.env['MMIND_FILES_PATH'] ?? '
|
|
24
|
-
sqlitePath: process.env['MMIND_SQLITE_PATH'] ?? '
|
|
25
|
-
leveldbPath: process.env['MMIND_LEVELDB_PATH'] ?? '
|
|
26
|
-
vectorIndexPath: process.env['MMIND_VECTOR_PATH'] ?? '
|
|
31
|
+
vaultPath: process.env['MMIND_VAULT_PATH'] ?? positionalVault,
|
|
32
|
+
filesPath: process.env['MMIND_FILES_PATH'] ?? join(HOME_MMIND, 'files'),
|
|
33
|
+
sqlitePath: process.env['MMIND_SQLITE_PATH'] ?? join(HOME_MMIND, 'memory.db'),
|
|
34
|
+
leveldbPath: process.env['MMIND_LEVELDB_PATH'] ?? join(HOME_MMIND, 'leveldb'),
|
|
35
|
+
vectorIndexPath: process.env['MMIND_VECTOR_PATH'] ?? join(HOME_MMIND, 'vector-index'),
|
|
27
36
|
openAiApiKey: process.env['OPENAI_API_KEY'],
|
|
28
37
|
retrieveLimit: Number(process.env['MMIND_RETRIEVE_LIMIT'] ?? 10),
|
|
29
38
|
};
|
|
@@ -55,7 +64,7 @@ async function main() {
|
|
|
55
64
|
// ─── MCP server setup ───────────────────────────────────────────────────────
|
|
56
65
|
const server = new McpServer({
|
|
57
66
|
name: 'multimodemind',
|
|
58
|
-
version: '0.1.
|
|
67
|
+
version: '0.1.1',
|
|
59
68
|
});
|
|
60
69
|
registerRetrieveTool(server, router);
|
|
61
70
|
registerStoreTool(server, stores, embedder);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,aAAa,EACb,UAAU,EACV,WAAW,GACZ,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGzD,iFAAiF;AAEjF,SAAS,UAAU;IACjB,OAAO;QACL,SAAS,EAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "multimodemind",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Multi-store memory layer for AI agents, exposed over MCP",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -45,7 +45,6 @@
|
|
|
45
45
|
"gray-matter": "^4.0.3",
|
|
46
46
|
"level": "^10.0.0",
|
|
47
47
|
"openai": "^6.48.0",
|
|
48
|
-
"user": "^0.0.0",
|
|
49
48
|
"vectra": "^0.15.0",
|
|
50
49
|
"zod": "^4.4.3"
|
|
51
50
|
},
|