@llmnesia/mcp 0.1.0 → 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 +32 -18
- package/THIRD_PARTY_NOTICES +70 -0
- package/dist/{chunk-OBJD6H4A.js → chunk-7BW63ZTP.js} +3 -38
- package/dist/chunk-BQM5Q4XX.js +49 -0
- package/dist/cli-CNIF4XT3.js +3877 -0
- package/dist/cli.js +34 -2788
- package/dist/mcp.js +9 -6
- package/package.json +3 -3
- package/server.json +3 -3
- package/dist/chunk-OBJD6H4A.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,23 +10,35 @@ 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
|
|
|
17
19
|
```bash
|
|
18
|
-
npx @llmnesia/mcp install
|
|
20
|
+
npx -y @llmnesia/mcp@latest install
|
|
19
21
|
```
|
|
20
22
|
|
|
23
|
+
That is the same command in Terminal on macOS/Linux and PowerShell on Windows.
|
|
24
|
+
It requires Node.js 22.13 or newer; there is no global package install and no
|
|
25
|
+
client config to edit by hand in the normal path.
|
|
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
|
+
|
|
21
32
|
The installer:
|
|
22
33
|
|
|
23
34
|
1. sets up the native host that bridges the browser extension to your local
|
|
24
35
|
corpus,
|
|
25
36
|
2. copies the server into `~/.llmnesia/bin` so it has a permanent home,
|
|
26
|
-
3. detects
|
|
27
|
-
|
|
28
|
-
4. registers that copy with each
|
|
29
|
-
|
|
37
|
+
3. detects supported MCP clients you have (Claude Code, Claude Desktop,
|
|
38
|
+
Cursor, and Codex), and
|
|
39
|
+
4. registers that copy with each detected client — using the client's own CLI
|
|
40
|
+
where available, or after a confirm prompt and backup for config files it
|
|
41
|
+
edits.
|
|
30
42
|
|
|
31
43
|
Then **fully quit and reopen** your MCP client. Clients read their config once
|
|
32
44
|
at startup, so reloading a window is not enough.
|
|
@@ -49,7 +61,7 @@ The copy is self-contained (no `node_modules` beside it) and re-running
|
|
|
49
61
|
### Updating
|
|
50
62
|
|
|
51
63
|
```bash
|
|
52
|
-
npx @llmnesia/mcp@latest install
|
|
64
|
+
npx -y @llmnesia/mcp@latest install
|
|
53
65
|
```
|
|
54
66
|
|
|
55
67
|
Your corpus is untouched; only the server copy is replaced.
|
|
@@ -62,11 +74,14 @@ the [Chrome Web Store](https://chromewebstore.google.com/detail/llmnesia/leekfgb
|
|
|
62
74
|
|
|
63
75
|
1. Install the extension and run a one-time backfill to import existing history.
|
|
64
76
|
2. After that, the extension captures new conversations as you chat.
|
|
65
|
-
3.
|
|
66
|
-
|
|
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.
|
|
67
83
|
|
|
68
|
-
If
|
|
69
|
-
search will come back empty too.
|
|
84
|
+
If nothing has written to the corpus yet, search results will be empty.
|
|
70
85
|
|
|
71
86
|
## Tools
|
|
72
87
|
|
|
@@ -87,10 +102,10 @@ received data — check it before concluding a chat does not exist.
|
|
|
87
102
|
|
|
88
103
|
| Client | How `install` wires it |
|
|
89
104
|
| --- | --- |
|
|
90
|
-
| 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). |
|
|
91
106
|
| Claude Desktop | Edits `claude_desktop_config.json` at the standard OS-specific path. |
|
|
92
107
|
| Cursor | Edits `~/.cursor/mcp.json`. |
|
|
93
|
-
| Codex |
|
|
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. |
|
|
94
109
|
| Others (Windsurf, Zed, LM Studio, …) | Prints the generic stdio block for you to paste. |
|
|
95
110
|
|
|
96
111
|
**Cloud-only clients cannot reach a local stdio server** (web ChatGPT, Lovable,
|
|
@@ -100,7 +115,7 @@ close it.
|
|
|
100
115
|
## Diagnose an install
|
|
101
116
|
|
|
102
117
|
```bash
|
|
103
|
-
npx @llmnesia/mcp doctor
|
|
118
|
+
npx -y @llmnesia/mcp@latest doctor
|
|
104
119
|
```
|
|
105
120
|
|
|
106
121
|
Checks whether the native host is installed, the server runtime is present, the
|
|
@@ -115,7 +130,7 @@ reminder).
|
|
|
115
130
|
## Uninstall
|
|
116
131
|
|
|
117
132
|
```bash
|
|
118
|
-
npx @llmnesia/mcp uninstall
|
|
133
|
+
npx -y @llmnesia/mcp@latest uninstall
|
|
119
134
|
```
|
|
120
135
|
|
|
121
136
|
Removes native-host manifests and registry keys, the copied server in
|
|
@@ -145,8 +160,7 @@ llmnesia-mcp --version # print the installed version
|
|
|
145
160
|
|
|
146
161
|
## Support
|
|
147
162
|
|
|
148
|
-
Questions and bug reports: [llmnesia.com
|
|
149
|
-
hello@llmnesia.com.
|
|
163
|
+
Questions and bug reports: [hello@llmnesia.com](mailto:hello@llmnesia.com).
|
|
150
164
|
|
|
151
165
|
## License
|
|
152
166
|
|
package/THIRD_PARTY_NOTICES
CHANGED
|
@@ -1,5 +1,75 @@
|
|
|
1
1
|
@llmnesia/mcp includes portions of the following third-party software.
|
|
2
2
|
|
|
3
|
+
-------------------------------------------------------------------------------
|
|
4
|
+
cross-spawn
|
|
5
|
+
|
|
6
|
+
The MIT License (MIT)
|
|
7
|
+
|
|
8
|
+
Copyright (c) 2018 Made With MOXY Lda <hello@moxy.studio>
|
|
9
|
+
|
|
10
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
11
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
12
|
+
in the Software without restriction, including without limitation the rights
|
|
13
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
14
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
15
|
+
furnished to do so, subject to the following conditions:
|
|
16
|
+
|
|
17
|
+
The above copyright notice and this permission notice shall be included in
|
|
18
|
+
all copies or substantial portions of the Software.
|
|
19
|
+
|
|
20
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
22
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
23
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
24
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
25
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
26
|
+
THE SOFTWARE.
|
|
27
|
+
|
|
28
|
+
-------------------------------------------------------------------------------
|
|
29
|
+
path-key, shebang-command, and shebang-regex
|
|
30
|
+
|
|
31
|
+
MIT License
|
|
32
|
+
|
|
33
|
+
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
|
34
|
+
Copyright (c) Kevin Mårtensson <kevinmartensson@gmail.com> (github.com/kevva)
|
|
35
|
+
|
|
36
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
37
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
38
|
+
in the Software without restriction, including without limitation the rights
|
|
39
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
40
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
41
|
+
furnished to do so, subject to the following conditions:
|
|
42
|
+
|
|
43
|
+
The above copyright notice and this permission notice shall be included in
|
|
44
|
+
all copies or substantial portions of the Software.
|
|
45
|
+
|
|
46
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
47
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
48
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
49
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
50
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
51
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
52
|
+
THE SOFTWARE.
|
|
53
|
+
|
|
54
|
+
-------------------------------------------------------------------------------
|
|
55
|
+
which and isexe
|
|
56
|
+
|
|
57
|
+
The ISC License
|
|
58
|
+
|
|
59
|
+
Copyright (c) Isaac Z. Schlueter and Contributors
|
|
60
|
+
|
|
61
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
62
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
63
|
+
copyright notice and this permission notice appear in all copies.
|
|
64
|
+
|
|
65
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
66
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
67
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
68
|
+
SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
69
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
70
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
|
|
71
|
+
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
72
|
+
|
|
3
73
|
-------------------------------------------------------------------------------
|
|
4
74
|
@modelcontextprotocol/sdk
|
|
5
75
|
|
|
@@ -1,33 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __commonJS = (cb, mod) => function __require() {
|
|
9
|
-
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
10
|
-
};
|
|
11
|
-
var __export = (target, all) => {
|
|
12
|
-
for (var name in all)
|
|
13
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
14
|
-
};
|
|
15
|
-
var __copyProps = (to, from, except, desc) => {
|
|
16
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
17
|
-
for (let key of __getOwnPropNames(from))
|
|
18
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
19
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
20
|
-
}
|
|
21
|
-
return to;
|
|
22
|
-
};
|
|
23
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
24
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
25
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
26
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
27
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
28
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
29
|
-
mod
|
|
30
|
-
));
|
|
2
|
+
import { createRequire as __llmnesiaCreateRequire } from "node:module";
|
|
3
|
+
const require = __llmnesiaCreateRequire(import.meta.url);
|
|
31
4
|
|
|
32
5
|
// src/config.ts
|
|
33
6
|
import { readFileSync } from "fs";
|
|
@@ -863,13 +836,7 @@ function normalizeMatchRole(role) {
|
|
|
863
836
|
return role === "assistant" || role === "user" || role === "system" ? role : "unknown";
|
|
864
837
|
}
|
|
865
838
|
|
|
866
|
-
// src/version.ts
|
|
867
|
-
var VERSION = true ? "0.1.0" : "0.0.0-dev";
|
|
868
|
-
|
|
869
839
|
export {
|
|
870
|
-
__commonJS,
|
|
871
|
-
__export,
|
|
872
|
-
__toESM,
|
|
873
840
|
resolveCorpusDir,
|
|
874
841
|
Corpus,
|
|
875
842
|
ingestFile,
|
|
@@ -877,7 +844,5 @@ export {
|
|
|
877
844
|
drainInbox,
|
|
878
845
|
SearchIndex,
|
|
879
846
|
openSearchIndex,
|
|
880
|
-
deleteIndexDb
|
|
881
|
-
VERSION
|
|
847
|
+
deleteIndexDb
|
|
882
848
|
};
|
|
883
|
-
//# sourceMappingURL=chunk-OBJD6H4A.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
|
+
};
|