local-mcp 2.2.0 → 2.4.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.
- package/download.js +3 -3
- package/index.js +5 -5
- package/package.json +3 -3
- package/setup.js +5 -5
package/download.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
/**
|
|
3
|
-
* download.js — descarga y cachea el binario standalone de
|
|
3
|
+
* download.js — descarga y cachea el binario standalone de Pilot MCP desde R2.
|
|
4
4
|
* El binario fue compilado con PyInstaller — no requiere Python instalado.
|
|
5
5
|
* Cache: ~/.local/share/local-mcp/bin/{version}/
|
|
6
6
|
*/
|
|
@@ -38,7 +38,7 @@ function getArch() {
|
|
|
38
38
|
const arch = process.arch
|
|
39
39
|
if (arch === 'arm64') return 'darwin-arm64'
|
|
40
40
|
if (arch === 'x64') return 'darwin-x64'
|
|
41
|
-
throw new Error(`Arquitectura no soportada: ${arch}.
|
|
41
|
+
throw new Error(`Arquitectura no soportada: ${arch}. Pilot MCP requiere macOS arm64 o x64.`)
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
/**
|
|
@@ -130,7 +130,7 @@ async function ensureBinary() {
|
|
|
130
130
|
return { binPath, versionDir }
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
process.stderr.write(`\
|
|
133
|
+
process.stderr.write(`\nPilot MCP v${version} no encontrado en cache.\n`)
|
|
134
134
|
process.stderr.write(`Descargando desde ${url}\n`)
|
|
135
135
|
|
|
136
136
|
fs.mkdirSync(versionDir, { recursive: true })
|
package/index.js
CHANGED
|
@@ -18,7 +18,7 @@ const fs = require('fs')
|
|
|
18
18
|
|
|
19
19
|
// Solo macOS
|
|
20
20
|
if (process.platform !== 'darwin') {
|
|
21
|
-
console.error('
|
|
21
|
+
console.error('Pilot MCP solo está disponible para macOS.')
|
|
22
22
|
process.exit(1)
|
|
23
23
|
}
|
|
24
24
|
|
|
@@ -63,7 +63,7 @@ async function main() {
|
|
|
63
63
|
res.on('end', () => {
|
|
64
64
|
try {
|
|
65
65
|
const s = JSON.parse(data)
|
|
66
|
-
console.log(`
|
|
66
|
+
console.log(`Pilot MCP v${s.version} — ${s.server}`)
|
|
67
67
|
console.log(`Licencia: ${s.license?.status} (${s.license?.days_left}d)`)
|
|
68
68
|
} catch { console.log(data) }
|
|
69
69
|
})
|
|
@@ -81,7 +81,7 @@ async function main() {
|
|
|
81
81
|
try {
|
|
82
82
|
runtime = await ensureRuntime()
|
|
83
83
|
} catch (err) {
|
|
84
|
-
process.stderr.write(`\nError al preparar el runtime de
|
|
84
|
+
process.stderr.write(`\nError al preparar el runtime de Pilot MCP:\n${err.message}\n`)
|
|
85
85
|
process.stderr.write(`Intentá reinstalar: npx local-mcp update\n\n`)
|
|
86
86
|
process.exit(1)
|
|
87
87
|
}
|
|
@@ -111,7 +111,7 @@ async function main() {
|
|
|
111
111
|
cfg.mcpServers['local-mcp'] = { command: stableLink }
|
|
112
112
|
fs.writeFileSync(claudeConfig, JSON.stringify(cfg, null, 2))
|
|
113
113
|
process.stderr.write(`\n✓ Config de Claude Desktop actualizado.\n`)
|
|
114
|
-
process.stderr.write(` Reiniciá Claude Desktop para que
|
|
114
|
+
process.stderr.write(` Reiniciá Claude Desktop para que Pilot MCP corra sin node como padre.\n`)
|
|
115
115
|
process.stderr.write(` (Esto elimina los diálogos de permisos repetidos.)\n\n`)
|
|
116
116
|
}
|
|
117
117
|
}
|
|
@@ -124,7 +124,7 @@ async function main() {
|
|
|
124
124
|
})
|
|
125
125
|
|
|
126
126
|
child.on('error', (err) => {
|
|
127
|
-
process.stderr.write(`Error ejecutando
|
|
127
|
+
process.stderr.write(`Error ejecutando Pilot MCP: ${err.message}\n`)
|
|
128
128
|
process.exit(1)
|
|
129
129
|
})
|
|
130
130
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "local-mcp",
|
|
3
|
-
"version": "2.
|
|
4
|
-
"description": "MCP
|
|
3
|
+
"version": "2.4.0",
|
|
4
|
+
"description": "Pilot MCP — 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": {
|
|
7
7
|
"local-mcp": "index.js"
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"productivity",
|
|
61
61
|
"automation"
|
|
62
62
|
],
|
|
63
|
-
"author": "
|
|
63
|
+
"author": "Pilot MCP <hello@local-mcp.com>",
|
|
64
64
|
"license": "SEE LICENSE IN LICENSE",
|
|
65
65
|
"homepage": "https://local-mcp.com",
|
|
66
66
|
"repository": {
|
package/setup.js
CHANGED
|
@@ -109,7 +109,7 @@ async function runSetup(opts = {}) {
|
|
|
109
109
|
const forceAll = opts.all || process.argv.includes('--all')
|
|
110
110
|
|
|
111
111
|
console.log('\n╔══════════════════════════════════════╗')
|
|
112
|
-
console.log('║
|
|
112
|
+
console.log('║ Pilot MCP — Setup Wizard ║')
|
|
113
113
|
console.log('╚══════════════════════════════════════╝\n')
|
|
114
114
|
|
|
115
115
|
// Descargar el binario ahora para poder escribir el stable link en la config
|
|
@@ -118,7 +118,7 @@ async function runSetup(opts = {}) {
|
|
|
118
118
|
let stableArgs = NPX_ARGS
|
|
119
119
|
try {
|
|
120
120
|
const { ensureBinary, CACHE_DIR } = require('./download')
|
|
121
|
-
process.stderr.write('Downloading
|
|
121
|
+
process.stderr.write('Downloading Pilot MCP runtime...\n')
|
|
122
122
|
const { binPath } = await ensureBinary()
|
|
123
123
|
// Crear stable symlink
|
|
124
124
|
const stableLink = path.join(CACHE_DIR, 'local-mcp-server')
|
|
@@ -182,12 +182,12 @@ async function runSetup(opts = {}) {
|
|
|
182
182
|
|
|
183
183
|
console.log('\n──────────────────────────────────────')
|
|
184
184
|
if (configured.length > 0) {
|
|
185
|
-
console.log(`✅
|
|
185
|
+
console.log(`✅ Pilot MCP configured for: ${configured.join(', ')}\n`)
|
|
186
186
|
console.log('┌─────────────────────────────────────────────────────┐')
|
|
187
187
|
console.log('│ NEXT STEP — This is important: │')
|
|
188
188
|
console.log('│ │')
|
|
189
189
|
console.log(`│ Quit and reopen ${configured[0].padEnd(35)}│`)
|
|
190
|
-
console.log('│
|
|
190
|
+
console.log('│ Pilot MCP will appear automatically. │')
|
|
191
191
|
console.log('│ │')
|
|
192
192
|
console.log('│ Then try: "Summarize my unread emails" │')
|
|
193
193
|
console.log('└─────────────────────────────────────────────────────┘\n')
|
|
@@ -218,7 +218,7 @@ async function _installTray() {
|
|
|
218
218
|
const { ensureTray } = require('./download')
|
|
219
219
|
const trayApp = await ensureTray()
|
|
220
220
|
if (!trayApp) return // x64 — skip silencioso
|
|
221
|
-
console.log('\n✓ Tray installed — look for the
|
|
221
|
+
console.log('\n✓ Tray installed — look for the Pilot MCP icon in your menu bar\n')
|
|
222
222
|
// ensureTray() ya escribió el LaunchAgent y lo cargó con RunAtLoad=true
|
|
223
223
|
// No hace falta llamar open() por separado
|
|
224
224
|
} catch (err) {
|