local-mcp 3.0.414 → 3.0.416
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 +1 -1
- package/download.js +27 -9
- package/package.json +2 -2
- package/setup.js +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Local MCP
|
|
2
2
|
|
|
3
|
-
> **Use your Mac from ChatGPT & Claude.ai on the web** — plus
|
|
3
|
+
> **Use your Mac from ChatGPT & Claude.ai on the web** — plus 192+ local tools for Claude Desktop, Cursor, Windsurf, VS Code & Zed. Connect any AI to Mail, Calendar, Contacts, iMessage, Teams, Slack, WhatsApp, Signal, OneDrive, Google Drive, Microsoft 365, Notes, Reminders, OmniFocus, Word/Excel/PowerPoint and more. Runs on your computer, no API keys, free — local tools read your data on your machine, and your AI provider receives the content needed for each request.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/local-mcp)
|
|
6
6
|
[](https://local-mcp.com?ref=npm)
|
package/download.js
CHANGED
|
@@ -198,8 +198,8 @@ function _getMachineId(deps = {}) {
|
|
|
198
198
|
return crypto.createHash('sha256').update(os.hostname()).digest('hex').slice(0, 16)
|
|
199
199
|
}
|
|
200
200
|
|
|
201
|
-
function getArch() {
|
|
202
|
-
const plat =
|
|
201
|
+
function getArch(platform = process.platform) {
|
|
202
|
+
const plat = platform === 'win32' ? 'windows' : platform === 'linux' ? 'linux' : 'darwin'
|
|
203
203
|
const arch = process.arch
|
|
204
204
|
if (arch === 'arm64') return `${plat}-arm64`
|
|
205
205
|
if (arch === 'x64') return `${plat}-amd64`
|
|
@@ -330,15 +330,22 @@ async function downloadFile(url, destPath) {
|
|
|
330
330
|
* Asegura que el binario esté descargado y listo.
|
|
331
331
|
* @returns {Promise<{binPath: string}>}
|
|
332
332
|
*/
|
|
333
|
-
async function ensureBinary() {
|
|
334
|
-
|
|
335
|
-
|
|
333
|
+
async function ensureBinary(deps = {}) {
|
|
334
|
+
// Seam for tests (same idiom as ensureTray's `deps`, #2654): lets a test pin the
|
|
335
|
+
// platform and stub the network without touching process.platform or real HOME.
|
|
336
|
+
const {
|
|
337
|
+
platform = process.platform,
|
|
338
|
+
getLatest = getLatestBinary,
|
|
339
|
+
download = downloadFile,
|
|
340
|
+
} = deps
|
|
341
|
+
const arch = getArch(platform)
|
|
342
|
+
const info = await getLatest()
|
|
336
343
|
const version = info.version
|
|
337
344
|
|
|
338
345
|
// On non-darwin, use the Go server binary (cross-platform).
|
|
339
346
|
// The Go binary is a single file, not a nested tarball.
|
|
340
|
-
if (
|
|
341
|
-
const binName =
|
|
347
|
+
if (platform !== 'darwin') {
|
|
348
|
+
const binName = platform === 'win32' ? 'lmcp-server.exe' : 'lmcp-server'
|
|
342
349
|
const binPath = path.join(CACHE_DIR, binName)
|
|
343
350
|
const versionFile = path.join(CACHE_DIR, '.go-server-version')
|
|
344
351
|
|
|
@@ -354,6 +361,17 @@ async function ensureBinary() {
|
|
|
354
361
|
const archKey = arch.replace('-', '_') // windows-amd64 → windows_amd64
|
|
355
362
|
const publishedUrl = (info[archKey] && info[archKey].startsWith('http')) ? info[archKey] : null
|
|
356
363
|
|
|
364
|
+
// Linux has no published artifact today — unlike Windows, where windows_amd64
|
|
365
|
+
// IS published — so composing the fallback URL below only ever 404s: 817
|
|
366
|
+
// requests/week of dead traffic from MCP sandboxes testing the npm package
|
|
367
|
+
// (#3794). Fail before any network call instead of catching the 404 after.
|
|
368
|
+
if (platform === 'linux' && !publishedUrl) {
|
|
369
|
+
throw new Error(
|
|
370
|
+
'Local MCP does not support Linux yet.\n' +
|
|
371
|
+
' Check https://local-mcp.com for updates.'
|
|
372
|
+
)
|
|
373
|
+
}
|
|
374
|
+
|
|
357
375
|
let url, platformVersion
|
|
358
376
|
if (publishedUrl) {
|
|
359
377
|
platformVersion = versionFromArtifactUrl(publishedUrl, arch)
|
|
@@ -390,7 +408,7 @@ async function ensureBinary() {
|
|
|
390
408
|
const tarPath = path.join(CACHE_DIR, `go-server-${platformVersion}.tar.gz`)
|
|
391
409
|
|
|
392
410
|
try {
|
|
393
|
-
await
|
|
411
|
+
await download(url, tarPath)
|
|
394
412
|
process.stderr.write(` Extracting...\n`)
|
|
395
413
|
extractTar(tarPath, CACHE_DIR)
|
|
396
414
|
fs.unlinkSync(tarPath)
|
|
@@ -415,7 +433,7 @@ async function ensureBinary() {
|
|
|
415
433
|
if (!fs.existsSync(binPath)) {
|
|
416
434
|
throw new Error(`Binary not found after extraction: ${binPath}`)
|
|
417
435
|
}
|
|
418
|
-
if (
|
|
436
|
+
if (platform !== 'win32') fs.chmodSync(binPath, 0o755)
|
|
419
437
|
fs.writeFileSync(versionFile, platformVersion)
|
|
420
438
|
|
|
421
439
|
process.stderr.write(` Ready at ${CACHE_DIR}\n`)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "local-mcp",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.416",
|
|
4
4
|
"description": "Let ChatGPT, Claude, Cursor & any MCP client actually use your Mac or Windows PC — read & reply to email, manage your calendar, text over iMessage, find files, work with Teams, Slack & Office. Runs locally, no API keys, free.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"README.md"
|
|
19
19
|
],
|
|
20
20
|
"engines": {
|
|
21
|
-
"node": ">=
|
|
21
|
+
"node": ">=20"
|
|
22
22
|
},
|
|
23
23
|
"os": [
|
|
24
24
|
"darwin",
|
package/setup.js
CHANGED
|
@@ -530,7 +530,7 @@ async function runSetup(opts = {}) {
|
|
|
530
530
|
if (configured.length > 0) {
|
|
531
531
|
if (healthOk) {
|
|
532
532
|
console.log(`✅ LMCP configured for: ${configured.join(', ')}\n`)
|
|
533
|
-
console.log(' ✓ Server binary verified —
|
|
533
|
+
console.log(' ✓ Server binary verified — 192+ tools ready\n')
|
|
534
534
|
} else {
|
|
535
535
|
console.log(`⚠ LMCP configured for: ${configured.join(', ')}`)
|
|
536
536
|
console.log(' Server binary could not be verified — it may still work after restart.\n')
|