local-mcp 3.0.177 → 3.0.178

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 +8 -2
  2. package/download.js +11 -7
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # LMCP
2
2
 
3
- > Give your AI assistant native access to your apps — 189 tools across macOS (107) and Windows (82) for Outlook, Mail, Calendar, Contacts, iMessage, Teams, Slack, WhatsApp, OneDrive, Google Drive, Notes, OmniFocus, Safari, Word, Excel, PowerPoint, Stocks, NordVPN, and more. Everything runs locally. Your data never leaves your machine.
3
+ > Give your AI assistant native access to your apps — 235 tools across macOS (127) and Windows (108) for Outlook, Mail, Calendar, Contacts, iMessage, Teams, Slack, WhatsApp, OneDrive, Google Drive, Notes, OmniFocus, Safari, Word, Excel, PowerPoint, Stocks, NordVPN, Microsoft 365, and more. Everything runs locally. Your data never leaves your machine.
4
4
 
5
5
  [![npm](https://img.shields.io/npm/v/local-mcp)](https://www.npmjs.com/package/local-mcp)
6
6
  [![macOS 12+](https://img.shields.io/badge/macOS-12%2B-blue)](https://local-mcp.com?ref=npm)
@@ -60,9 +60,11 @@ LMCP runs a native MCP server that bridges your Mac apps to any AI client:
60
60
  | **Stocks** | Real-time quotes, historical charts, symbol search |
61
61
  | **Finder** | Search files via Spotlight, list directory contents |
62
62
  | **Safari** | Bookmarks, open tabs, click/type/fill forms, run JavaScript |
63
+ | **Microsoft 365** | Read/send email, manage calendar, search org directory — device code login, works with Outlook.com and work accounts |
64
+ | **ServiceNow** | Search/create incidents, get details, search Knowledge Base — Basic auth |
63
65
  | **NordVPN** | Status, server recommendations, diagnostics |
64
66
 
65
- ## 107 MCP Tools
67
+ ## 127 MCP Tools
66
68
 
67
69
  Email (9): `list_accounts` `list_emails` `read_email` `send_email` `reply_email` `search_emails` `move_email` `save_attachment` `create_email_folder`
68
70
 
@@ -98,6 +100,10 @@ Finder (2): `finder_search` `finder_list`
98
100
 
99
101
  Safari (13): `list_safari_bookmarks` `safari_list_tabs` `safari_read_tab` `safari_search_tabs` `safari_navigate` `safari_go_back` `safari_setup_check` `safari_evaluate_js` `safari_click` `safari_type` `safari_fill_form` `safari_wait_for` `safari_query_selector_all`
100
102
 
103
+ Microsoft 365 (13): `connect_m365_account` `disconnect_m365_account` `m365_list_emails` `m365_read_email` `m365_send_email` `m365_reply_email` `m365_search_emails` `m365_list_events` `m365_create_event` `m365_delete_event` `search_m365_directory` `get_m365_person` `list_m365_people_insights`
104
+
105
+ ServiceNow (7): `connect_servicenow` `disconnect_servicenow` `servicenow_list_my_incidents` `servicenow_search_incidents` `servicenow_get_incident` `servicenow_create_incident` `servicenow_search_kb`
106
+
101
107
  NordVPN (3): `nordvpn_status` `nordvpn_servers` `nordvpn_diagnose`
102
108
 
103
109
  System (7): `run_diagnostics` `update_local_mcp` `update_self_diagnosis` `daily_brief` `report_problem` `request_feature` `request_integration`
package/download.js CHANGED
@@ -388,7 +388,7 @@ async function ensureTray() {
388
388
  // LaunchAgent — auto-start en cada reboot de sesión
389
389
  _writeTrayLaunchAgent(trayApp)
390
390
 
391
- process.stderr.write(` Tray instalado en ${trayApp}\n`)
391
+ process.stderr.write(` Tray instalado en ${trayApp}${process.stdin.isTTY ? '' : ' (se iniciará en el próximo login)'}\n`)
392
392
  return trayApp
393
393
  }
394
394
 
@@ -418,12 +418,16 @@ function _writeTrayLaunchAgent(trayApp) {
418
418
  try {
419
419
  fs.mkdirSync(plistDir, { recursive: true })
420
420
  fs.writeFileSync(plistPath, plist, 'utf8')
421
- // Matar proceso viejo (si estaba corriendo por cualquier medio)
422
- try { execFileSync('pkill', ['-x', 'LocalMCPTray'], { stdio: 'pipe' }) } catch { /* no estaba corriendo */ }
423
- // Recargar LaunchAgent
424
- try { execFileSync('launchctl', ['unload', plistPath], { stdio: 'pipe' }) } catch {}
425
- execFileSync('launchctl', ['load', plistPath], { stdio: 'pipe' })
426
- // launchctl load con RunAtLoad=true arranca el proceso — no necesitamos open()
421
+ // Only kill+reload the tray when NOT inside an active MCP session.
422
+ // When spawned by Claude Desktop / claude-ai, stdin is a pipe (not a TTY).
423
+ // Killing the tray and starting a new one while the MCP server binary is
424
+ // running standalone causes a port-8765 conflict that crashes the session.
425
+ // In that case, just write the plist — the tray will auto-start at next login.
426
+ if (process.stdin.isTTY) {
427
+ try { execFileSync('pkill', ['-x', 'LocalMCPTray'], { stdio: 'pipe' }) } catch { /* not running */ }
428
+ try { execFileSync('launchctl', ['unload', plistPath], { stdio: 'pipe' }) } catch {}
429
+ execFileSync('launchctl', ['load', plistPath], { stdio: 'pipe' })
430
+ }
427
431
  } catch { /* no crítico */ }
428
432
  }
429
433
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "local-mcp",
3
- "version": "3.0.177",
3
+ "version": "3.0.178",
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": {