@elvatis_com/elvatis-mcp 1.0.6 → 1.0.8
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/dist/ssh.d.ts.map +1 -1
- package/dist/ssh.js +34 -26
- package/dist/ssh.js.map +1 -1
- package/package.json +1 -1
package/dist/ssh.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssh.d.ts","sourceRoot":"","sources":["../src/ssh.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"ssh.d.ts","sourceRoot":"","sources":["../src/ssh.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;CACjB;AAgCD;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAYlG;AAsFD,mFAAmF;AACnF,wBAAsB,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAErF;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAItG"}
|
package/dist/ssh.js
CHANGED
|
@@ -47,29 +47,29 @@ const child_process_1 = require("child_process");
|
|
|
47
47
|
const os = __importStar(require("os"));
|
|
48
48
|
const path = __importStar(require("path"));
|
|
49
49
|
/**
|
|
50
|
-
* Resolve the SSH binary
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
50
|
+
* Resolve the SSH binary path on Windows.
|
|
51
|
+
* Windows OpenSSH (System32) requires console APIs that are unavailable in
|
|
52
|
+
* Electron-spawned Node.js processes (CWD=C:\Windows\System32, no console).
|
|
53
|
+
* Git's ssh.exe works in any stdio context and is preferred when available.
|
|
54
54
|
*/
|
|
55
|
+
function sshBinary() {
|
|
56
|
+
if (process.platform !== 'win32')
|
|
57
|
+
return 'ssh';
|
|
58
|
+
// Prefer Git's ssh — works in all Windows stdio contexts
|
|
59
|
+
const gitSsh = 'C:\\Program Files\\Git\\usr\\bin\\ssh.exe';
|
|
60
|
+
if (require('fs').existsSync(gitSsh))
|
|
61
|
+
return gitSsh;
|
|
62
|
+
// Fallback to Windows OpenSSH
|
|
63
|
+
const root = process.env['SystemRoot'] || process.env['systemroot'] || 'C:\\Windows';
|
|
64
|
+
return path.join(root, 'System32', 'OpenSSH', 'ssh.exe');
|
|
65
|
+
}
|
|
55
66
|
/**
|
|
56
|
-
* Build
|
|
57
|
-
*
|
|
58
|
-
* the
|
|
67
|
+
* Build the environment for the SSH child process.
|
|
68
|
+
* Keep it simple: inherit process.env with HOME set.
|
|
69
|
+
* No PATH manipulation — using the absolute ssh binary path instead.
|
|
59
70
|
*/
|
|
60
71
|
function sshEnv() {
|
|
61
|
-
|
|
62
|
-
if (process.platform === 'win32') {
|
|
63
|
-
const root = process.env['SystemRoot'] || 'C:\\Windows';
|
|
64
|
-
const sshDirs = [
|
|
65
|
-
path.join(root, 'System32', 'OpenSSH'),
|
|
66
|
-
path.join(root, 'Sysnative', 'OpenSSH'),
|
|
67
|
-
];
|
|
68
|
-
const currentPath = env['PATH'] || env['Path'] || '';
|
|
69
|
-
// Prepend SSH directories so they are found first
|
|
70
|
-
env['PATH'] = sshDirs.join(';') + ';' + currentPath;
|
|
71
|
-
}
|
|
72
|
-
return env;
|
|
72
|
+
return { ...process.env, HOME: os.homedir() };
|
|
73
73
|
}
|
|
74
74
|
/** Normalize a file path to forward slashes (SSH on Windows needs this). */
|
|
75
75
|
function normalizePath(p) {
|
|
@@ -99,10 +99,11 @@ function sshExecOnce(cfg, command, timeoutMs) {
|
|
|
99
99
|
// Expand ~ and normalize to forward slashes for cross-platform SSH compatibility
|
|
100
100
|
const keyPath = normalizePath(cfg.keyPath.replace(/^~/, os.homedir()));
|
|
101
101
|
const debug = process.env['SSH_DEBUG'] === '1';
|
|
102
|
+
const nullDevice = process.platform === 'win32' ? 'NUL' : '/dev/null';
|
|
102
103
|
const args = [
|
|
103
104
|
'-i', keyPath,
|
|
104
105
|
'-o', 'StrictHostKeyChecking=no',
|
|
105
|
-
'-o',
|
|
106
|
+
'-o', `UserKnownHostsFile=${nullDevice}`,
|
|
106
107
|
'-o', 'LogLevel=ERROR',
|
|
107
108
|
'-o', 'BatchMode=yes',
|
|
108
109
|
'-o', 'ConnectTimeout=10',
|
|
@@ -114,14 +115,21 @@ function sshExecOnce(cfg, command, timeoutMs) {
|
|
|
114
115
|
args.push('-vvv');
|
|
115
116
|
}
|
|
116
117
|
args.push(`${cfg.username}@${cfg.host}`, command);
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
stdio: ['
|
|
118
|
+
const proc = (0, child_process_1.spawn)(sshBinary(), args, {
|
|
119
|
+
// Use 'pipe' for stdin (not 'ignore') so Windows OpenSSH gets a valid
|
|
120
|
+
// stdin handle. 'ignore' in Electron-spawned Node leaves stdin as
|
|
121
|
+
// INVALID_HANDLE_VALUE which causes Windows ssh.exe to exit 255 silently.
|
|
122
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
122
123
|
windowsHide: true,
|
|
123
124
|
env: sshEnv(),
|
|
125
|
+
// Explicitly set cwd to a writable directory. When the MCP server is
|
|
126
|
+
// launched by Claude Code (Electron), process.cwd() is C:\Windows\System32
|
|
127
|
+
// which is write-protected. ssh.exe fails silently at startup if it cannot
|
|
128
|
+
// write temp/lock files in its working directory.
|
|
129
|
+
cwd: os.tmpdir(),
|
|
124
130
|
});
|
|
131
|
+
// Immediately signal EOF on stdin — SSH doesn't need input from us.
|
|
132
|
+
proc.stdin.end();
|
|
125
133
|
let stdout = '';
|
|
126
134
|
let stderr = '';
|
|
127
135
|
proc.stdout.on('data', (d) => { stdout += d.toString(); });
|
|
@@ -146,7 +154,7 @@ function sshExecOnce(cfg, command, timeoutMs) {
|
|
|
146
154
|
proc.on('error', (err) => {
|
|
147
155
|
clearTimeout(timer);
|
|
148
156
|
if (err.code === 'ENOENT') {
|
|
149
|
-
reject(new Error(
|
|
157
|
+
reject(new Error(`ssh binary not found at ${sshBinary()}. ` +
|
|
150
158
|
'Windows: Settings > Optional Features > OpenSSH Client. ' +
|
|
151
159
|
'macOS/Linux: should be pre-installed.'));
|
|
152
160
|
}
|
package/dist/ssh.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssh.js","sourceRoot":"","sources":["../src/ssh.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"ssh.js","sourceRoot":"","sources":["../src/ssh.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elvatis_com/elvatis-mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.8",
|
|
4
4
|
"description": "MCP server for OpenClaw — expose smart home, memory, cron, and more to Claude Desktop, Cursor, Windsurf, and any MCP client",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|