@llmnesia/mcp 0.1.1 → 0.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.
- package/README.md +23 -11
- package/dist/{chunk-4CBIA42T.js → chunk-7BW63ZTP.js} +1 -45
- package/dist/chunk-EBVGUZX2.js +49 -0
- package/dist/cli-JFZO44NP.js +3898 -0
- package/dist/cli.js +32 -3477
- package/dist/mcp.js +7 -6
- package/package.json +2 -3
- package/server.json +2 -2
- package/dist/chunk-4CBIA42T.js.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/mcp.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# @llmnesia/mcp
|
|
2
2
|
|
|
3
3
|
Search your own AI chat history from Claude Desktop, Claude Code, Cursor,
|
|
4
|
-
Codex, and other MCP clients.
|
|
4
|
+
Codex, and other MCP clients. It is designed to cover every conversation the
|
|
5
5
|
[LLMnesia browser extension](https://llmnesia.com) has captured across
|
|
6
6
|
ChatGPT, Claude, Gemini, Character.AI, Grok, DeepSeek, and the rest of the
|
|
7
7
|
supported platforms.
|
|
@@ -10,7 +10,9 @@ supported platforms.
|
|
|
10
10
|
machine and the MCP server speaks [Model Context Protocol](https://modelcontextprotocol.io)
|
|
11
11
|
over stdio.
|
|
12
12
|
|
|
13
|
-
Requires **Node.js ≥ 22.13.0** (for the built-in `node:sqlite` module).
|
|
13
|
+
Requires **Node.js ≥ 22.13.0** (for the built-in `node:sqlite` module). The
|
|
14
|
+
installer checks this before changing anything and prints the exact recovery
|
|
15
|
+
steps when the installed version is too old.
|
|
14
16
|
|
|
15
17
|
## Install
|
|
16
18
|
|
|
@@ -22,6 +24,11 @@ That is the same command in Terminal on macOS/Linux and PowerShell on Windows.
|
|
|
22
24
|
It requires Node.js 22.13 or newer; there is no global package install and no
|
|
23
25
|
client config to edit by hand in the normal path.
|
|
24
26
|
|
|
27
|
+
If `npx` is not recognised, Node.js is not installed. Install the current LTS
|
|
28
|
+
release from [nodejs.org](https://nodejs.org/), reopen Terminal/PowerShell, and
|
|
29
|
+
run the command again. `npx` cannot prompt for or install Node.js because it is
|
|
30
|
+
itself part of Node.js.
|
|
31
|
+
|
|
25
32
|
The installer:
|
|
26
33
|
|
|
27
34
|
1. sets up the native host that bridges the browser extension to your local
|
|
@@ -30,8 +37,11 @@ The installer:
|
|
|
30
37
|
3. detects supported MCP clients you have (Claude Code, Claude Desktop,
|
|
31
38
|
Cursor, and Codex), and
|
|
32
39
|
4. registers that copy with each detected client — using the client's own CLI
|
|
33
|
-
where available, or
|
|
34
|
-
|
|
40
|
+
where available, or with an automatic backup before editing its config file.
|
|
41
|
+
|
|
42
|
+
The `install` command is the approval to perform those setup steps. It does not
|
|
43
|
+
interrupt setup with a separate prompt for every detected app, and it never
|
|
44
|
+
prints existing client configurations or their credentials.
|
|
35
45
|
|
|
36
46
|
Then **fully quit and reopen** your MCP client. Clients read their config once
|
|
37
47
|
at startup, so reloading a window is not enough.
|
|
@@ -67,11 +77,14 @@ the [Chrome Web Store](https://chromewebstore.google.com/detail/llmnesia/leekfgb
|
|
|
67
77
|
|
|
68
78
|
1. Install the extension and run a one-time backfill to import existing history.
|
|
69
79
|
2. After that, the extension captures new conversations as you chat.
|
|
70
|
-
3.
|
|
71
|
-
|
|
80
|
+
3. Run the installer above, fully restart the browser, then open LLMnesia
|
|
81
|
+
Settings and click **Enable automatic sync** once. Chrome requires this
|
|
82
|
+
one-time permission confirmation.
|
|
83
|
+
4. The extension immediately backfills its indexed history to the local corpus
|
|
84
|
+
at `~/.llmnesia/corpus/`, then syncs new and changed chats automatically.
|
|
85
|
+
`@llmnesia/mcp` reads from the same folder — there is nothing to configure.
|
|
72
86
|
|
|
73
|
-
If
|
|
74
|
-
search will come back empty too.
|
|
87
|
+
If nothing has written to the corpus yet, search results will be empty.
|
|
75
88
|
|
|
76
89
|
## Tools
|
|
77
90
|
|
|
@@ -92,7 +105,7 @@ received data — check it before concluding a chat does not exist.
|
|
|
92
105
|
|
|
93
106
|
| Client | How `install` wires it |
|
|
94
107
|
| --- | --- |
|
|
95
|
-
| Claude Code | Runs `claude mcp add` with the absolute Node and installed runtime paths (detects `claude` on PATH). |
|
|
108
|
+
| Claude Code | Runs `claude mcp add --scope user` with the absolute Node and installed runtime paths, making it available in every project (detects `claude` on PATH). |
|
|
96
109
|
| Claude Desktop | Edits `claude_desktop_config.json` at the standard OS-specific path. |
|
|
97
110
|
| Cursor | Edits `~/.cursor/mcp.json`. |
|
|
98
111
|
| Codex | Runs `codex mcp add` with the absolute runtime paths. It also detects the CLI bundled in the macOS desktop app; prints a TOML fallback only if no Codex CLI is available. |
|
|
@@ -150,8 +163,7 @@ llmnesia-mcp --version # print the installed version
|
|
|
150
163
|
|
|
151
164
|
## Support
|
|
152
165
|
|
|
153
|
-
Questions and bug reports: [llmnesia.com
|
|
154
|
-
hello@llmnesia.com.
|
|
166
|
+
Questions and bug reports: [hello@llmnesia.com](mailto:hello@llmnesia.com).
|
|
155
167
|
|
|
156
168
|
## License
|
|
157
169
|
|
|
@@ -1,41 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __llmnesiaCreateRequire } from "node:module";
|
|
3
3
|
const require = __llmnesiaCreateRequire(import.meta.url);
|
|
4
|
-
var __create = Object.create;
|
|
5
|
-
var __defProp = Object.defineProperty;
|
|
6
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
9
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
11
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
12
|
-
}) : x)(function(x) {
|
|
13
|
-
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
14
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
15
|
-
});
|
|
16
|
-
var __commonJS = (cb, mod) => function __require2() {
|
|
17
|
-
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
18
|
-
};
|
|
19
|
-
var __export = (target, all) => {
|
|
20
|
-
for (var name in all)
|
|
21
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
22
|
-
};
|
|
23
|
-
var __copyProps = (to, from, except, desc) => {
|
|
24
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
25
|
-
for (let key of __getOwnPropNames(from))
|
|
26
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
27
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
28
|
-
}
|
|
29
|
-
return to;
|
|
30
|
-
};
|
|
31
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
32
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
33
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
34
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
35
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
36
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
37
|
-
mod
|
|
38
|
-
));
|
|
39
4
|
|
|
40
5
|
// src/config.ts
|
|
41
6
|
import { readFileSync } from "fs";
|
|
@@ -871,14 +836,7 @@ function normalizeMatchRole(role) {
|
|
|
871
836
|
return role === "assistant" || role === "user" || role === "system" ? role : "unknown";
|
|
872
837
|
}
|
|
873
838
|
|
|
874
|
-
// src/version.ts
|
|
875
|
-
var VERSION = true ? "0.1.1" : "0.0.0-dev";
|
|
876
|
-
|
|
877
839
|
export {
|
|
878
|
-
__require,
|
|
879
|
-
__commonJS,
|
|
880
|
-
__export,
|
|
881
|
-
__toESM,
|
|
882
840
|
resolveCorpusDir,
|
|
883
841
|
Corpus,
|
|
884
842
|
ingestFile,
|
|
@@ -886,7 +844,5 @@ export {
|
|
|
886
844
|
drainInbox,
|
|
887
845
|
SearchIndex,
|
|
888
846
|
openSearchIndex,
|
|
889
|
-
deleteIndexDb
|
|
890
|
-
VERSION
|
|
847
|
+
deleteIndexDb
|
|
891
848
|
};
|
|
892
|
-
//# sourceMappingURL=chunk-4CBIA42T.js.map
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createRequire as __llmnesiaCreateRequire } from "node:module";
|
|
3
|
+
const require = __llmnesiaCreateRequire(import.meta.url);
|
|
4
|
+
var __create = Object.create;
|
|
5
|
+
var __defProp = Object.defineProperty;
|
|
6
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
9
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
11
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
12
|
+
}) : x)(function(x) {
|
|
13
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
14
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
15
|
+
});
|
|
16
|
+
var __commonJS = (cb, mod) => function __require2() {
|
|
17
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
18
|
+
};
|
|
19
|
+
var __export = (target, all) => {
|
|
20
|
+
for (var name in all)
|
|
21
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
22
|
+
};
|
|
23
|
+
var __copyProps = (to, from, except, desc) => {
|
|
24
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
25
|
+
for (let key of __getOwnPropNames(from))
|
|
26
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
27
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
28
|
+
}
|
|
29
|
+
return to;
|
|
30
|
+
};
|
|
31
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
32
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
33
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
34
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
35
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
36
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
37
|
+
mod
|
|
38
|
+
));
|
|
39
|
+
|
|
40
|
+
// src/version.ts
|
|
41
|
+
var VERSION = true ? "0.1.3" : "0.0.0-dev";
|
|
42
|
+
|
|
43
|
+
export {
|
|
44
|
+
__require,
|
|
45
|
+
__commonJS,
|
|
46
|
+
__export,
|
|
47
|
+
__toESM,
|
|
48
|
+
VERSION
|
|
49
|
+
};
|