@lzm04521/ssh-mcp-server 1.1.5
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/LICENSE +15 -0
- package/README.md +157 -0
- package/admin-web/dist/assets/index-DXbr5DVR.js +494 -0
- package/admin-web/dist/index.html +6 -0
- package/admin-web/dist/logo.png +0 -0
- package/build/cli/command-line-parser.js +715 -0
- package/build/cli/command-line-parser.js.map +1 -0
- package/build/cli/run-mode.js +44 -0
- package/build/cli/run-mode.js.map +1 -0
- package/build/cli/stdio-proxy.js +304 -0
- package/build/cli/stdio-proxy.js.map +1 -0
- package/build/config/index.js +5 -0
- package/build/config/index.js.map +1 -0
- package/build/config/server.js +16 -0
- package/build/config/server.js.map +1 -0
- package/build/core/mcp-http-server.js +14 -0
- package/build/core/mcp-http-server.js.map +1 -0
- package/build/core/mcp-server.js +95 -0
- package/build/core/mcp-server.js.map +1 -0
- package/build/index.js +98 -0
- package/build/index.js.map +1 -0
- package/build/models/admin-types.js +135 -0
- package/build/models/admin-types.js.map +1 -0
- package/build/models/types.js +2 -0
- package/build/models/types.js.map +1 -0
- package/build/server/index.js +128 -0
- package/build/server/index.js.map +1 -0
- package/build/server/routes/admin.js +929 -0
- package/build/server/routes/admin.js.map +1 -0
- package/build/server/routes/audit.js +9 -0
- package/build/server/routes/audit.js.map +1 -0
- package/build/server/routes/backups.js +11 -0
- package/build/server/routes/backups.js.map +1 -0
- package/build/server/routes/mcp.js +52 -0
- package/build/server/routes/mcp.js.map +1 -0
- package/build/server/routes/settings.js +49 -0
- package/build/server/routes/settings.js.map +1 -0
- package/build/server/routes/system.js +147 -0
- package/build/server/routes/system.js.map +1 -0
- package/build/services/audit-store.js +123 -0
- package/build/services/audit-store.js.map +1 -0
- package/build/services/autostart-service.js +55 -0
- package/build/services/autostart-service.js.map +1 -0
- package/build/services/backup-scheduler.js +90 -0
- package/build/services/backup-scheduler.js.map +1 -0
- package/build/services/backup-service.js +113 -0
- package/build/services/backup-service.js.map +1 -0
- package/build/services/config-store.js +163 -0
- package/build/services/config-store.js.map +1 -0
- package/build/services/defaults.js +35 -0
- package/build/services/defaults.js.map +1 -0
- package/build/services/restart-helper.js +43 -0
- package/build/services/restart-helper.js.map +1 -0
- package/build/services/ssh-connection-manager.js +1775 -0
- package/build/services/ssh-connection-manager.js.map +1 -0
- package/build/services/update-service.js +93 -0
- package/build/services/update-service.js.map +1 -0
- package/build/tools/download.js +41 -0
- package/build/tools/download.js.map +1 -0
- package/build/tools/execute-command.js +53 -0
- package/build/tools/execute-command.js.map +1 -0
- package/build/tools/index.js +17 -0
- package/build/tools/index.js.map +1 -0
- package/build/tools/list-directory.js +57 -0
- package/build/tools/list-directory.js.map +1 -0
- package/build/tools/list-servers.js +51 -0
- package/build/tools/list-servers.js.map +1 -0
- package/build/tools/upload.js +41 -0
- package/build/tools/upload.js.map +1 -0
- package/build/utils/logger.js +28 -0
- package/build/utils/logger.js.map +1 -0
- package/build/utils/ssh-config-parser.js +195 -0
- package/build/utils/ssh-config-parser.js.map +1 -0
- package/build/utils/status-collector.js +226 -0
- package/build/utils/status-collector.js.map +1 -0
- package/build/utils/tool-error.js +20 -0
- package/build/utils/tool-error.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-line-parser.js","sourceRoot":"","sources":["../../src/cli/command-line-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/** 出现任一参数即视为传统 stdio 模式(SSH 连接与配置相关的全部开关) */
|
|
2
|
+
const STDIO_ARGS = [
|
|
3
|
+
"config-file",
|
|
4
|
+
"ssh",
|
|
5
|
+
"ssh-config-file",
|
|
6
|
+
"host", "h",
|
|
7
|
+
"port", "p",
|
|
8
|
+
"username", "u",
|
|
9
|
+
"password", "w",
|
|
10
|
+
"privateKey", "k",
|
|
11
|
+
"passphrase", "P",
|
|
12
|
+
"agent", "a",
|
|
13
|
+
"whitelist", "W",
|
|
14
|
+
"blacklist", "B",
|
|
15
|
+
"proxy",
|
|
16
|
+
"socksProxy", "s",
|
|
17
|
+
"allowed-local-paths",
|
|
18
|
+
"allowed-remote-paths",
|
|
19
|
+
"transport-mode",
|
|
20
|
+
"shell-ready-timeout",
|
|
21
|
+
"command-template",
|
|
22
|
+
"pty",
|
|
23
|
+
"try-keyboard",
|
|
24
|
+
"pre-connect",
|
|
25
|
+
];
|
|
26
|
+
/** 解析 --admin-port 的值,非法或缺参返回 undefined */
|
|
27
|
+
export function parseAdminPort(argv) {
|
|
28
|
+
const idx = argv.indexOf("--admin-port");
|
|
29
|
+
if (idx === -1 || idx + 1 >= argv.length)
|
|
30
|
+
return undefined;
|
|
31
|
+
const port = parseInt(argv[idx + 1], 10);
|
|
32
|
+
return Number.isInteger(port) && port > 0 && port < 65536 ? port : undefined;
|
|
33
|
+
}
|
|
34
|
+
export function resolveRunMode(argv) {
|
|
35
|
+
if (argv.includes("--admin"))
|
|
36
|
+
return { mode: "admin", adminPort: parseAdminPort(argv) };
|
|
37
|
+
if (argv.includes("--stdio"))
|
|
38
|
+
return { mode: "stdio" };
|
|
39
|
+
const hasArg = (name) => argv.includes(`--${name}`) || argv.includes(`-${name}`);
|
|
40
|
+
if (STDIO_ARGS.some(hasArg))
|
|
41
|
+
return { mode: "stdio" };
|
|
42
|
+
return { mode: "proxy", adminPort: parseAdminPort(argv) };
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=run-mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-mode.js","sourceRoot":"","sources":["../../src/cli/run-mode.ts"],"names":[],"mappings":"AAWA,6CAA6C;AAC7C,MAAM,UAAU,GAAG;IACjB,aAAa;IACb,KAAK;IACL,iBAAiB;IACjB,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,UAAU,EAAE,GAAG;IACf,UAAU,EAAE,GAAG;IACf,YAAY,EAAE,GAAG;IACjB,YAAY,EAAE,GAAG;IACjB,OAAO,EAAE,GAAG;IACZ,WAAW,EAAE,GAAG;IAChB,WAAW,EAAE,GAAG;IAChB,OAAO;IACP,YAAY,EAAE,GAAG;IACjB,qBAAqB;IACrB,sBAAsB;IACtB,gBAAgB;IAChB,qBAAqB;IACrB,kBAAkB;IAClB,KAAK;IACL,cAAc;IACd,aAAa;CACd,CAAC;AAEF,2CAA2C;AAC3C,MAAM,UAAU,cAAc,CAAC,IAAc;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACzC,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC3D,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAc;IAC3C,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IACxF,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACvD,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IACzF,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACtD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* npx 默认模式的 stdio→HTTP 转发代理:
|
|
3
|
+
* - stdin 每行一条 JSON-RPC 消息,POST 到 admin 常驻服务的无状态 /mcp 端点;
|
|
4
|
+
* - 响应兼容 application/json 与 text/event-stream(SDK StreamableHTTP 默认 SSE),
|
|
5
|
+
* 提取 JSON 后回写 stdout;通知类消息(202)无回写;
|
|
6
|
+
* - admin 服务未运行时自动分离拉起,日志落 config 同目录 daemon.log;
|
|
7
|
+
* - 本进程所有日志走 stderr,stdout 仅承载 MCP 协议消息。
|
|
8
|
+
*/
|
|
9
|
+
import { spawn, exec } from "node:child_process";
|
|
10
|
+
import fs from "node:fs";
|
|
11
|
+
import os from "node:os";
|
|
12
|
+
import path from "node:path";
|
|
13
|
+
import { createInterface } from "node:readline";
|
|
14
|
+
import { ConfigStore, getGlobalConfigPath } from "../services/config-store.js";
|
|
15
|
+
import { DEFAULT_ADMIN_PORT } from "../models/admin-types.js";
|
|
16
|
+
import { SERVER_CONFIG } from "../config/server.js";
|
|
17
|
+
import { Logger } from "../utils/logger.js";
|
|
18
|
+
/** 探测端口上是否为本项目的 admin 常驻服务(校验 system/info 返回结构) */
|
|
19
|
+
export async function probeAdminServer(port, timeoutMs = 800) {
|
|
20
|
+
try {
|
|
21
|
+
const res = await fetch(`http://127.0.0.1:${port}/admin/api/system/info`, {
|
|
22
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
23
|
+
});
|
|
24
|
+
if (!res.ok)
|
|
25
|
+
return false;
|
|
26
|
+
const body = (await res.json());
|
|
27
|
+
return typeof body?.version === "string" || typeof body?.port === "number";
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/** 从 StreamableHTTP 响应体提取待回写 stdout 的 JSON 串(兼容 application/json 与 text/event-stream) */
|
|
34
|
+
export async function extractResponseJsonLines(res) {
|
|
35
|
+
const contentType = String(res.headers.get("content-type") || "");
|
|
36
|
+
const text = await res.text();
|
|
37
|
+
if (contentType.includes("text/event-stream")) {
|
|
38
|
+
const payloads = [];
|
|
39
|
+
for (const block of text.split(/\r?\n\r?\n/)) {
|
|
40
|
+
for (const line of block.split(/\r?\n/)) {
|
|
41
|
+
if (!line.startsWith("data:"))
|
|
42
|
+
continue;
|
|
43
|
+
const payload = line.slice(5).trim();
|
|
44
|
+
if (payload && payload !== "[DONE]")
|
|
45
|
+
payloads.push(payload);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return payloads;
|
|
49
|
+
}
|
|
50
|
+
// application/json 或其他:仅当 body 可解析为 JSON 时透传
|
|
51
|
+
const trimmed = text.trim();
|
|
52
|
+
if (!trimmed)
|
|
53
|
+
return [];
|
|
54
|
+
try {
|
|
55
|
+
JSON.parse(trimmed);
|
|
56
|
+
return [trimmed];
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return [];
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export class StdioProxy {
|
|
63
|
+
targetUrl;
|
|
64
|
+
constructor(targetUrl) {
|
|
65
|
+
this.targetUrl = targetUrl;
|
|
66
|
+
}
|
|
67
|
+
/** 持续读取 stdin 并转发,stdin 关闭(MCP 客户端退出)后返回 */
|
|
68
|
+
async start() {
|
|
69
|
+
const rl = createInterface({ input: process.stdin, crlfDelay: Infinity });
|
|
70
|
+
rl.on("line", (line) => {
|
|
71
|
+
void this.forwardLine(line);
|
|
72
|
+
});
|
|
73
|
+
await new Promise((resolve) => rl.on("close", resolve));
|
|
74
|
+
}
|
|
75
|
+
async forwardLine(line) {
|
|
76
|
+
const trimmed = line.trim();
|
|
77
|
+
if (!trimmed)
|
|
78
|
+
return;
|
|
79
|
+
let requestId;
|
|
80
|
+
let hasId = false;
|
|
81
|
+
try {
|
|
82
|
+
const parsed = JSON.parse(trimmed);
|
|
83
|
+
if (parsed && typeof parsed === "object" && !Array.isArray(parsed) && "id" in parsed) {
|
|
84
|
+
hasId = true;
|
|
85
|
+
requestId = parsed.id;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
Logger.log("proxy: 收到无法解析的 stdio 行,已忽略", "error");
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
const res = await fetch(this.targetUrl, {
|
|
94
|
+
method: "POST",
|
|
95
|
+
headers: { "content-type": "application/json", accept: "application/json, text/event-stream" },
|
|
96
|
+
body: trimmed,
|
|
97
|
+
});
|
|
98
|
+
if (res.status === 202)
|
|
99
|
+
return;
|
|
100
|
+
if (!res.ok)
|
|
101
|
+
throw new Error(`HTTP ${res.status}`);
|
|
102
|
+
for (const json of await extractResponseJsonLines(res)) {
|
|
103
|
+
process.stdout.write(json + "\n");
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
108
|
+
Logger.log(`proxy: 转发失败: ${message}`, "error");
|
|
109
|
+
if (hasId) {
|
|
110
|
+
process.stdout.write(JSON.stringify({
|
|
111
|
+
jsonrpc: "2.0",
|
|
112
|
+
id: requestId,
|
|
113
|
+
error: { code: -32000, message: `ssh-mcp-server 常驻服务不可达: ${message}` },
|
|
114
|
+
}) + "\n");
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/** 解析 admin 端口:CLI 显式指定 > 配置文件 port > 默认 61823 */
|
|
120
|
+
async function resolveAdminPort(cliPort) {
|
|
121
|
+
if (cliPort)
|
|
122
|
+
return cliPort;
|
|
123
|
+
const configPath = process.env.SSH_MCP_CONFIG ? path.resolve(process.env.SSH_MCP_CONFIG) : undefined;
|
|
124
|
+
try {
|
|
125
|
+
const store = new ConfigStore({ configPath });
|
|
126
|
+
const cfg = await store.load();
|
|
127
|
+
if (typeof cfg?.port === "number" && cfg.port > 0)
|
|
128
|
+
return cfg.port;
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
// 配置读取失败时回退默认端口
|
|
132
|
+
}
|
|
133
|
+
return DEFAULT_ADMIN_PORT;
|
|
134
|
+
}
|
|
135
|
+
function sleep(ms) {
|
|
136
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
137
|
+
}
|
|
138
|
+
/** 读取目标端口 admin 常驻服务的版本号,探测失败或结构异常返回 null */
|
|
139
|
+
export async function getAdminServerVersion(port, timeoutMs = 800) {
|
|
140
|
+
try {
|
|
141
|
+
const res = await fetch(`http://127.0.0.1:${port}/admin/api/system/info`, {
|
|
142
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
143
|
+
});
|
|
144
|
+
if (!res.ok)
|
|
145
|
+
return null;
|
|
146
|
+
const body = (await res.json());
|
|
147
|
+
return typeof body?.version === "string" && body.version ? body.version : null;
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/** 逐段比较 x.y.z 版本号,返回 a-b(>0 表示 a 更新;缺省段按 0 处理) */
|
|
154
|
+
export function compareVersions(a, b) {
|
|
155
|
+
const seg = (v) => v.split(".").map((n) => parseInt(n, 10) || 0);
|
|
156
|
+
const sa = seg(a);
|
|
157
|
+
const sb = seg(b);
|
|
158
|
+
for (let i = 0; i < 3; i++) {
|
|
159
|
+
const diff = (sa[i] ?? 0) - (sb[i] ?? 0);
|
|
160
|
+
if (diff !== 0)
|
|
161
|
+
return diff;
|
|
162
|
+
}
|
|
163
|
+
return 0;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* 解析端口监听进程的 PID 集合(导出仅为测试)。
|
|
167
|
+
* Windows 取 netstat -ano 输出(TCP <local> <foreign> LISTENING <pid>),并按本地地址精确匹配端口;
|
|
168
|
+
* 其他平台取 lsof -t 输出(每行一个 PID,已由参数过滤端口)。
|
|
169
|
+
*/
|
|
170
|
+
export function parseListenerOutput(stdout, platform, port) {
|
|
171
|
+
const pids = new Set();
|
|
172
|
+
for (const raw of stdout.split(/\r?\n/)) {
|
|
173
|
+
const line = raw.trim();
|
|
174
|
+
if (!line)
|
|
175
|
+
continue;
|
|
176
|
+
if (platform === "win32") {
|
|
177
|
+
if (!line.includes("LISTENING"))
|
|
178
|
+
continue;
|
|
179
|
+
const parts = line.split(/\s+/);
|
|
180
|
+
// TCP <local> <foreign> LISTENING <pid>
|
|
181
|
+
if (parts.length < 5 || !parts[1].endsWith(`:${port}`))
|
|
182
|
+
continue;
|
|
183
|
+
const pid = parseInt(parts[4], 10);
|
|
184
|
+
if (Number.isInteger(pid) && pid > 0)
|
|
185
|
+
pids.add(pid);
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
const pid = parseInt(line, 10);
|
|
189
|
+
if (Number.isInteger(pid) && pid > 0)
|
|
190
|
+
pids.add(pid);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return [...pids];
|
|
194
|
+
}
|
|
195
|
+
/** 查询监听指定 TCP 端口的进程 PID(Windows netstat / macOS·Linux lsof),查询失败返回空数组 */
|
|
196
|
+
export async function findListenerPids(port) {
|
|
197
|
+
const cmd = process.platform === "win32"
|
|
198
|
+
? `netstat -ano -p tcp | findstr "LISTENING"`
|
|
199
|
+
: `lsof -nP -iTCP:${port} -sTCP:LISTEN -t`;
|
|
200
|
+
return new Promise((resolve) => {
|
|
201
|
+
exec(cmd, { timeout: 5000, windowsHide: true }, (err, stdout) => {
|
|
202
|
+
if (err && !stdout)
|
|
203
|
+
return resolve([]);
|
|
204
|
+
resolve(parseListenerOutput(String(stdout), process.platform, port));
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
/** 定位入口脚本(argv[1]),供分离拉起 daemon 使用 */
|
|
209
|
+
function locateEntryScript() {
|
|
210
|
+
const script = process.argv[1] ? path.resolve(process.argv[1]) : "";
|
|
211
|
+
if (!script || !fs.existsSync(script)) {
|
|
212
|
+
throw new Error(`无法定位入口脚本(argv[1]=${process.argv[1] ?? "空"}),请改用 --stdio 或手动运行 --admin`);
|
|
213
|
+
}
|
|
214
|
+
return script;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* 以分离进程拉起 admin 常驻服务并等待就绪。
|
|
218
|
+
* cwd 必须用主目录而非包安装目录:Windows 下进程 CWD 所在目录不可被重命名,
|
|
219
|
+
* npx 升级重装时 npm 需要先 rename 包目录,否则 EBUSY(v1.1.1 及之前因此升级失败)。
|
|
220
|
+
*/
|
|
221
|
+
async function spawnAdminServerAndWait(port) {
|
|
222
|
+
const script = locateEntryScript();
|
|
223
|
+
const logDir = path.dirname(getGlobalConfigPath());
|
|
224
|
+
fs.mkdirSync(logDir, { recursive: true });
|
|
225
|
+
const logFile = path.join(logDir, "daemon.log");
|
|
226
|
+
const child = spawn(process.execPath, [script, "--admin", "--admin-port", String(port)], {
|
|
227
|
+
detached: true,
|
|
228
|
+
stdio: ["ignore", fs.openSync(logFile, "a"), fs.openSync(logFile, "a")],
|
|
229
|
+
cwd: os.homedir(),
|
|
230
|
+
});
|
|
231
|
+
child.unref();
|
|
232
|
+
const deadline = Date.now() + 15000;
|
|
233
|
+
while (Date.now() < deadline) {
|
|
234
|
+
if (child.exitCode !== null)
|
|
235
|
+
break;
|
|
236
|
+
if (await probeAdminServer(port, 500))
|
|
237
|
+
return;
|
|
238
|
+
await sleep(300);
|
|
239
|
+
}
|
|
240
|
+
throw new Error(`admin 常驻服务在端口 ${port} 未能就绪,请查看日志: ${logFile}`);
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* 已运行的 daemon 版本落后于当前包时将其停止并等待端口释放(供调用方拉起新版),否则返回 false。
|
|
244
|
+
* 版本未知或高于当前包(回滚场景)一律复用,避免误杀。
|
|
245
|
+
*/
|
|
246
|
+
async function stopOutdatedAdminServer(port) {
|
|
247
|
+
const daemonVersion = await getAdminServerVersion(port);
|
|
248
|
+
// 非数字版本(stub/dev 等自定义构建)不参与比较,一律复用
|
|
249
|
+
if (!daemonVersion || !/^\d+\.\d+\.\d+/.test(daemonVersion))
|
|
250
|
+
return false;
|
|
251
|
+
if (compareVersions(daemonVersion, SERVER_CONFIG.version) >= 0)
|
|
252
|
+
return false;
|
|
253
|
+
const pids = await findListenerPids(port);
|
|
254
|
+
if (pids.length === 0)
|
|
255
|
+
return false;
|
|
256
|
+
Logger.log(`admin 常驻服务版本 ${daemonVersion} 低于当前 ${SERVER_CONFIG.version},自动重启以应用新版本`, "info");
|
|
257
|
+
for (const pid of pids) {
|
|
258
|
+
try {
|
|
259
|
+
process.kill(pid, "SIGTERM");
|
|
260
|
+
}
|
|
261
|
+
catch {
|
|
262
|
+
// 进程可能恰好自行退出
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
const deadline = Date.now() + 8000;
|
|
266
|
+
while (Date.now() < deadline) {
|
|
267
|
+
if ((await findListenerPids(port)).length === 0)
|
|
268
|
+
return true;
|
|
269
|
+
await sleep(300);
|
|
270
|
+
}
|
|
271
|
+
// 宽限期内未退出则强杀
|
|
272
|
+
for (const pid of await findListenerPids(port)) {
|
|
273
|
+
try {
|
|
274
|
+
process.kill(pid, "SIGKILL");
|
|
275
|
+
}
|
|
276
|
+
catch {
|
|
277
|
+
// 进程已退出
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
await sleep(500);
|
|
281
|
+
return true;
|
|
282
|
+
}
|
|
283
|
+
/** 确保 admin 常驻服务在目标端口可用:未运行则分离拉起;运行中但版本落后则自动换新 */
|
|
284
|
+
export async function ensureAdminServer(port) {
|
|
285
|
+
if (await probeAdminServer(port)) {
|
|
286
|
+
if (await stopOutdatedAdminServer(port)) {
|
|
287
|
+
await spawnAdminServerAndWait(port);
|
|
288
|
+
}
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
await spawnAdminServerAndWait(port);
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* 代理模式主流程:解析端口 → 确保 admin 服务运行 → stdio 转发。
|
|
295
|
+
* stdin 关闭后返回(admin 服务保持常驻,供下一次 MCP 会话复用)。
|
|
296
|
+
*/
|
|
297
|
+
export async function runProxyMode(opts = {}) {
|
|
298
|
+
const port = await resolveAdminPort(opts.adminPort);
|
|
299
|
+
await ensureAdminServer(port);
|
|
300
|
+
Logger.log(`ssh-mcp-server 管理台: http://127.0.0.1:${port}/admin/`, "info");
|
|
301
|
+
const proxy = new StdioProxy(`http://127.0.0.1:${port}/mcp`);
|
|
302
|
+
await proxy.start();
|
|
303
|
+
}
|
|
304
|
+
//# sourceMappingURL=stdio-proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio-proxy.js","sourceRoot":"","sources":["../../src/cli/stdio-proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
function readPackageVersion() {
|
|
3
|
+
const packageJson = JSON.parse(readFileSync(new URL("../../package.json", import.meta.url), "utf8"));
|
|
4
|
+
if (typeof packageJson.version !== "string") {
|
|
5
|
+
throw new Error("package.json must include a string version");
|
|
6
|
+
}
|
|
7
|
+
return packageJson.version;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* MCP Server configuration
|
|
11
|
+
*/
|
|
12
|
+
export const SERVER_CONFIG = {
|
|
13
|
+
name: "ssh-mcp-server",
|
|
14
|
+
version: readPackageVersion(),
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/config/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,SAAS,kBAAkB;IACzB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAC5C,CAAC;IAE3B,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,WAAW,CAAC,OAAO,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,kBAAkB,EAAE;CAC9B,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
3
|
+
import { registerAllTools } from "../tools/index.js";
|
|
4
|
+
import { SERVER_CONFIG } from "../config/server.js";
|
|
5
|
+
export async function createMcpHttpTransport() {
|
|
6
|
+
const server = new McpServer(SERVER_CONFIG);
|
|
7
|
+
registerAllTools(server);
|
|
8
|
+
const transport = new StreamableHTTPServerTransport({
|
|
9
|
+
sessionIdGenerator: undefined,
|
|
10
|
+
});
|
|
11
|
+
await server.connect(transport);
|
|
12
|
+
return { server, transport };
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=mcp-http-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-http-server.js","sourceRoot":"","sources":["../../src/core/mcp-http-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,aAAa,CAAC,CAAC;IAC5C,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC;QAClD,kBAAkB,EAAE,SAAS;KAC9B,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC/B,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
3
|
+
import { SSHConnectionManager } from "../services/ssh-connection-manager.js";
|
|
4
|
+
import { CommandLineParser } from "../cli/command-line-parser.js";
|
|
5
|
+
import { Logger } from "../utils/logger.js";
|
|
6
|
+
import { registerAllTools } from "../tools/index.js";
|
|
7
|
+
import { SERVER_CONFIG } from "../config/server.js";
|
|
8
|
+
/**
|
|
9
|
+
* MCP Server class
|
|
10
|
+
*/
|
|
11
|
+
export class SshMcpServer {
|
|
12
|
+
server;
|
|
13
|
+
sshManager;
|
|
14
|
+
shutdownHandlersRegistered = false;
|
|
15
|
+
shutdownPromise;
|
|
16
|
+
constructor() {
|
|
17
|
+
this.server = new McpServer(SERVER_CONFIG);
|
|
18
|
+
this.sshManager = SSHConnectionManager.getInstance();
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Register tools
|
|
22
|
+
*/
|
|
23
|
+
registerTools() {
|
|
24
|
+
registerAllTools(this.server);
|
|
25
|
+
}
|
|
26
|
+
async shutdown(reason, exitCode) {
|
|
27
|
+
if (!this.shutdownPromise) {
|
|
28
|
+
this.shutdownPromise = (async () => {
|
|
29
|
+
Logger.log(`Received ${reason}, shutting down SSH MCP server...`, "info");
|
|
30
|
+
this.sshManager.disconnect();
|
|
31
|
+
try {
|
|
32
|
+
await this.server.close();
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
Logger.log(`Failed to close MCP server cleanly: ${error.message}`, "error");
|
|
36
|
+
}
|
|
37
|
+
})();
|
|
38
|
+
}
|
|
39
|
+
await this.shutdownPromise;
|
|
40
|
+
if (exitCode !== undefined) {
|
|
41
|
+
process.exit(exitCode);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
registerShutdownHandlers() {
|
|
45
|
+
if (this.shutdownHandlersRegistered) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const handleSignal = (signal) => {
|
|
49
|
+
void this.shutdown(signal, 0);
|
|
50
|
+
};
|
|
51
|
+
process.once("SIGINT", handleSignal);
|
|
52
|
+
process.once("SIGTERM", handleSignal);
|
|
53
|
+
process.stdin.resume();
|
|
54
|
+
process.stdin.once("end", () => void this.shutdown("stdin end", 0));
|
|
55
|
+
process.stdin.once("close", () => void this.shutdown("stdin close", 0));
|
|
56
|
+
this.shutdownHandlersRegistered = true;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Run the server
|
|
60
|
+
*/
|
|
61
|
+
async run() {
|
|
62
|
+
// Initialize SSH configuration
|
|
63
|
+
const parsedArgs = CommandLineParser.parseArgs();
|
|
64
|
+
this.sshManager.setConfig(parsedArgs.configs);
|
|
65
|
+
this.registerShutdownHandlers();
|
|
66
|
+
// Register tools before accepting MCP requests.
|
|
67
|
+
this.registerTools();
|
|
68
|
+
// Create transport instance and connect.
|
|
69
|
+
const transport = new StdioServerTransport();
|
|
70
|
+
await this.server.connect(transport);
|
|
71
|
+
Logger.log("MCP server connection established");
|
|
72
|
+
// Security warning
|
|
73
|
+
const allConfigs = Object.values(parsedArgs.configs);
|
|
74
|
+
if (allConfigs.some((c) => !c.commandWhitelist || c.commandWhitelist.length === 0)) {
|
|
75
|
+
Logger.log("WARNING: Running without a command whitelist is strongly discouraged. Please configure a whitelist to restrict the commands that can be executed.", "info");
|
|
76
|
+
}
|
|
77
|
+
if (allConfigs.some((c) => (c.transportMode || "exec") === "exec" &&
|
|
78
|
+
(!c.allowedRemotePaths || c.allowedRemotePaths.length === 0))) {
|
|
79
|
+
Logger.log("WARNING: Running without allowedRemotePaths is strongly discouraged. SFTP upload/download can read or write any path on the remote server. Configure allowedRemotePaths to restrict the SFTP surface.", "info");
|
|
80
|
+
}
|
|
81
|
+
// Pre-connect to all servers if flag is set
|
|
82
|
+
if (parsedArgs.preConnect) {
|
|
83
|
+
Logger.log("Pre-connecting to all configured SSH servers...", "info");
|
|
84
|
+
void this.sshManager
|
|
85
|
+
.connectAll()
|
|
86
|
+
.then(() => {
|
|
87
|
+
Logger.log("Successfully pre-connected to all SSH servers", "info");
|
|
88
|
+
})
|
|
89
|
+
.catch((error) => {
|
|
90
|
+
Logger.log(`Warning: Some SSH connections failed during pre-connect: ${error.message}`, "error");
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=mcp-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/core/mcp-server.ts"],"names":[],"mappings":"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"}
|