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.
- package/README.md +2 -2
- package/package.json +1 -1
- 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 —
|
|
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
|
[](https://www.npmjs.com/package/local-mcp)
|
|
6
6
|
[](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
|
-
##
|
|
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.
|
|
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 {
|