@llmnesia/mcp 0.1.1 → 0.1.2

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 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. Covers every conversation the
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
@@ -67,11 +74,14 @@ the [Chrome Web Store](https://chromewebstore.google.com/detail/llmnesia/leekfgb
67
74
 
68
75
  1. Install the extension and run a one-time backfill to import existing history.
69
76
  2. After that, the extension captures new conversations as you chat.
70
- 3. It writes them to the local corpus at `~/.llmnesia/corpus/`. `@llmnesia/mcp`
71
- reads from the same folder — there is nothing to configure.
77
+ 3. Run the installer above, fully restart the browser, then open LLMnesia
78
+ Settings and click **Enable automatic sync** once. Chrome requires this
79
+ one-time permission confirmation.
80
+ 4. The extension immediately backfills its indexed history to the local corpus
81
+ at `~/.llmnesia/corpus/`, then syncs new and changed chats automatically.
82
+ `@llmnesia/mcp` reads from the same folder — there is nothing to configure.
72
83
 
73
- If you have not run the extension yet, the corpus will be empty and every
74
- search will come back empty too.
84
+ If nothing has written to the corpus yet, search results will be empty.
75
85
 
76
86
  ## Tools
77
87
 
@@ -92,7 +102,7 @@ received data — check it before concluding a chat does not exist.
92
102
 
93
103
  | Client | How `install` wires it |
94
104
  | --- | --- |
95
- | Claude Code | Runs `claude mcp add` with the absolute Node and installed runtime paths (detects `claude` on PATH). |
105
+ | 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
106
  | Claude Desktop | Edits `claude_desktop_config.json` at the standard OS-specific path. |
97
107
  | Cursor | Edits `~/.cursor/mcp.json`. |
98
108
  | 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 +160,7 @@ llmnesia-mcp --version # print the installed version
150
160
 
151
161
  ## Support
152
162
 
153
- Questions and bug reports: [llmnesia.com/mcp](https://llmnesia.com/mcp) or
154
- hello@llmnesia.com.
163
+ Questions and bug reports: [hello@llmnesia.com](mailto:hello@llmnesia.com).
155
164
 
156
165
  ## License
157
166
 
@@ -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.2" : "0.0.0-dev";
42
+
43
+ export {
44
+ __require,
45
+ __commonJS,
46
+ __export,
47
+ __toESM,
48
+ VERSION
49
+ };