host-execution-mcp 1.0.1 → 2.0.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.
Files changed (84) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +13 -11
  3. package/SECURITY.md +3 -3
  4. package/dist/access/index.d.ts +21 -10
  5. package/dist/access/index.js +55 -27
  6. package/dist/access/index.js.map +1 -1
  7. package/dist/access/paradi-auth.d.ts +3 -3
  8. package/dist/access/paradi-auth.js +4 -4
  9. package/dist/access/paradi-auth.js.map +1 -1
  10. package/dist/access/paradi-transport.d.ts +1 -1
  11. package/dist/access/paradi-transport.js +3 -3
  12. package/dist/access/paradi-transport.js.map +1 -1
  13. package/dist/access/paradi-username.d.ts +1 -1
  14. package/dist/access/paradi-username.js +2 -2
  15. package/dist/access/paradi-username.js.map +1 -1
  16. package/dist/access/session-pool.d.ts +5 -0
  17. package/dist/access/session-pool.js +7 -0
  18. package/dist/access/session-pool.js.map +1 -1
  19. package/dist/access/ssh-transport.d.ts +1 -1
  20. package/dist/access/ssh-transport.js +3 -2
  21. package/dist/access/ssh-transport.js.map +1 -1
  22. package/dist/config-yaml.d.ts +54 -0
  23. package/dist/config-yaml.js +172 -0
  24. package/dist/config-yaml.js.map +1 -0
  25. package/dist/config.d.ts +45 -1
  26. package/dist/config.js +126 -22
  27. package/dist/config.js.map +1 -1
  28. package/dist/index.js +3 -3
  29. package/dist/index.js.map +1 -1
  30. package/dist/instructions.d.ts +4 -1
  31. package/dist/instructions.js +73 -51
  32. package/dist/instructions.js.map +1 -1
  33. package/dist/kubectl/runner.d.ts +7 -8
  34. package/dist/kubectl/runner.js +18 -21
  35. package/dist/kubectl/runner.js.map +1 -1
  36. package/dist/link-runtime.d.ts +39 -0
  37. package/dist/link-runtime.js +134 -0
  38. package/dist/link-runtime.js.map +1 -0
  39. package/dist/server.d.ts +2 -1
  40. package/dist/server.js +10 -12
  41. package/dist/server.js.map +1 -1
  42. package/dist/sources/guides.d.ts +34 -0
  43. package/dist/sources/guides.js +50 -0
  44. package/dist/sources/guides.js.map +1 -0
  45. package/dist/sources/index.d.ts +5 -0
  46. package/dist/sources/index.js +22 -0
  47. package/dist/sources/index.js.map +1 -0
  48. package/dist/sources/yaml-template.d.ts +31 -0
  49. package/dist/sources/yaml-template.js +35 -0
  50. package/dist/sources/yaml-template.js.map +1 -0
  51. package/dist/ssh/access-client.d.ts +6 -2
  52. package/dist/ssh/access-client.js +58 -27
  53. package/dist/ssh/access-client.js.map +1 -1
  54. package/dist/ssh/access-errors.js +1 -1
  55. package/dist/ssh/access-errors.js.map +1 -1
  56. package/dist/ssh/access-sftp.js +3 -3
  57. package/dist/ssh/access-sftp.js.map +1 -1
  58. package/dist/tools/copy-job-schemas.d.ts +96 -581
  59. package/dist/tools/copy-job-schemas.js +9 -9
  60. package/dist/tools/copy-job-schemas.js.map +1 -1
  61. package/dist/tools/register.d.ts +2 -10
  62. package/dist/tools/register.js +174 -331
  63. package/dist/tools/register.js.map +1 -1
  64. package/dist/tools/remote-schemas.d.ts +156 -708
  65. package/dist/tools/remote-schemas.js +99 -103
  66. package/dist/tools/remote-schemas.js.map +1 -1
  67. package/dist/utils/copy-executor.d.ts +3 -1
  68. package/dist/utils/copy-executor.js +39 -25
  69. package/dist/utils/copy-executor.js.map +1 -1
  70. package/dist/utils/copy-transfer.d.ts +2 -0
  71. package/dist/utils/copy-transfer.js.map +1 -1
  72. package/dist/utils/remote-executor.d.ts +3 -4
  73. package/dist/utils/remote-executor.js +8 -18
  74. package/dist/utils/remote-executor.js.map +1 -1
  75. package/dist/utils/remote-target.js +1 -1
  76. package/dist/utils/remote-target.js.map +1 -1
  77. package/docs/AGENT_GUIDE.md +31 -103
  78. package/docs/CONFIGURATION.md +30 -9
  79. package/docs/GUIDE.md +186 -0
  80. package/docs/PARADI_ACCESS_PLAN.md +6 -6
  81. package/docs/TODO.md +4 -11
  82. package/docs/USER_GUIDE.zh-CN.md +26 -173
  83. package/docs/host-execution.yaml +92 -0
  84. package/package.json +3 -1
