@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.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
+2
-2
@@ -6,3 +6,3 @@ #!/usr/bin/env node | ||
| VERSION | ||
| } from "./chunk-LA3BU5ZR.js"; | ||
| } from "./chunk-MI5RBP7Y.js"; | ||
@@ -145,3 +145,3 @@ // src/nodeDownload.ts | ||
| } | ||
| const { main } = await import("./cli-VUTW2WGY.js"); | ||
| const { main } = await import("./cli-GKHVUCEP.js"); | ||
| return main(); | ||
@@ -148,0 +148,0 @@ } |
+6
-3
| { | ||
| "name": "@llmnesia/mcp", | ||
| "version": "0.1.10", | ||
| "version": "0.1.12", | ||
| "private": false, | ||
@@ -42,3 +42,4 @@ "type": "module", | ||
| "scripts": { | ||
| "build": "tsup", | ||
| "build": "tsup && npm run build:mcpb", | ||
| "build:mcpb": "node scripts/build-mcpb.mjs", | ||
| "prepack": "npm run build", | ||
@@ -48,3 +49,4 @@ "dev": "tsx src/cli.ts", | ||
| "typecheck": "tsc --noEmit", | ||
| "test": "vitest run" | ||
| "test": "vitest run", | ||
| "test:mcpb": "node scripts/smoke-mcpb.mjs" | ||
| }, | ||
@@ -57,2 +59,3 @@ "comment:deps": "This package publishes with ZERO runtime dependencies — everything is bundled into dist by tsup (see noExternal in tsup.config.ts). That is not just an optimisation: `install` copies dist/ to ~/.llmnesia/bin so MCP clients can spawn it by absolute path, and nothing puts a node_modules beside that copy, so any unbundled import would fail there with ERR_MODULE_NOT_FOUND. Listing them as runtime deps would also be false comfort — npm would install them next to the package, not next to the copy that actually runs. The workspace packages additionally must not appear in the install graph at all: shared-types does not exist on the registry, and the published claude-code-host is an older build without the exports this package needs.", | ||
| "@types/node": "^22.13.0", | ||
| "adm-zip": "^0.5.18", | ||
| "chokidar": "^4.0.3", | ||
@@ -59,0 +62,0 @@ "cross-spawn": "^7.0.6", |
+8
-1
@@ -58,2 +58,9 @@ # @llmnesia/mcp | ||
| 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. | ||
| The `install` command is the approval to perform those setup steps. It does not | ||
@@ -125,3 +132,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 | Edits `claude_desktop_config.json` at the standard OS-specific path, preparing it in advance if Claude Desktop is installed later. | | ||
| | Claude Desktop | Windows opens Claude's regular packaged-extension installer and removes obsolete LLMnesia JSON entries. macOS keeps the working local JSON registration. | | ||
| | Cursor | Edits `~/.cursor/mcp.json`, preparing it in advance if Cursor is installed later. | | ||
@@ -128,0 +135,0 @@ | 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. | |
+2
-2
@@ -6,3 +6,3 @@ { | ||
| "description": "Search your AI chat history from Claude, Cursor, Codex, and other MCP clients.", | ||
| "version": "0.1.3", | ||
| "version": "0.1.12", | ||
| "packages": [ | ||
@@ -13,3 +13,3 @@ { | ||
| "identifier": "@llmnesia/mcp", | ||
| "version": "0.1.3", | ||
| "version": "0.1.12", | ||
| "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.10" : "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 too big to display
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.
Found 2 instances
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
1130385
18.27%12
9.09%27169
0.45%191
3.8%13
8.33%54
8%5
25%