@llmnesia/mcp
Advanced tools
| #!/usr/bin/env node | ||
| import { createRequire as __llmnesiaCreateRequire } from "node:module"; | ||
| const require = __llmnesiaCreateRequire(import.meta.url); | ||
| var __create = Object.create; | ||
| var __defProp = Object.defineProperty; | ||
| var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | ||
| var __getOwnPropNames = Object.getOwnPropertyNames; | ||
| var __getProtoOf = Object.getPrototypeOf; | ||
| var __hasOwnProp = Object.prototype.hasOwnProperty; | ||
| var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { | ||
| get: (a, b) => (typeof require !== "undefined" ? require : a)[b] | ||
| }) : x)(function(x) { | ||
| if (typeof require !== "undefined") return require.apply(this, arguments); | ||
| throw Error('Dynamic require of "' + x + '" is not supported'); | ||
| }); | ||
| var __commonJS = (cb, mod) => function __require2() { | ||
| return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; | ||
| }; | ||
| var __export = (target, all) => { | ||
| for (var name in all) | ||
| __defProp(target, name, { get: all[name], enumerable: true }); | ||
| }; | ||
| var __copyProps = (to, from, except, desc) => { | ||
| if (from && typeof from === "object" || typeof from === "function") { | ||
| for (let key of __getOwnPropNames(from)) | ||
| if (!__hasOwnProp.call(to, key) && key !== except) | ||
| __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
| } | ||
| return to; | ||
| }; | ||
| var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( | ||
| // If the importer is in node compatibility mode or this is not an ESM | ||
| // file that has been converted to a CommonJS file using a Babel- | ||
| // compatible transform (i.e. "__esModule" has not been set), then set | ||
| // "default" to the CommonJS "module.exports" for node compatibility. | ||
| isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, | ||
| mod | ||
| )); | ||
| // src/version.ts | ||
| var VERSION = true ? "0.1.13" : "0.0.0-dev"; | ||
| export { | ||
| __require, | ||
| __commonJS, | ||
| __export, | ||
| __toESM, | ||
| VERSION | ||
| }; |
Sorry, the diff of this file is too big to display
+2
-2
@@ -6,3 +6,3 @@ #!/usr/bin/env node | ||
| VERSION | ||
| } from "./chunk-MI5RBP7Y.js"; | ||
| } from "./chunk-7DAYOGB6.js"; | ||
@@ -145,3 +145,3 @@ // src/nodeDownload.ts | ||
| } | ||
| const { main } = await import("./cli-GKHVUCEP.js"); | ||
| const { main } = await import("./cli-OJM47LQR.js"); | ||
| return main(); | ||
@@ -148,0 +148,0 @@ } |
+1
-1
| { | ||
| "name": "@llmnesia/mcp", | ||
| "version": "0.1.12", | ||
| "version": "0.1.13", | ||
| "private": false, | ||
@@ -5,0 +5,0 @@ "type": "module", |
+44
-8
@@ -51,3 +51,3 @@ # @llmnesia/mcp | ||
| 2. copies the server into `~/.llmnesia/bin` so it has a permanent home, | ||
| 3. sets up the supported desktop AI apps (Claude Code, Claude Desktop, Cursor, | ||
| 3. sets up the supported desktop AI apps (Claude Code, Cursor, | ||
| and Codex/ChatGPT), and | ||
@@ -59,9 +59,28 @@ 4. registers that copy using the client's own CLI where available, or with an | ||
| On Windows, Claude Desktop uses its supported packaged-extension flow instead | ||
| of the legacy JSON config. If Claude is installed, its normal LLMnesia install | ||
| window opens during setup; click **Install** once. Claude can run that extension | ||
| with its built-in Node.js, while the system Node installation continues to run | ||
| the browser helper and other desktop AI integrations. If Claude is installed | ||
| later, run the same LLMnesia setup command once more. | ||
| Claude Desktop on Windows does not provide a supported API for third-party | ||
| installers to add a local desktop extension. LLMnesia therefore leaves any | ||
| existing Claude configuration untouched rather than claiming that Claude has | ||
| been connected. | ||
| ### Claude Desktop on Windows (current one-time manual step) | ||
| Until LLMnesia is available in Claude's extension directory, Claude Desktop on | ||
| Windows has one extra, manual step. First run `install` above so the local | ||
| browser bridge and corpus exist. Then download the official LLMnesia | ||
| `llmnesia.mcpb` desktop-extension file from LLMnesia and use Claude Desktop's | ||
| **Settings → Extensions → Install extension** flow to install it. Fully quit | ||
| and reopen Claude Desktop afterwards. | ||
| This is deliberately separate from the npm command: Claude does not provide a | ||
| supported Windows API for another installer to silently add an `.mcpb` | ||
| extension. The command therefore never edits Claude's internal extension state | ||
| or reports a false success. The packaged extension itself is read-only: it can | ||
| search, list, and read the local corpus but cannot modify it. | ||
| The future Claude Directory listing is a convenience distribution route, not a | ||
| dependency for the general LLMnesia release. It will replace this one manual | ||
| Claude step with Claude's own in-app install button if Anthropic selects the | ||
| extension. See [`docs/CLAUDE_DESKTOP_RELEASE_PLAN.md`](../docs/CLAUDE_DESKTOP_RELEASE_PLAN.md) | ||
| for the release and directory-submission plan. | ||
| The `install` command is the approval to perform those setup steps. It does not | ||
@@ -133,3 +152,3 @@ interrupt setup with a separate prompt for every detected app, and it never | ||
| | Claude Code | Runs `claude mcp add --scope user` with the absolute Node and installed runtime paths when available. Otherwise it writes the documented user-scope `~/.claude.json` entry, so Windows users do not need the `claude` command on PATH. | | ||
| | Claude Desktop | Windows opens Claude's regular packaged-extension installer and removes obsolete LLMnesia JSON entries. macOS keeps the working local JSON registration. | | ||
| | Claude Desktop | macOS uses the working local JSON registration. On Windows, run `install` for browser sync, then install the official `llmnesia.mcpb` once in Claude Desktop; Claude exposes no supported external installation API for custom desktop extensions. | | ||
| | Cursor | Edits `~/.cursor/mcp.json`, preparing it in advance if Cursor is installed later. | | ||
@@ -191,4 +210,21 @@ | Codex / ChatGPT desktop | Runs `codex mcp add` with the absolute runtime paths when available. If the bundled CLI is unavailable, the installer safely edits `~/.codex/config.toml` itself and backs up existing settings first, including preparing it for a later installation. Read-only LLMnesia tools are configured to run without repeated approval prompts; writes still ask. | | ||
| ## Privacy Policy | ||
| The MCP server reads and writes only the LLMnesia corpus stored on the user's | ||
| own computer. It does not upload conversation content, titles, URLs, prompts, | ||
| responses, or search queries to LLMnesia or to any third party, and it makes no | ||
| analytics or advertising requests of its own. | ||
| The browser extension separately sends limited, non-content product analytics | ||
| to PostHog. Conversation data and MCP searches are excluded. The complete | ||
| policy explains collection, local storage, third-party processing, retention, | ||
| deletion, and contact details: | ||
| [LLMnesia Privacy Policy](https://www.llmnesia.com/privacy-policy). | ||
| The local MCP corpus remains on the device until the user deletes it. Running | ||
| `uninstall` deliberately leaves that corpus intact so uninstalling the helper | ||
| cannot accidentally destroy the user's history. | ||
| ## License | ||
| MIT — see [LICENSE](./LICENSE). |
+2
-2
@@ -6,3 +6,3 @@ { | ||
| "description": "Search your AI chat history from Claude, Cursor, Codex, and other MCP clients.", | ||
| "version": "0.1.12", | ||
| "version": "0.1.13", | ||
| "packages": [ | ||
@@ -13,3 +13,3 @@ { | ||
| "identifier": "@llmnesia/mcp", | ||
| "version": "0.1.12", | ||
| "version": "0.1.13", | ||
| "transport": { | ||
@@ -16,0 +16,0 @@ "type": "stdio" |
| #!/usr/bin/env node | ||
| import { createRequire as __llmnesiaCreateRequire } from "node:module"; | ||
| const require = __llmnesiaCreateRequire(import.meta.url); | ||
| var __create = Object.create; | ||
| var __defProp = Object.defineProperty; | ||
| var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | ||
| var __getOwnPropNames = Object.getOwnPropertyNames; | ||
| var __getProtoOf = Object.getPrototypeOf; | ||
| var __hasOwnProp = Object.prototype.hasOwnProperty; | ||
| var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, { | ||
| get: (a, b) => (typeof require !== "undefined" ? require : a)[b] | ||
| }) : x)(function(x) { | ||
| if (typeof require !== "undefined") return require.apply(this, arguments); | ||
| throw Error('Dynamic require of "' + x + '" is not supported'); | ||
| }); | ||
| var __commonJS = (cb, mod) => function __require2() { | ||
| return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; | ||
| }; | ||
| var __export = (target, all) => { | ||
| for (var name in all) | ||
| __defProp(target, name, { get: all[name], enumerable: true }); | ||
| }; | ||
| var __copyProps = (to, from, except, desc) => { | ||
| if (from && typeof from === "object" || typeof from === "function") { | ||
| for (let key of __getOwnPropNames(from)) | ||
| if (!__hasOwnProp.call(to, key) && key !== except) | ||
| __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
| } | ||
| return to; | ||
| }; | ||
| var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( | ||
| // If the importer is in node compatibility mode or this is not an ESM | ||
| // file that has been converted to a CommonJS file using a Babel- | ||
| // compatible transform (i.e. "__esModule" has not been set), then set | ||
| // "default" to the CommonJS "module.exports" for node compatibility. | ||
| isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, | ||
| mod | ||
| )); | ||
| // src/version.ts | ||
| var VERSION = true ? "0.1.12" : "0.0.0-dev"; | ||
| export { | ||
| __require, | ||
| __commonJS, | ||
| __export, | ||
| __toESM, | ||
| VERSION | ||
| }; |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
227
18.85%52
-3.7%4
-20%1122233
-0.72%27126
-0.16%