@@ -1,140 +1,45 @@
1
1
  # host-execution-mcp 使用教程
2
2
 
3
- **使用场景:本地可以直连入口机(跳板 / 帕拉迪网关),再进入 K8s 集群或目标主机,AI 辅助分析代码、文件传输等等。**
3
+ 配置、`ACCESS_KIND`、怎么跟 Agent 说话,以 [GUIDE.md](./GUIDE.md) 为准(MCP Resource `host-execution://guides/user`)。本文只补 Codex 接法、旧包迁移和场景示例。
4
4
 
5
- **本机 Cursor → SSH(ACCESS)→ 落点 HostExecutionContext → kubectl / docker / shell / 再跳目标机**(这条路径上笔记本不直连 Pod)。
5
+ 建议配套 [k8s-multi-node-deploy](../../../skill/env/k8s-multi-node-deploy/) skill。
6
6
 
7
- > 包名已由 `bastion-k8s-mcp` 升级为 **`host-execution-mcp`**。环境变量统一为 `ACCESS_*` / `TARGET_*`(不再使用 `BASTION_*` / `REMOTE_SSH_*`)。
8
-
9
- :::
10
- 建议配套 [**k8s-multi-node-deploy**](https://sh-code.mthreads.com/andy.wang/agent-compose/-/tree/master/skill/env/k8s-multi-node-deploy?ref_type=heads) skill 效果更佳~~~,无法访问联系我 $\color{#0089FF}{@Andy Wang}$
11
- :::
12
-
13
- ## 1. 安装 Node.js
14
-
15
- MCP 需要运行在 Node.js 环境上,**Node.js >= 18**。官网 [nodejs.org](https://nodejs.org) 下载 LTS,安装后验证:
16
-
17
- ```bash
18
- node -v
19
- ```
20
-
21
- ## 2. MCP 配置(Cursor 为例)
22
-
23
- 配置文件:`.cursor/mcp.json`,或 Cursor → Settings → MCP → Edit Config。
24
-
25
- 先问自己一句:**本机能不能用普通 `ssh user@ip` 直接登到要用的那台机器(或跳板)?** 答案决定 `ACCESS_KIND`。
26
-
27
- | `ACCESS_KIND` | 你的实际情况 | 一句话 |
28
- | --- | --- | --- |
29
- | **`ssh`**(默认) | 本机(通常开 VPN)能**正常 SSH** 到入口机 / 目标机,连上就是 bash,没有「选资产 / 选账号」菜单 | 普通 SSH 场景 |
30
- | **`paradi-gateway`** | **不能**对目标机直接 `ssh`;只能先连帕拉迪网关,再在网关里交互选资产、选登录账号,才能落到业务机 | 网关菜单穿透场景(见下图) |
31
-
32
- **`ssh` 长什么样:** 本机执行例如 `ssh mccxadmin@10.121.120.7`,输密码后直接进系统 shell —— 配 `ACCESS_KIND=ssh`(§2.1)。
33
-
34
- **`paradi-gateway` 长什么样:** 本机只能先 `ssh 网关账号@网关IP`,连上后出现「目标资产列表 / 登录帐号列表」,要手选数字才能进机器 —— **MCP 替你省掉这份交互**,用编码账号/密码直接落到目标机(§2.2)。真实终端示意:
7
+ 帕拉迪网关长什么样(先连网关,再选手选资产 / 账号):
35
8
 
36
9
  ![帕拉迪网关:先连网关,再选资产与账号,才能进入目标机](./paradi-gateway-interactive.png)
37
10
 
38
- 选好模式后,抄下面对应小节的 `env`。
39
-
40
- ### 2.1 `ACCESS_KIND=ssh`:本机能正常 SSH(跳板 / K8s)
41
-
42
- :::
43
- **需要先验证本地机器通过 VPN 能登录到 `10.121.120.7` 才行(找四季青运维)**
44
- :::
45
-
46
- ```json
47
- {
48
- "mcpServers": {
49
- "host-execution": {
50
- "command": "npx",
51
- "args": ["-y", "host-execution-mcp@latest"],
52
- "env": {
53
- "ACCESS_KIND": "ssh",
54
- "ACCESS_HOST": "10.121.120.7",
55
- "ACCESS_USER": "mccxadmin",
56
- "ACCESS_PASSWORD": "mccxadminjd",
57
- "ACCESS_PORT": "22",
58
- "ALLOWED_NAMESPACES": "his-test"
59
- }
60
- }
61
- }
62
- }
63
- ```
11
+ ## Codex
64
12
 
65
- `ACCESS_HOST` + `ACCESS_USER` 填你**本机能 SSH 直连的入口机**地址和账号即可(MCP 会用同样的方式登录)。
13
+ 把 GUIDE §2 的 `env` 配进 Codex。不要把密码写进仓库或对话。
66
14
 
67
- 可选:若常从跳板再 SSH 到某台目标机,可加默认第二跳:
15
+ 也可把 GUIDE 里的 JSON 交给 Codex,让它按 GUIDE 配。`~/.codex/config.toml` 示意:
68
16
 
69
- ```json
70
- "TARGET_HOST": "10.121.32.69",
71
- "TARGET_USER": "mccxadmin",
72
- "TARGET_PASSWORD": "mccxadmin"
73
- ```
17
+ ```toml
18
+ [mcp_servers.host-execution]
19
+ command = "npx"
20
+ args = ["-y", "host-execution-mcp@latest"]
74
21
 
75
- ### 2.2 `ACCESS_KIND=paradi-gateway`:不能直连目标机,经帕拉迪网关
76
-
77
- 本机**无法**对业务机普通 SSH;只能连网关。客户只需配**网关账号** + **目标机 IP/系统用户**;**不要**手写三段用户名或 `@##@` 密码串(MCP 内部编码,效果等价于你在菜单里选好资产与账号)。默认 `ACCESS_PARADI_AUTH=auto`:先试 slash,失败再试 compound,成功后进程内钉死。
78
-
79
- ```json
80
- {
81
- "mcpServers": {
82
- "host-execution-paradi": {
83
- "command": "npx",
84
- "args": ["-y", "host-execution-mcp@latest"],
85
- "env": {
86
- "ACCESS_KIND": "paradi-gateway",
87
- "ACCESS_HOST": "10.121.61.10",
88
- "ACCESS_PORT": "22",
89
- "ACCESS_USER": "ellazj",
90
- "ACCESS_PASSWORD": "<网关密码>",
91
- "ACCESS_PARADI_AUTH": "auto",
92
- "TARGET_HOST": "10.121.35.74",
93
- "TARGET_USER": "mccuseradmin"
94
- }
95
- }
96
- }
97
- }
22
+ [mcp_servers.host-execution.env]
23
+ ACCESS_KIND = "ssh"
24
+ ACCESS_HOST = "<入口机 IP>"
25
+ ACCESS_USER = "<入口机用户>"
26
+ ACCESS_PASSWORD = "<入口机密码>"
27
+ ACCESS_PORT = "22"
98
28
  ```
99
29
 
100
- 运维可强制:`ACCESS_PARADI_AUTH` = `auto` | `slash` | `compound`(一般客户保持 **`auto`** 即可)。对照表:
101
-
102
- | 模式 | 用户名 | 密码 | 适合 | 实际场景(手动 SSH 等价) |
103
- | --- | --- | --- | --- | --- |
104
- | **auto**(默认) | 先按 slash,AUTH_FAILED 再按 compound;成功后进程内钉死赢家 | 同上 | 不确定网关开了哪种能力时 | 无需手选;`access_check` 可看 `paradiAuth` |
105
- | **slash** | `USER/HOST/OSUSER` | 网关密码 | 网关按三段用户名选资产 | `ssh zhangyimingzgc/10.121.35.68/mccuseradmin@10.121.61.3`,密码填网关密码(网关 `10.121.61.3` → `10.121.35.68` / `mccuseradmin`) |
106
- | **compound** | `USER` | `密码@##@HOST:SSH:22:OSUSER` | 网关已开程序穿透 | `ssh ellazj@10.121.61.10`,密码填 `网关密码@##@10.121.35.74:SSH:22:mccuseradmin`(网关 `10.121.61.10` → `10.121.35.74` / `mccuseradmin`) |
107
-
108
- mcp.json **不要**手写三段用户名或 `@##@` 串,由 MCP 按上表编码。
109
-
110
- 保存后重启 MCP 服务。验证连通:
111
-
112
- > 用 host-execution 跑 `access_check`;若要做 K8s,再让 Agent 执行 `kubectl cluster-info --request-timeout=5s`
113
-
114
- 若提示 `ACCESS_UNAVAILABLE`:先查 VPN / `ACCESS_HOST`,不要反复重试本 MCP 的其他工具。
115
-
116
- ---
117
-
118
- ## 3. 怎么用
30
+ > 使用时整个 vscode 窗口只能当作一个类似 Codex 桌面版 app,建议配合 terminal 使用。
119
31
 
120
- 对 Agent **用自然语言**说清:**命名空间、负载/Pod 名、文件路径**;**需要时加「只读,不要改」**,可减少 AI 操作带来的不确定性风险(尤其破坏性操作)。
32
+ ## 与旧包对照(迁移)
121
33
 
122
- | 你想做的事 | 告诉 Agent |
34
+ | 旧(bastion-k8s-mcp) | 新(host-execution-mcp) |
123
35
  | --- | --- |
124
- | 找 Pod | 命名空间 + Deployment/负载名 |
125
- | 看日志 | Pod 名 + 日志**文件路径**(训练日志多在挂载盘,不是 stdout) |
126
- | 拷到本地 | 远程路径 + 本地目录(Agent 读取后写入本机) |
127
- | 排查故障 | 日志 / dmesg / core 路径 + 「只读分析」 |
128
- | 上目标机 | 目标 IP + 用户(有 `TARGET_*` 时可省略,让 Agent `context_derive` / 跳板执行) |
129
- | 帕拉迪落点 | 已在目标机:直接 `shell_exec` / `docker_*`,不要再 derive |
130
-
131
- 输出太大被截断时,让 Agent 用 `grep`、`tail` 缩小范围。
132
-
133
- 常用工具(Agent 侧):`access_check`、`shell_exec`、`context_derive`、`k8s_*`、`docker_*`、`remote_*` / `remote_copy_*`。
134
-
135
- ---
36
+ | `bastion-k8s-mcp@3.x` | `host-execution-mcp@1.0.0` |
37
+ | `BASTION_HOST` / `USER` / `PASSWORD` / `PORT` | `ACCESS_HOST` / `USER` / `PASSWORD` / `PORT` |
38
+ | `REMOTE_SSH_USER` / `PASSWORD` | `TARGET_USER` / `TARGET_PASSWORD` |
39
+ | `bastion_check` / `bastion_exec` | `access_check` / `shell_exec` |
40
+ | — | `ACCESS_KIND=paradi-gateway` + `TARGET_*`(帕拉迪) |
136
41
 
137
- ## 4. 示例
42
+ ## 场景示例
138
43
 
139
44
  1. MCP + SKILL → 让从零重新创建一个负载,然后拉 128 个节点
140
45
 
@@ -154,56 +59,4 @@ mcp.json **不要**手写三段用户名或 `@##@` 串,由 MCP 按上表编码
154
59
 
155
60
  ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/AJdl65A66aVv7Oke/img/4f8dc2c2-6445-44f8-b1d9-8aaf27d37ccc.png)
156
61
 
157
- ---
158
-
159
- ## 常见问题
160
-
161
- * **MCP 起不来**:检查 `node -v`、入口机地址账号、本机能否 `ssh user@10.121.120.7`;确认 env 已改成 `ACCESS_*`(旧 `BASTION_*` 会被拒绝)
162
- * **仍配置 BASTION_***:会报错并提示改名;按上文 JSON 换成 `ACCESS_HOST` / `ACCESS_USER` / `ACCESS_PASSWORD`
163
- * **k8s_logs 为空**:日志在文件里,让 Agent 读挂载路径,不要只用 container stdout
164
- * **多个节点都 Killed**:先找第一个报 MUSA/SIGABRT 的 rank,其余可能是连锁退出
165
- * **帕拉迪连不上**:确认网关开了程序穿透(或 slash 可用);可设 `ACCESS_PARADI_AUTH=compound` / `slash` 强制一种;`access_check` 成功后会带 `paradiAuth`
166
-
167
- 更多配置见 [CONFIGURATION.md](./CONFIGURATION.md)。
168
-
169
- ---
170
-
171
- # 补充:
172
-
173
- ## Codex 使用
174
-
175
- 本地 vscode + codex 也可用。
176
-
177
- 将上述《host-execution-mcp 使用教程》的配置拷贝给 codex 插件,直接让其根据该配置,自动本地配好 MCP server。
178
-
179
- 配置好后大概如下:
180
-
181
- ![image.png](https://alidocs.oss-cn-zhangjiakou.aliyuncs.com/res/AJdl65A66aVv7Oke/img/4286d40d-ca12-4bbd-94bf-beff93baefa7.png)
182
-
183
- 也可以打开 `~/.codex/config.toml`(或本机 Codex 配置)增加配置如下:
184
-
185
- ```toml
186
- [mcp_servers.host-execution]
187
- command = "npx"
188
- args = ["-y", "host-execution-mcp@latest"]
189
-
190
- [mcp_servers.host-execution.env]
191
- ALLOWED_NAMESPACES = "his-test"
192
- ACCESS_KIND = "ssh"
193
- ACCESS_HOST = "10.121.120.7"
194
- ACCESS_PASSWORD = "mccxadminjd"
195
- ACCESS_PORT = "22"
196
- ACCESS_USER = "mccxadmin"
197
- ```
198
-
199
- > 使用时整个 vscode 窗口只能当作一个类似 Codex 桌面版 app,建议配合 terminal 使用。
200
-
201
- ## 与旧包对照(迁移)
202
-
203
- | 旧(bastion-k8s-mcp) | 新(host-execution-mcp) |
204
- | --- | --- |
205
- | `bastion-k8s-mcp@3.x` | `host-execution-mcp@1.0.0` |
206
- | `BASTION_HOST` / `USER` / `PASSWORD` / `PORT` | `ACCESS_HOST` / `USER` / `PASSWORD` / `PORT` |
207
- | `REMOTE_SSH_USER` / `PASSWORD` | `TARGET_USER` / `TARGET_PASSWORD` |
208
- | `bastion_check` / `bastion_exec` | `access_check` / `shell_exec` |
209
- | — | `ACCESS_KIND=paradi-gateway` + `TARGET_*`(帕拉迪) |
62
+ 常见问题见 [GUIDE.md](./GUIDE.md)。更多环境变量见 [CONFIGURATION.md](./CONFIGURATION.md)。
@@ -0,0 +1,92 @@
1
+ # host-execution 名册(对照 docs/GUIDE.md §2)
2
+ # 路径写死:
3
+ # Linux/mac ~/.agents/host-execution.yaml
4
+ # Windows %USERPROFILE%\.agents\host-execution.yaml
5
+ #
6
+ # 一条链路 = GUIDE 里一份 mcp.json env。description 必填且唯一,写清场景用途(谁、干什么、哪台),不要只写「本机直连 + IP」。
7
+ # 追加:在 links 下复制下面某一段示例,去掉行首 #,改 description 与账号。
8
+ # 对话里出现新的 user+IP(新跳板/网关/账号,或同一 IP 换用户)→ 追加一条,不要只记在对话里。
9
+ # 同一 ACCESS 且同一 TARGET_USER、只是多了一个目标 IP → 往该条 TARGET_HOSTS 加一项。
10
+ # 同一 IP、不同用户(root vs mccxadmin)是两条链路,不要写进同一条 TARGET_HOSTS。
11
+ # description 不准(场景变了、或「本机/跳板/生产」说错)→ 当场改名,随后按新名精确选用;不要把旧名当不可改主键。
12
+ # 本轮对话一直指向某一条 → 一直用那条,不要因为本文件有多条(含同 IP 另一用户)就换。
13
+ # 选用时 description 必须精确相等。不要 CIDR / 通配。
14
+ # 帕拉迪:不要手写 USER/HOST/OSUSER 或 密码@##@… ,由 MCP 编码。
15
+
16
+ links: []
17
+
18
+ # --- GUIDE §2.1 最少:只上入口机 ---
19
+ # - description: 入口机本机作业
20
+ # ACCESS_KIND: ssh # 可省,默认 ssh
21
+ # ACCESS_HOST: "<入口机 IP>"
22
+ # ACCESS_USER: "<入口机用户>"
23
+ # ACCESS_PASSWORD: "<入口机密码>"
24
+ # ACCESS_PORT: 22 # 可省
25
+
26
+ # --- GUIDE §2.1 密钥代替密码 ---
27
+ # - description: 入口机密钥登录
28
+ # ACCESS_HOST: "<入口机 IP>"
29
+ # ACCESS_USER: "<入口机用户>"
30
+ # ACCESS_PRIVATE_KEY_PATH: "<密钥路径>"
31
+
32
+ # --- GUIDE §2.1 限制 kubectl 命名空间 ---
33
+ # ALLOWED_NAMESPACES: "his-test"
34
+
35
+ # --- GUIDE §2.1 跳板 + 一台默认第二跳 ---
36
+ # - description: 跳板再上训练机
37
+ # ACCESS_HOST: "<入口机 IP>"
38
+ # ACCESS_USER: "<入口机用户>"
39
+ # ACCESS_PASSWORD: "<入口机密码>"
40
+ # TARGET_HOSTS:
41
+ # - "<目标机 IP>"
42
+ # TARGET_USER: "<目标机用户>"
43
+ # TARGET_PASSWORD: "<目标机密码>"
44
+
45
+ # --- GUIDE §2.1 跳板 + 多台已知 IP(同一账号)---
46
+ # - description: 跳板再上多台训练机
47
+ # ACCESS_HOST: "<入口机 IP>"
48
+ # ACCESS_USER: "<入口机用户>"
49
+ # ACCESS_PASSWORD: "<入口机密码>"
50
+ # TARGET_HOSTS:
51
+ # - "<目标机 IP>"
52
+ # - "<目标机 IP>"
53
+ # TARGET_USER: "<目标机用户>"
54
+ # TARGET_PASSWORD: "<目标机密码>"
55
+
56
+ # --- GUIDE §2.1 只留账号,对话里说 IP ---
57
+ # - description: 跳板账号已配,目标 IP 对话指定
58
+ # ACCESS_HOST: "<入口机 IP>"
59
+ # ACCESS_USER: "<入口机用户>"
60
+ # ACCESS_PASSWORD: "<入口机密码>"
61
+ # TARGET_USER: "<目标机用户>"
62
+ # TARGET_PASSWORD: "<目标机密码>"
63
+
64
+ # --- GUIDE §2.2 帕拉迪 ---
65
+ # - description: 经网关上业务机
66
+ # ACCESS_KIND: paradi-gateway
67
+ # ACCESS_HOST: "<网关 IP>"
68
+ # ACCESS_PORT: 22
69
+ # ACCESS_USER: "<网关用户>"
70
+ # ACCESS_PASSWORD: "<网关密码>"
71
+ # ACCESS_PARADI_AUTH: auto # auto | slash | compound
72
+ # TARGET_HOSTS:
73
+ # - "<目标机 IP>"
74
+ # TARGET_USER: "<目标机系统用户>"
75
+
76
+ # --- 同一 IP、不同用户:两条链路 ---
77
+ # - description: 业务机 mccxadmin
78
+ # ACCESS_HOST: "<入口机 IP>"
79
+ # ACCESS_USER: "<入口机用户>"
80
+ # ACCESS_PASSWORD: "<入口机密码>"
81
+ # TARGET_HOSTS:
82
+ # - "<目标机 IP>"
83
+ # TARGET_USER: "mccxadmin"
84
+ # TARGET_PASSWORD: "<该用户密码>"
85
+ # - description: 业务机 root
86
+ # ACCESS_HOST: "<入口机 IP>"
87
+ # ACCESS_USER: "<入口机用户>"
88
+ # ACCESS_PASSWORD: "<入口机密码>"
89
+ # TARGET_HOSTS:
90
+ # - "<目标机 IP>"
91
+ # TARGET_USER: "root"
92
+ # TARGET_PASSWORD: "<该用户密码>"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "host-execution-mcp",
3
- "version": "1.0.1",
3
+ "version": "2.0.0",
4
4
  "description": "Access -> HostExecutionContext -> Runtime MCP for remote shell/docker/kubectl (SSH jump or Paradi gateway)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -47,12 +47,14 @@
47
47
  "homepage": "https://github.com/your-org/host-execution-mcp#readme",
48
48
  "dependencies": {
49
49
  "@modelcontextprotocol/sdk": "^1.12.1",
50
+ "js-yaml": "^5.4.2",
50
51
  "ssh2": "^1.16.0",
51
52
  "ssh2-sftp-client": "^12.1.1",
52
53
  "zod": "^3.24.2"
53
54
  },
54
55
  "devDependencies": {
55
56
  "@eslint/js": "^9.23.0",
57
+ "@types/js-yaml": "^4.0.9",
56
58
  "@types/node": "^22.13.10",
57
59
  "@types/ssh2": "^1.15.4",
58
60
  "@types/ssh2-sftp-client": "^9.0.6",