local-mcp 1.44.0 → 1.44.2

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 +107 -0
  2. package/index.js +15 -1
  3. package/package.json +1 -1
package/README.md ADDED
@@ -0,0 +1,107 @@
1
+ # local-mcp
2
+
3
+ **Connect Claude Desktop, Cursor, Windsurf, VS Code and other AI agents to Mail, Calendar, Contacts, Microsoft Teams and OneDrive on Mac.**
4
+
5
+ No cloud. No tokens. No API keys. Your data never leaves your machine.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ npm install -g local-mcp
11
+ ```
12
+
13
+ Auto-detects and configures all your AI clients. Restart your AI client once — done.
14
+
15
+ ## Zero-install (Claude Desktop / Cursor / Windsurf / VS Code)
16
+
17
+ Add directly to your MCP config file and restart:
18
+
19
+ ```json
20
+ {
21
+ "mcpServers": {
22
+ "local-mcp": {
23
+ "command": "npx",
24
+ "args": ["-y", "local-mcp@latest"]
25
+ }
26
+ }
27
+ }
28
+ ```
29
+
30
+ Config file locations:
31
+ - **Claude Desktop**: `~/Library/Application Support/Claude/claude_desktop_config.json`
32
+ - **Cursor**: `~/.cursor/mcp.json`
33
+ - **Windsurf**: `~/.codeium/windsurf/mcp_config.json`
34
+ - **VS Code (Cline)**: `~/.vscode/mcp.json`
35
+ - **Zed**: `~/.config/zed/settings.json`
36
+
37
+ ## Setup wizard
38
+
39
+ ```bash
40
+ local-mcp setup
41
+ ```
42
+
43
+ Detects all installed clients and writes the config automatically.
44
+
45
+ ## What it does
46
+
47
+ Local MCP runs a native MCP (Model Context Protocol) server that bridges your Mac apps directly to your AI client:
48
+
49
+ | Module | Tools |
50
+ |--------|-------|
51
+ | **Email** | list, read, search, send, reply, move (via Mail.app) |
52
+ | **Calendar** | list events, create events (via Calendar.app) |
53
+ | **Contacts** | search, list (via Contacts.app) |
54
+ | **Teams** | read chats, channels, messages (no tokens — reads local cache) |
55
+ | **OneDrive** | list, read, write, search, move, delete files |
56
+ | **Word** | read, create, append documents |
57
+ | **Excel** | read, write cells, create spreadsheets |
58
+ | **PowerPoint** | read, create presentations |
59
+ | **PDF** | extract text |
60
+
61
+ ## Requirements
62
+
63
+ - macOS 12 Monterey or later (Apple Silicon and Intel)
64
+ - Node.js 18+
65
+ - The AI client you want to use (Claude Desktop, Cursor, Windsurf, etc.)
66
+
67
+ ## How it works
68
+
69
+ The npm package downloads a Python runtime (~34 MB, cached in `~/.local/share/local-mcp/`) and launches the MCP server in stdio mode. The server communicates directly with your AI client — no ports, no network.
70
+
71
+ For the full experience with menu bar status icon and auto-start:
72
+
73
+ ```bash
74
+ curl -fsSL https://local-mcp.com/install | bash
75
+ ```
76
+
77
+ ## Claude.ai web connector
78
+
79
+ For Claude.ai (web), add a custom connector:
80
+
81
+ ```
82
+ URL: https://www.local-mcp.com/mcp
83
+ ```
84
+
85
+ Settings → Connectors → Add custom connector → paste the URL.
86
+
87
+ ## Privacy & Security
88
+
89
+ - All data stays on your Mac — no cloud processing
90
+ - Teams integration reads local IndexedDB cache — no Graph API, no OAuth
91
+ - Unique API key per installation
92
+ - 14-day free trial, no credit card
93
+
94
+ ## Links
95
+
96
+ - **Website**: https://local-mcp.com
97
+ - **Pricing**: https://local-mcp.com/#pricing
98
+ - **Support**: support@local-mcp.com
99
+
100
+ ## Commands
101
+
102
+ ```bash
103
+ local-mcp setup # configure all detected AI clients
104
+ local-mcp update # force re-download of the runtime
105
+ local-mcp uninstall # remove cached runtime
106
+ local-mcp status # show server status
107
+ ```
package/index.js CHANGED
@@ -84,14 +84,28 @@ async function main() {
84
84
 
85
85
  const { pythonBin, serverPath, runtimeDir } = runtime
86
86
 
87
- // Frameworks bundleados (libssl, libcrypto, etc.)
87
+ // Variables de entorno para el servidor Python
88
88
  const frameworksPath = path.join(runtimeDir, 'Frameworks')
89
+ const libPath = path.join(runtimeDir, 'lib', 'python3.13')
89
90
  const env = { ...process.env }
91
+
92
+ // Frameworks bundleados (libssl, libcrypto, liblzma, etc.)
90
93
  if (require('fs').existsSync(frameworksPath)) {
91
94
  env.DYLD_FRAMEWORK_PATH = frameworksPath + (env.DYLD_FRAMEWORK_PATH ? ':' + env.DYLD_FRAMEWORK_PATH : '')
92
95
  env.DYLD_LIBRARY_PATH = frameworksPath + (env.DYLD_LIBRARY_PATH ? ':' + env.DYLD_LIBRARY_PATH : '')
93
96
  }
94
97
 
98
+ // PYTHONPATH: asegura que el Python del runtime encuentre sus módulos
99
+ const sitePkgs = path.join(libPath, 'site-packages')
100
+ const libDynload = path.join(libPath, 'lib-dynload')
101
+ const zipLib = path.join(path.dirname(libPath), 'python313.zip')
102
+ const pyPaths = [zipLib, libPath, sitePkgs, libDynload]
103
+ .filter(p => require('fs').existsSync(p))
104
+ if (pyPaths.length > 0) {
105
+ env.PYTHONPATH = pyPaths.join(':') + (env.PYTHONPATH ? ':' + env.PYTHONPATH : '')
106
+ env.PYTHONNOUSERSITE = '1' // no mezclar con site-packages del sistema
107
+ }
108
+
95
109
  const extraArgs = process.argv.slice(cmd ? 2 : 3)
96
110
  const result = spawnSync(pythonBin, [serverPath, 'stdio', ...extraArgs], {
97
111
  stdio: 'inherit',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "local-mcp",
3
- "version": "1.44.0",
3
+ "version": "1.44.2",
4
4
  "description": "Connect Claude, Cursor, Windsurf and other AI agents to Mail, Calendar, Contacts, Teams and OneDrive on Mac — no cloud, no tokens",
5
5
  "main": "index.js",
6
6
  "bin": {