local-mcp 1.67.0 → 1.74.0

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 (2) hide show
  1. package/package.json +1 -1
  2. package/setup.js +22 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "local-mcp",
3
- "version": "1.67.0",
3
+ "version": "1.74.0",
4
4
  "description": "MCP server for macOS \u2014 connect Claude Desktop, Cursor, Windsurf to Mail, Calendar, Contacts, Teams, OneDrive. Privacy-first: all data stays on your Mac.",
5
5
  "main": "index.js",
6
6
  "bin": {
package/setup.js CHANGED
@@ -172,6 +172,27 @@ async function runSetup(opts = {}) {
172
172
  _pingInstall(configured, opts.method || 'setup')
173
173
  }
174
174
 
175
+ function _getMachineId() {
176
+ try {
177
+ // Try reading from macOS Keychain (same as server.py)
178
+ const r = execSync('security find-generic-password -s com.local-mcp.machine-id -a machine-id -w 2>/dev/null', { stdio: 'pipe' })
179
+ const id = r.toString().trim()
180
+ if (id) return id
181
+ } catch {}
182
+ try {
183
+ // Generate from hardware UUID
184
+ const crypto = require('crypto')
185
+ const ioreg = execSync('ioreg -rd1 -c IOPlatformExpertDevice', { stdio: 'pipe' }).toString()
186
+ const match = ioreg.match(/"IOPlatformUUID"\s*=\s*"([^"]+)"/)
187
+ const hwUuid = match ? match[1] : require('os').hostname()
188
+ const id = crypto.createHash('sha256').update(hwUuid).digest('hex').slice(0, 24)
189
+ // Save to Keychain
190
+ try { execSync(`security add-generic-password -s com.local-mcp.machine-id -a machine-id -w ${id} -U 2>/dev/null`, { stdio: 'pipe' }) } catch {}
191
+ return id
192
+ } catch {}
193
+ return ''
194
+ }
195
+
175
196
  function _pingInstall(clients, method) {
176
197
  try {
177
198
  const https = require('https')
@@ -183,6 +204,7 @@ function _pingInstall(clients, method) {
183
204
  node_version: process.version,
184
205
  method: method,
185
206
  clients_configured: clients,
207
+ machine_id: _getMachineId(),
186
208
  })
187
209
  const req = https.request({
188
210
  hostname: 'office-mcp-production.up.railway.app',