local-mcp 3.0.133 → 3.0.134

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 +2 -2
  2. package/package.json +1 -1
  3. package/setup.js +27 -0
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # LMCP
2
2
 
3
- > Give your AI assistant native access to Mac apps — 107 tools for Mail, Calendar, Contacts, iMessage, Teams, Slack, WhatsApp, OneDrive, 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 Mac apps — 105 tools for Mail, Calendar, Contacts, iMessage, Teams, Slack, WhatsApp, OneDrive, Notes, OmniFocus, Safari, Word, Excel, PowerPoint, Stocks, NordVPN, 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)
@@ -61,7 +61,7 @@ LMCP runs a native MCP server that bridges your Mac apps to any AI client:
61
61
  | **Safari** | Bookmarks, open tabs, click/type/fill forms, run JavaScript |
62
62
  | **NordVPN** | Status, server recommendations, diagnostics |
63
63
 
64
- ## 107 MCP Tools
64
+ ## 105 MCP Tools
65
65
 
66
66
  Email (9): `list_accounts` `list_emails` `read_email` `send_email` `reply_email` `search_emails` `move_email` `save_attachment` `create_email_folder`
67
67
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "local-mcp",
3
- "version": "3.0.133",
3
+ "version": "3.0.134",
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
@@ -224,6 +224,7 @@ async function runSetup(opts = {}) {
224
224
  for (const client of detected) {
225
225
  try {
226
226
  injectMcpConfig(client, stableCommand, stableArgs)
227
+ _trackConfigWritten(client.id || client.name, client.name)
227
228
  configured.push(client.name)
228
229
  console.log(`✓ ${client.name} configured`)
229
230
  } catch (err) {
@@ -538,6 +539,32 @@ function _migrateCurlLaunchAgent() {
538
539
  } catch { /* non-fatal — don't block install on unexpected plist content */ }
539
540
  }
540
541
 
542
+ function _trackConfigWritten(clientId, clientName) {
543
+ try {
544
+ const https = require('https')
545
+ const machineId = _getMachineId()
546
+ const data = JSON.stringify({
547
+ stage: 'config_written',
548
+ client_id: clientId,
549
+ client_name: clientName,
550
+ machine_id: machineId,
551
+ method: process.env.LMCP_METHOD || 'npx-setup',
552
+ install_id: process.env.INSTALL_ID || '',
553
+ })
554
+ const req = https.request({
555
+ hostname: BACKEND_HOST,
556
+ path: '/install-event',
557
+ method: 'POST',
558
+ headers: { 'Content-Type': 'application/json', 'Content-Length': data.length },
559
+ timeout: 5000,
560
+ })
561
+ req.on('response', (res) => res.resume())
562
+ req.on('error', () => {})
563
+ req.write(data)
564
+ req.end()
565
+ } catch { /* non-fatal */ }
566
+ }
567
+
541
568
  function _trackEmailPrompt(result) {
542
569
  // result: 'shown' | 'submitted' | 'skipped' | 'not_shown_no_tty' | 'failed'
543
570
  try {