local-mcp 3.0.121 → 3.0.123

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.
Files changed (3) hide show
  1. package/README.md +10 -2
  2. package/package.json +1 -1
  3. package/setup.js +23 -0
package/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
  ## Install
12
12
 
13
13
  ```bash
14
- curl -fsSL https://local-mcp.com/install?ref=npm | bash
14
+ curl -fsSL 'https://local-mcp.com/install?ref=npm' | bash
15
15
  ```
16
16
 
17
17
  Auto-detects and configures: Claude Desktop, Claude Code, Cursor, Windsurf, VS Code, and Zed. Restart your AI client once.
@@ -141,9 +141,17 @@ npx -y local-mcp@latest status # show server status
141
141
  For the menu bar status icon, auto-start on login, and Cloud Relay:
142
142
 
143
143
  ```bash
144
- curl -fsSL https://local-mcp.com/install?ref=npm | bash
144
+ curl -fsSL 'https://local-mcp.com/install?ref=npm' | bash
145
145
  ```
146
146
 
147
+ ## Uninstall
148
+
149
+ ```bash
150
+ curl -fsSL 'https://local-mcp.com/uninstall' | bash
151
+ ```
152
+
153
+ Stops all background processes, removes the LaunchAgent, deletes the app and binaries, and cleans up MCP config entries from Claude Desktop, Cursor, and other AI clients. Your emails, calendar, and other data are never stored by LMCP and remain completely untouched.
154
+
147
155
  ## Links
148
156
 
149
157
  - [Website](https://local-mcp.com?ref=npm)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "local-mcp",
3
- "version": "3.0.121",
3
+ "version": "3.0.123",
4
4
  "description": "LMCP — connect Claude Desktop, Cursor, Windsurf to Mail, Calendar, Contacts, Teams, OneDrive on macOS. Privacy-first: all data stays on your Mac.",
5
5
  "main": "index.js",
6
6
  "bin": {
package/setup.js CHANGED
@@ -244,6 +244,29 @@ async function runSetup(opts = {}) {
244
244
  } catch { /* config not created yet — will be created on first run */ }
245
245
  }
246
246
 
247
+ // Interactive email prompt — only if TTY and no email from env (LMC-833)
248
+ // Lets the activation nudge reach this machine. Optional, non-blocking.
249
+ if (!email && process.stdin.isTTY) {
250
+ try {
251
+ const rl = require('readline').createInterface({ input: process.stdin, output: process.stdout })
252
+ const ans = await new Promise(res => {
253
+ rl.question('\n Email for support & update notifications (optional, press Enter to skip): ', a => {
254
+ rl.close()
255
+ res((a || '').trim())
256
+ })
257
+ })
258
+ if (ans && ans.includes('@')) {
259
+ email = ans
260
+ try {
261
+ const cfg = _readJson(cfgFile)
262
+ if (!cfg.license_email) { cfg.license_email = email; _writeJson(cfgFile, cfg) }
263
+ } catch {}
264
+ // Email will be sent to the backend on the next heartbeat via license_email
265
+ console.log(` ✓ Email saved`)
266
+ }
267
+ } catch { /* non-fatal — install continues without email */ }
268
+ }
269
+
247
270
  // Health check — verify binary works before showing success
248
271
  const healthOk = _runHealthCheck()
249
272