local-mcp 3.0.277 → 3.0.279

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 +1 -1
  2. package/index.js +24 -0
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -66,7 +66,7 @@ LMCP runs a native MCP server that bridges your Mac apps to any AI client:
66
66
  | **ServiceNow** | Search/create incidents, get details, search Knowledge Base — Basic auth |
67
67
  | **NordVPN** | Status, server recommendations, diagnostics |
68
68
 
69
- ## 153 MCP Tools (macOS)
69
+ ## 156 MCP Tools (macOS)
70
70
 
71
71
  Email (10): `list_accounts` `list_email_accounts` `list_emails` `read_email` `send_email` `reply_email` `search_emails` `move_email` `save_attachment` `create_email_folder`
72
72
 
package/index.js CHANGED
@@ -121,6 +121,30 @@ async function main() {
121
121
  return
122
122
  }
123
123
 
124
+ // ── Honor an explicit uninstall ─────────────────────────────────────────────
125
+ // The user uninstalled (tray "Uninstall" or `npx local-mcp uninstall`), which writes
126
+ // ~/.local/share/local-mcp/.uninstalled. An AI client (Claude Desktop / Cursor /
127
+ // Claude Code) that was running at uninstall time auto-respawns its MCP server
128
+ // subprocess from its still-in-memory config — and the default path below would
129
+ // re-download the runtime, start heartbeating, and bootstrap the tray, resurrecting
130
+ // a machine the user just removed (~40% of uninstalls came back within minutes,
131
+ // measured 2026-06-12). ensureTray() already honored the sentinel, but the stdio
132
+ // server path never did. Refuse to start so a respawn can't resurrect the install.
133
+ // Legit reinstalls clear the sentinel first: `npx local-mcp setup` (above) and
134
+ // install.sh (curl/DMG, which rm's it before copying the bundle).
135
+ {
136
+ const { CACHE_DIR: _cacheDir } = require('./download')
137
+ const sentinel = path.join(path.dirname(_cacheDir), '.uninstalled')
138
+ if (fs.existsSync(sentinel)) {
139
+ process.stderr.write(
140
+ '[LMCP] Local MCP was uninstalled — not starting.\n' +
141
+ ' Reinstall: npx local-mcp setup\n' +
142
+ " Or remove the \"local-mcp\" entry from this app's MCP config.\n"
143
+ )
144
+ process.exit(0)
145
+ }
146
+ }
147
+
124
148
  // ── Modo default: stdio MCP server ──────────────────────────────────────────
125
149
  const { CACHE_DIR } = require('./download')
126
150
  const binName = process.platform === 'win32' ? 'local-mcp-server.exe' : 'local-mcp-server'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "local-mcp",
3
- "version": "3.0.277",
3
+ "version": "3.0.279",
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": {