ssh-mcp-pro 1.2.1 → 1.4.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 (214) hide show
  1. package/CHANGELOG.md +72 -0
  2. package/README.md +12 -2
  3. package/dist/agent-bin.js +5 -2
  4. package/dist/agent-bin.js.map +1 -1
  5. package/dist/cli.d.ts +1 -0
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +38 -47
  8. package/dist/cli.js.map +1 -1
  9. package/dist/config-security-env.d.ts +4 -0
  10. package/dist/config-security-env.d.ts.map +1 -0
  11. package/dist/config-security-env.js +64 -0
  12. package/dist/config-security-env.js.map +1 -0
  13. package/dist/config.d.ts +2 -2
  14. package/dist/config.d.ts.map +1 -1
  15. package/dist/config.js +4 -67
  16. package/dist/config.js.map +1 -1
  17. package/dist/connector-profile.d.ts +17 -3
  18. package/dist/connector-profile.d.ts.map +1 -1
  19. package/dist/connector-profile.js.map +1 -1
  20. package/dist/detect.d.ts.map +1 -1
  21. package/dist/detect.js +226 -192
  22. package/dist/detect.js.map +1 -1
  23. package/dist/ensure-package-service.d.ts +9 -0
  24. package/dist/ensure-package-service.d.ts.map +1 -0
  25. package/dist/ensure-package-service.js +146 -0
  26. package/dist/ensure-package-service.js.map +1 -0
  27. package/dist/ensure-pkg.js +4 -4
  28. package/dist/ensure-pkg.js.map +1 -1
  29. package/dist/ensure.d.ts.map +1 -1
  30. package/dist/ensure.js +15 -144
  31. package/dist/ensure.js.map +1 -1
  32. package/dist/fs-sftp.js +1 -1
  33. package/dist/fs-sftp.js.map +1 -1
  34. package/dist/fs-stat.d.ts +10 -0
  35. package/dist/fs-stat.d.ts.map +1 -0
  36. package/dist/fs-stat.js +62 -0
  37. package/dist/fs-stat.js.map +1 -0
  38. package/dist/fs-tools.d.ts.map +1 -1
  39. package/dist/fs-tools.js +6 -58
  40. package/dist/fs-tools.js.map +1 -1
  41. package/dist/http-security.d.ts.map +1 -1
  42. package/dist/http-security.js +6 -6
  43. package/dist/http-security.js.map +1 -1
  44. package/dist/http-server-runtime.d.ts.map +1 -1
  45. package/dist/http-server-runtime.js +41 -7
  46. package/dist/http-server-runtime.js.map +1 -1
  47. package/dist/index.js +6 -23
  48. package/dist/index.js.map +1 -1
  49. package/dist/mcp-http-web.d.ts +8 -0
  50. package/dist/mcp-http-web.d.ts.map +1 -0
  51. package/dist/mcp-http-web.js +35 -0
  52. package/dist/mcp-http-web.js.map +1 -0
  53. package/dist/mcp.d.ts +6 -2
  54. package/dist/mcp.d.ts.map +1 -1
  55. package/dist/mcp.js +22 -14
  56. package/dist/mcp.js.map +1 -1
  57. package/dist/policy.d.ts +8 -0
  58. package/dist/policy.d.ts.map +1 -1
  59. package/dist/policy.js +147 -105
  60. package/dist/policy.js.map +1 -1
  61. package/dist/process.d.ts.map +1 -1
  62. package/dist/process.js +11 -7
  63. package/dist/process.js.map +1 -1
  64. package/dist/prompts.d.ts +2 -11
  65. package/dist/prompts.d.ts.map +1 -1
  66. package/dist/prompts.js.map +1 -1
  67. package/dist/remote/agent-activity-log.d.ts +26 -0
  68. package/dist/remote/agent-activity-log.d.ts.map +1 -0
  69. package/dist/remote/agent-activity-log.js +211 -0
  70. package/dist/remote/agent-activity-log.js.map +1 -0
  71. package/dist/remote/agent-cli.d.ts.map +1 -1
  72. package/dist/remote/agent-cli.js +92 -25
  73. package/dist/remote/agent-cli.js.map +1 -1
  74. package/dist/remote/agent-executor.d.ts.map +1 -1
  75. package/dist/remote/agent-executor.js +25 -16
  76. package/dist/remote/agent-executor.js.map +1 -1
  77. package/dist/remote/agent-handler.d.ts +2 -0
  78. package/dist/remote/agent-handler.d.ts.map +1 -1
  79. package/dist/remote/agent-handler.js +4 -0
  80. package/dist/remote/agent-handler.js.map +1 -1
  81. package/dist/remote/config.d.ts.map +1 -1
  82. package/dist/remote/config.js +12 -1
  83. package/dist/remote/config.js.map +1 -1
  84. package/dist/remote/control-plane.d.ts +12 -0
  85. package/dist/remote/control-plane.d.ts.map +1 -1
  86. package/dist/remote/control-plane.js +174 -53
  87. package/dist/remote/control-plane.js.map +1 -1
  88. package/dist/remote/crypto.d.ts +9 -4
  89. package/dist/remote/crypto.d.ts.map +1 -1
  90. package/dist/remote/crypto.js +41 -9
  91. package/dist/remote/crypto.js.map +1 -1
  92. package/dist/remote/http-util.d.ts.map +1 -1
  93. package/dist/remote/http-util.js +14 -7
  94. package/dist/remote/http-util.js.map +1 -1
  95. package/dist/remote/mcp-tools.d.ts +7 -0
  96. package/dist/remote/mcp-tools.d.ts.map +1 -1
  97. package/dist/remote/mcp-tools.js +28 -0
  98. package/dist/remote/mcp-tools.js.map +1 -1
  99. package/dist/remote/oauth-handler.d.ts +36 -3
  100. package/dist/remote/oauth-handler.d.ts.map +1 -1
  101. package/dist/remote/oauth-handler.js +287 -13
  102. package/dist/remote/oauth-handler.js.map +1 -1
  103. package/dist/remote/policy.js +2 -2
  104. package/dist/remote/policy.js.map +1 -1
  105. package/dist/remote/safe-file.d.ts +2 -1
  106. package/dist/remote/safe-file.d.ts.map +1 -1
  107. package/dist/remote/safe-file.js +51 -53
  108. package/dist/remote/safe-file.js.map +1 -1
  109. package/dist/remote/schemas.d.ts +9 -9
  110. package/dist/remote/schemas.js +6 -6
  111. package/dist/remote/schemas.js.map +1 -1
  112. package/dist/remote/store.d.ts +38 -1
  113. package/dist/remote/store.d.ts.map +1 -1
  114. package/dist/remote/store.js +149 -11
  115. package/dist/remote/store.js.map +1 -1
  116. package/dist/remote/types.d.ts +14 -0
  117. package/dist/remote/types.d.ts.map +1 -1
  118. package/dist/remote/types.js.map +1 -1
  119. package/dist/remote/web-dashboard-client-config.d.ts +77 -0
  120. package/dist/remote/web-dashboard-client-config.d.ts.map +1 -0
  121. package/dist/remote/web-dashboard-client-config.js +81 -0
  122. package/dist/remote/web-dashboard-client-config.js.map +1 -0
  123. package/dist/remote/web-dashboard-html.d.ts +2 -0
  124. package/dist/remote/web-dashboard-html.d.ts.map +1 -0
  125. package/dist/remote/web-dashboard-html.js +433 -0
  126. package/dist/remote/web-dashboard-html.js.map +1 -0
  127. package/dist/remote/web-dashboard-oauth-users.d.ts +4 -0
  128. package/dist/remote/web-dashboard-oauth-users.d.ts.map +1 -0
  129. package/dist/remote/web-dashboard-oauth-users.js +78 -0
  130. package/dist/remote/web-dashboard-oauth-users.js.map +1 -0
  131. package/dist/remote/web-dashboard-static.d.ts +4 -0
  132. package/dist/remote/web-dashboard-static.d.ts.map +1 -0
  133. package/dist/remote/web-dashboard-static.js +19 -0
  134. package/dist/remote/web-dashboard-static.js.map +1 -0
  135. package/dist/remote/web-dashboard-styles.d.ts +2 -0
  136. package/dist/remote/web-dashboard-styles.d.ts.map +1 -0
  137. package/dist/remote/web-dashboard-styles.js +187 -0
  138. package/dist/remote/web-dashboard-styles.js.map +1 -0
  139. package/dist/remote/web-dashboard.d.ts +62 -0
  140. package/dist/remote/web-dashboard.d.ts.map +1 -0
  141. package/dist/remote/web-dashboard.js +467 -0
  142. package/dist/remote/web-dashboard.js.map +1 -0
  143. package/dist/resources.d.ts +2 -7
  144. package/dist/resources.d.ts.map +1 -1
  145. package/dist/resources.js.map +1 -1
  146. package/dist/retry.d.ts.map +1 -1
  147. package/dist/retry.js +6 -3
  148. package/dist/retry.js.map +1 -1
  149. package/dist/safety.d.ts.map +1 -1
  150. package/dist/safety.js +56 -6
  151. package/dist/safety.js.map +1 -1
  152. package/dist/session-auth.js +7 -7
  153. package/dist/session-auth.js.map +1 -1
  154. package/dist/session.d.ts +5 -0
  155. package/dist/session.d.ts.map +1 -1
  156. package/dist/session.js +81 -54
  157. package/dist/session.js.map +1 -1
  158. package/dist/shell.d.ts.map +1 -1
  159. package/dist/shell.js +5 -4
  160. package/dist/shell.js.map +1 -1
  161. package/dist/ssh-config.d.ts +2 -2
  162. package/dist/ssh-config.d.ts.map +1 -1
  163. package/dist/ssh-config.js +24 -20
  164. package/dist/ssh-config.js.map +1 -1
  165. package/dist/telemetry.d.ts.map +1 -1
  166. package/dist/telemetry.js +9 -2
  167. package/dist/telemetry.js.map +1 -1
  168. package/dist/tools/connector.provider.d.ts +1 -1
  169. package/dist/tools/connector.provider.d.ts.map +1 -1
  170. package/dist/tools/ensure.provider.d.ts +1 -1
  171. package/dist/tools/ensure.provider.d.ts.map +1 -1
  172. package/dist/tools/fs.provider.d.ts +1 -1
  173. package/dist/tools/fs.provider.d.ts.map +1 -1
  174. package/dist/tools/metadata.d.ts +1 -1
  175. package/dist/tools/metadata.d.ts.map +1 -1
  176. package/dist/tools/output-schemas.d.ts +27 -135
  177. package/dist/tools/output-schemas.d.ts.map +1 -1
  178. package/dist/tools/process.provider.d.ts +1 -1
  179. package/dist/tools/process.provider.d.ts.map +1 -1
  180. package/dist/tools/registry.d.ts +1 -1
  181. package/dist/tools/registry.d.ts.map +1 -1
  182. package/dist/tools/registry.js +16 -13
  183. package/dist/tools/registry.js.map +1 -1
  184. package/dist/tools/session.provider.d.ts +1 -1
  185. package/dist/tools/session.provider.d.ts.map +1 -1
  186. package/dist/tools/system.provider.d.ts +1 -1
  187. package/dist/tools/system.provider.d.ts.map +1 -1
  188. package/dist/tools/transfer.provider.d.ts +1 -1
  189. package/dist/tools/transfer.provider.d.ts.map +1 -1
  190. package/dist/tools/tunnel.provider.d.ts +1 -1
  191. package/dist/tools/tunnel.provider.d.ts.map +1 -1
  192. package/dist/tools/types.d.ts +1 -1
  193. package/dist/tools/types.d.ts.map +1 -1
  194. package/dist/transfer.js +2 -2
  195. package/dist/transfer.js.map +1 -1
  196. package/dist/types.js +1 -1
  197. package/dist/types.js.map +1 -1
  198. package/docs/adding-a-device.md +39 -17
  199. package/docs/agent-activity-monitor.md +34 -0
  200. package/docs/coolify.md +29 -0
  201. package/docs/development/coding-standards.md +8 -2
  202. package/docs/development/dependency-management.md +1 -1
  203. package/docs/development/mcp-protocol-2026.md +33 -0
  204. package/docs/development/release-process.md +29 -55
  205. package/docs/doppler-guide.md +34 -0
  206. package/docs/reference/compatibility.md +1 -1
  207. package/docs/remote-mcp-hardening.md +17 -0
  208. package/docs/security/dependency-audit-exceptions.md +3 -7
  209. package/docs/security/hosted-data-inventory.md +81 -0
  210. package/docs/sonarcloud-analysis.md +9 -0
  211. package/mcp.json +1 -1
  212. package/package.json +31 -24
  213. package/registry/ssh-mcp-pro/mcp.json +1 -1
  214. package/server.json +3 -3
package/CHANGELOG.md CHANGED
@@ -5,6 +5,78 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.4.0](https://github.com/oaslananka/ssh-mcp-pro/compare/ssh-mcp-pro-v1.3.0...ssh-mcp-pro-v1.4.0) (2026-11-06)
9
+
10
+
11
+ ### Features
12
+
13
+ * **mcp:** support 2026 protocol on authenticated remote-agent endpoint ([#181](https://github.com/oaslananka/ssh-mcp-pro/issues/181)) ([8f5df37](https://github.com/oaslananka/ssh-mcp-pro/commit/8f5df3700657118d26743eebf314bdb3850cceb7))
14
+ * **remote:** add hosted dashboard and Coolify deployment support ([#127](https://github.com/oaslananka/ssh-mcp-pro/issues/127)) ([7a4ba63](https://github.com/oaslananka/ssh-mcp-pro/commit/7a4ba63cc8d2a3ec8080ecdddf57e854d08e1de2))
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * **agent:** launch Windows scheduled task with npm CMD shim ([#130](https://github.com/oaslananka/ssh-mcp-pro/issues/130)) ([cf6fdb5](https://github.com/oaslananka/ssh-mcp-pro/commit/cf6fdb511af552d0538659a8fa7420bb586cfb69))
20
+ * **agent:** resolve Linux npm CLI discovery and system runtime identity ([#176](https://github.com/oaslananka/ssh-mcp-pro/issues/176)) ([16b7ce3](https://github.com/oaslananka/ssh-mcp-pro/commit/16b7ce3ea57931482e46af539223e2e481d47c35))
21
+ * **agent:** restart service after enrollment identity changes ([#180](https://github.com/oaslananka/ssh-mcp-pro/issues/180)) ([d770763](https://github.com/oaslananka/ssh-mcp-pro/commit/d770763936a5e1c7f0c40e87414a8917f1c21b7a))
22
+ * **agent:** restart Windows agent after WebSocket disconnect ([#129](https://github.com/oaslananka/ssh-mcp-pro/issues/129)) ([8df07ee](https://github.com/oaslananka/ssh-mcp-pro/commit/8df07ee08a55eb665679dffc33d8701b4e063ca9))
23
+ * **agent:** surface Linux installer download failures ([#132](https://github.com/oaslananka/ssh-mcp-pro/issues/132)) ([79f166d](https://github.com/oaslananka/ssh-mcp-pro/commit/79f166d50ffd52d0b9253b318703486fd5a72e8a))
24
+ * **apps:** correct publication legal-document attestations ([#157](https://github.com/oaslananka/ssh-mcp-pro/issues/157)) ([7e8b42d](https://github.com/oaslananka/ssh-mcp-pro/commit/7e8b42d9e5032c657fd65920c004bafc3d41abf6))
25
+ * **auth:** restrict fixture identities to loopback test mode ([#128](https://github.com/oaslananka/ssh-mcp-pro/issues/128)) ([a0a1d19](https://github.com/oaslananka/ssh-mcp-pro/commit/a0a1d1991dc665db3be2a017ddea039d4b642803))
26
+ * **automation:** avoid stalled dependency PR creation ([#153](https://github.com/oaslananka/ssh-mcp-pro/issues/153)) ([209c084](https://github.com/oaslananka/ssh-mcp-pro/commit/209c084294188a46baf878bfc326676b25e49781))
27
+ * **dashboard:** correct Gemini and Copilot setup examples ([#161](https://github.com/oaslananka/ssh-mcp-pro/issues/161)) ([be00c8c](https://github.com/oaslananka/ssh-mcp-pro/commit/be00c8c0f77c38d08b6b68f78e6fe2118c1bfeb2))
28
+ * **dashboard:** correct MCP client setup examples ([#146](https://github.com/oaslananka/ssh-mcp-pro/issues/146)) ([71ed56a](https://github.com/oaslananka/ssh-mcp-pro/commit/71ed56a45f024812cf15d89f4de861cf631a65bd))
29
+ * **dashboard:** display host metadata and stream agent activity logs ([#183](https://github.com/oaslananka/ssh-mcp-pro/issues/183)) ([30d294a](https://github.com/oaslananka/ssh-mcp-pro/commit/30d294acb367ae06d25ec1caff9f68bad113ea2d))
30
+ * **dashboard:** distinguish remote MCP connector setup ([#147](https://github.com/oaslananka/ssh-mcp-pro/issues/147)) ([621948d](https://github.com/oaslananka/ssh-mcp-pro/commit/621948d03bffe62282daa96dbb41d741aca83311))
31
+ * **dashboard:** make navigation keyboard accessible ([#160](https://github.com/oaslananka/ssh-mcp-pro/issues/160)) ([6261f7f](https://github.com/oaslananka/ssh-mcp-pro/commit/6261f7f3b92a53b7f9e474e6159aa36c468a6ed3))
32
+ * **dashboard:** remove revoked devices from inventory ([#149](https://github.com/oaslananka/ssh-mcp-pro/issues/149)) ([715edb8](https://github.com/oaslananka/ssh-mcp-pro/commit/715edb8511f908d70bb2400767942cd17e3bbe21))
33
+ * **dashboard:** separate device revoke and remove actions ([#182](https://github.com/oaslananka/ssh-mcp-pro/issues/182)) ([1e78176](https://github.com/oaslananka/ssh-mcp-pro/commit/1e7817642ebead581435fc169d9a46eed74fa6f6))
34
+ * **docs:** mark Google cloud connector as not publish-ready ([#134](https://github.com/oaslananka/ssh-mcp-pro/issues/134)) ([c3889af](https://github.com/oaslananka/ssh-mcp-pro/commit/c3889afda29889dfa3cbd96b55c28fe852fc9dc6))
35
+ * **http:** classify invalid JSON requests as bad input ([#136](https://github.com/oaslananka/ssh-mcp-pro/issues/136)) ([7fbbee2](https://github.com/oaslananka/ssh-mcp-pro/commit/7fbbee20f8ea141b36230dd8336d16172da525da))
36
+ * **http:** deny browser origins with no explicit allowlist ([#135](https://github.com/oaslananka/ssh-mcp-pro/issues/135)) ([ac3bf2c](https://github.com/oaslananka/ssh-mcp-pro/commit/ac3bf2cbdd6a63d92812b07b194b0b35269a040f))
37
+ * **oauth:** allow configured identity provider form redirects ([#150](https://github.com/oaslananka/ssh-mcp-pro/issues/150)) ([d78c067](https://github.com/oaslananka/ssh-mcp-pro/commit/d78c0676df29066e903bc53d2244944e6d82f819))
38
+ * **oauth:** prevent Chromium form redirects and restore enrollment tokens ([#179](https://github.com/oaslananka/ssh-mcp-pro/issues/179)) ([19f337c](https://github.com/oaslananka/ssh-mcp-pro/commit/19f337c9161e5496313349c66317586676cbb910))
39
+ * **oauth:** use registered Google callback for dashboard and MCP ([#178](https://github.com/oaslananka/ssh-mcp-pro/issues/178)) ([638d3f5](https://github.com/oaslananka/ssh-mcp-pro/commit/638d3f55ba4bb462c518a3fa8af3a4262c294414))
40
+ * **release:** add provenance-verified v1.3.0 asset recovery ([#126](https://github.com/oaslananka/ssh-mcp-pro/issues/126)) ([42254ec](https://github.com/oaslananka/ssh-mcp-pro/commit/42254ec23e50afa75cbd0fd467898fc93ab403f8))
41
+ * **release:** classify pinned legacy SSE migration bridge as advisory ([#123](https://github.com/oaslananka/ssh-mcp-pro/issues/123)) ([f262e93](https://github.com/oaslananka/ssh-mcp-pro/commit/f262e93c10465a96a002ee27c8dd77e69ad62dcb))
42
+ * **release:** sync Gemini connector version metadata ([#141](https://github.com/oaslananka/ssh-mcp-pro/issues/141)) ([feada05](https://github.com/oaslananka/ssh-mcp-pro/commit/feada051b38b7825a2142a0c8c78eae1b37e17f1))
43
+ * **remote:** advertise HSTS for HTTPS endpoints ([#155](https://github.com/oaslananka/ssh-mcp-pro/issues/155)) ([1c8baac](https://github.com/oaslananka/ssh-mcp-pro/commit/1c8baacb813a1dcb441a587c7b316999517fdddb))
44
+ * **remote:** prune expired transient credential records ([#159](https://github.com/oaslananka/ssh-mcp-pro/issues/159)) ([a8b0dfc](https://github.com/oaslananka/ssh-mcp-pro/commit/a8b0dfc9023f7e6d31b43d1004857b6b3b4e9c44))
45
+ * **test:** bind SSH fixture to loopback without sudo ([#133](https://github.com/oaslananka/ssh-mcp-pro/issues/133)) ([3c0a80f](https://github.com/oaslananka/ssh-mcp-pro/commit/3c0a80ffad507ab167a5ad7bc37a0ca513b478e6))
46
+
47
+ ## [1.3.0](https://github.com/oaslananka/ssh-mcp-pro/compare/ssh-mcp-pro-v1.2.3...ssh-mcp-pro-v1.3.0) (2026-11-02)
48
+
49
+
50
+ ### Features
51
+
52
+ * **mcp:** support 2026 protocol on standard transports ([#121](https://github.com/oaslananka/ssh-mcp-pro/issues/121)) ([c975504](https://github.com/oaslananka/ssh-mcp-pro/commit/c975504f1b0d0e8ea270be3f87f6191e8bec1fa9))
53
+
54
+
55
+ ### Bug Fixes
56
+
57
+ * **docker:** patch Alpine musl CVE-2026-107891 ([#98](https://github.com/oaslananka/ssh-mcp-pro/issues/98)) ([4186138](https://github.com/oaslananka/ssh-mcp-pro/commit/41861382dacfc3b25c6715b303f30d54f3c605bb))
58
+ * **quality:** remove stale lock helper and simplify safe string escaping ([#114](https://github.com/oaslananka/ssh-mcp-pro/issues/114)) ([d8d6c56](https://github.com/oaslananka/ssh-mcp-pro/commit/d8d6c565debc3cfbfb425ba16a71ad29e49c483c))
59
+ * **reliability:** report actual retry attempts and parallelize independent version checks ([#119](https://github.com/oaslananka/ssh-mcp-pro/issues/119)) ([bc64b36](https://github.com/oaslananka/ssh-mcp-pro/commit/bc64b36a33b15aa9a9ee418f4f06ccb4b87f33f0))
60
+ * **security:** reject unsafe Windows shim path characters ([#100](https://github.com/oaslananka/ssh-mcp-pro/issues/100)) ([083e133](https://github.com/oaslananka/ssh-mcp-pro/commit/083e133b81affb79a192ed6859f680ce0f79f478))
61
+ * **ssh:** apply multi-pattern Host options to every alias ([#120](https://github.com/oaslananka/ssh-mcp-pro/issues/120)) ([6d7b9f2](https://github.com/oaslananka/ssh-mcp-pro/commit/6d7b9f2a98712a18c6cb23002ed5a08152c0b02b))
62
+
63
+ ## [1.2.3](https://github.com/oaslananka/ssh-mcp-pro/compare/ssh-mcp-pro-v1.2.2...ssh-mcp-pro-v1.2.3) (2026-10-09)
64
+
65
+
66
+ ### Bug Fixes
67
+
68
+ * **release:** one-click GitHub npm publishing and CodeQL coverage ([#72](https://github.com/oaslananka/ssh-mcp-pro/issues/72)) ([9a0d7f3](https://github.com/oaslananka/ssh-mcp-pro/commit/9a0d7f344d20bd5efe9e3a54f47c92f8d4a09ce3))
69
+
70
+ ## [1.2.2](https://github.com/oaslananka/ssh-mcp-pro/compare/ssh-mcp-pro-v1.2.1...ssh-mcp-pro-v1.2.2) (2026-10-09)
71
+
72
+
73
+ ### Bug Fixes
74
+
75
+ * **docker:** install patched Alpine zlib in both stages ([#69](https://github.com/oaslananka/ssh-mcp-pro/issues/69)) ([459fd52](https://github.com/oaslananka/ssh-mcp-pro/commit/459fd52223e3d07dd36991b89f539eb09426b89f))
76
+ * harden remote control plane and SSH session safety ([#67](https://github.com/oaslananka/ssh-mcp-pro/issues/67)) ([e265a4a](https://github.com/oaslananka/ssh-mcp-pro/commit/e265a4ab98fc6ad7737c6817790b64b358b35463))
77
+ * **release:** gate releases before tagging and reconcile distribution ([#70](https://github.com/oaslananka/ssh-mcp-pro/issues/70)) ([eb638cb](https://github.com/oaslananka/ssh-mcp-pro/commit/eb638cb2e8ea39217f3e894f4a29a9a573d7ae57))
78
+ * **release:** make published checksums artifact-relative ([#71](https://github.com/oaslananka/ssh-mcp-pro/issues/71)) ([eab0929](https://github.com/oaslananka/ssh-mcp-pro/commit/eab09299ac7aa21d114d089bfaeca9f3e5dc551b))
79
+
8
80
  ## [1.2.1](https://github.com/oaslananka/ssh-mcp-pro/compare/ssh-mcp-pro-v1.2.0...ssh-mcp-pro-v1.2.1) (2026-10-06)
9
81
 
10
82
 
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  <h1 align="center">ssh-mcp-pro</h1>
2
2
 
3
+ <p align="center"><strong>Policy-controlled SSH automation for MCP clients</strong></p>
4
+
3
5
  <p align="center">
4
6
  <a href="https://www.npmjs.com/package/ssh-mcp-pro"><img alt="npm version" src="https://img.shields.io/npm/v/ssh-mcp-pro.svg" /></a>
5
7
  <a href="https://www.npmjs.com/package/ssh-mcp-pro"><img alt="npm downloads" src="https://img.shields.io/npm/dt/ssh-mcp-pro.svg" /></a>
@@ -8,6 +10,12 @@
8
10
  <a href="https://oaslananka.github.io/ssh-mcp-pro/"><img alt="API Docs" src="https://github.com/oaslananka/ssh-mcp-pro/actions/workflows/docs.yml/badge.svg" /></a>
9
11
  </p>
10
12
 
13
+ <p align="center">
14
+ <a href="https://gitgem.org/github/oaslananka/ssh-mcp-pro"><img alt="GitGem" src="https://gitgem.org/api/badge/github/oaslananka/ssh-mcp-pro.svg" /></a>
15
+ &nbsp;&nbsp;&middot;&nbsp;&nbsp;
16
+ <a href="https://deepwiki.com/oaslananka/ssh-mcp-pro">Explore source on DeepWiki</a>
17
+ </p>
18
+
11
19
  <p align="center">
12
20
  <a href="https://www.buymeacoffee.com/oaslananka">
13
21
  <img src="https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20coffee&emoji=%E2%98%95&slug=oaslananka&button_colour=FFDD00&font_colour=000000&font_family=Arial&outline_colour=000000&coffee_colour=ffffff" alt="Buy me a coffee" />
@@ -25,6 +33,8 @@ ssh-mcp-pro is a secure Model Context Protocol (MCP) server for SSH automation.
25
33
 
26
34
  ## Installation
27
35
 
36
+ For Windows/Linux outbound agent connection status, rotating diagnostics and a live PowerShell log view, see [Agent Activity Monitor](docs/agent-activity-monitor.md).
37
+
28
38
  Install globally with pnpm:
29
39
 
30
40
  ```bash
@@ -67,11 +77,11 @@ Generic stdio MCP config:
67
77
  }
68
78
  ```
69
79
 
70
- VS Code settings style:
80
+ VS Code workspace `.vscode/mcp.json` configuration:
71
81
 
72
82
  ```json
73
83
  {
74
- "mcp.servers": {
84
+ "servers": {
75
85
  "ssh-mcp-pro": {
76
86
  "type": "stdio",
77
87
  "command": "ssh-mcp-pro",
package/dist/agent-bin.js CHANGED
@@ -1,8 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import { runAgentCli } from "./remote/agent-cli.js";
3
- runAgentCli(process.argv.slice(2)).catch((error) => {
3
+ try {
4
+ await runAgentCli(process.argv.slice(2));
5
+ }
6
+ catch (error) {
4
7
  const message = error instanceof Error ? error.message : String(error);
5
8
  process.stderr.write(`${message}\n`);
6
9
  process.exit(1);
7
- });
10
+ }
8
11
  //# sourceMappingURL=agent-bin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-bin.js","sourceRoot":"","sources":["../src/agent-bin.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC1D,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"agent-bin.js","sourceRoot":"","sources":["../src/agent-bin.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,IAAI,CAAC;IACH,MAAM,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAAC,OAAO,KAAc,EAAE,CAAC;IACxB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
package/dist/cli.d.ts CHANGED
@@ -13,4 +13,5 @@ export interface CliOptions {
13
13
  agentArgs?: string[];
14
14
  }
15
15
  export declare function parseArgs(argv: string[]): CliOptions;
16
+ export declare function applyHttpCliEnvironment(opts: CliOptions, env?: NodeJS.ProcessEnv): void;
16
17
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAmGpD"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAaD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA8DpD;AAGD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,UAAU,EAChB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,IAAI,CAmBN"}
package/dist/cli.js CHANGED
@@ -1,3 +1,10 @@
1
+ const VALUE_OPTIONS = new Map([
2
+ ["--host", "host"],
3
+ ["--port", "port"],
4
+ ["--bearer-token-file", "bearerTokenFile"],
5
+ ["--tool-profile", "toolProfile"],
6
+ ["--connector-credential-provider", "connectorCredentialProvider"],
7
+ ]);
1
8
  export function parseArgs(argv) {
2
9
  const opts = {
3
10
  help: false,
@@ -9,11 +16,19 @@ export function parseArgs(argv) {
9
16
  };
10
17
  for (let index = 0; index < argv.length; index++) {
11
18
  const arg = argv[index];
19
+ const valueOption = VALUE_OPTIONS.get(arg ?? "");
20
+ if (valueOption) {
21
+ const next = argv[index + 1];
22
+ if (next !== undefined) {
23
+ opts[valueOption] = next;
24
+ index++;
25
+ }
26
+ continue;
27
+ }
12
28
  switch (arg) {
13
29
  case "agent":
14
30
  opts.agentArgs = argv.slice(index + 1);
15
- index = argv.length;
16
- break;
31
+ return opts;
17
32
  case "http":
18
33
  opts.transport = "http";
19
34
  break;
@@ -38,54 +53,9 @@ export function parseArgs(argv) {
38
53
  case "--transport=stdio":
39
54
  opts.transport = "stdio";
40
55
  break;
41
- case "--host":
42
- {
43
- const next = argv[index + 1];
44
- if (next !== undefined) {
45
- opts.host = next;
46
- index++;
47
- }
48
- }
49
- break;
50
- case "--port":
51
- {
52
- const next = argv[index + 1];
53
- if (next !== undefined) {
54
- opts.port = next;
55
- index++;
56
- }
57
- }
58
- break;
59
- case "--bearer-token-file":
60
- {
61
- const next = argv[index + 1];
62
- if (next !== undefined) {
63
- opts.bearerTokenFile = next;
64
- index++;
65
- }
66
- }
67
- break;
68
56
  case "--enable-legacy-sse":
69
57
  opts.enableLegacySse = true;
70
58
  break;
71
- case "--tool-profile":
72
- {
73
- const next = argv[index + 1];
74
- if (next !== undefined) {
75
- opts.toolProfile = next;
76
- index++;
77
- }
78
- }
79
- break;
80
- case "--connector-credential-provider":
81
- {
82
- const next = argv[index + 1];
83
- if (next !== undefined) {
84
- opts.connectorCredentialProvider = next;
85
- index++;
86
- }
87
- }
88
- break;
89
59
  case "--no-stdio":
90
60
  opts.unsupportedNoStdio = true;
91
61
  break;
@@ -96,4 +66,25 @@ export function parseArgs(argv) {
96
66
  }
97
67
  return opts;
98
68
  }
69
+ // Apply HTTP CLI overrides without changing values omitted by the caller.
70
+ export function applyHttpCliEnvironment(opts, env = process.env) {
71
+ if (opts.host) {
72
+ env.SSH_MCP_HTTP_HOST = opts.host;
73
+ }
74
+ if (opts.port) {
75
+ env.SSH_MCP_HTTP_PORT = opts.port;
76
+ }
77
+ if (opts.bearerTokenFile) {
78
+ env.SSH_MCP_HTTP_BEARER_TOKEN_FILE = opts.bearerTokenFile;
79
+ }
80
+ if (opts.enableLegacySse) {
81
+ env.SSH_MCP_ENABLE_LEGACY_SSE = "true";
82
+ }
83
+ if (opts.toolProfile) {
84
+ env.SSH_MCP_TOOL_PROFILE = opts.toolProfile;
85
+ }
86
+ if (opts.connectorCredentialProvider) {
87
+ env.SSH_MCP_CONNECTOR_CREDENTIAL_PROVIDER = opts.connectorCredentialProvider;
88
+ }
89
+ }
99
90
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ServerConfig } from "./config.js";
2
+ /** Apply security and policy environment values before programmatic overrides. */
3
+ export declare function applySecurityPolicyEnvironment(config: ServerConfig): void;
4
+ //# sourceMappingURL=config-security-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-security-env.d.ts","sourceRoot":"","sources":["../src/config-security-env.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAiGhD,kFAAkF;AAClF,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CA4BzE"}
@@ -0,0 +1,64 @@
1
+ import { loadPolicyFile, parseBoolean, parseHostKeyPolicy, parseList } from "./config-parsers.js";
2
+ /** Prefer non-empty environment lists, otherwise retain file/default policy lists. */
3
+ function resolvePolicyList(value, fallback) {
4
+ const parsed = parseList(value);
5
+ return parsed.length ? parsed : fallback;
6
+ }
7
+ /** Keep ordinary allow/deny path and host lists independent from tunnel policy. */
8
+ function resolveGeneralPolicyLists(config, filePolicy) {
9
+ return {
10
+ allowedHosts: resolvePolicyList(process.env.SSH_MCP_ALLOWED_HOSTS, filePolicy.allowedHosts ?? config.policy.allowedHosts),
11
+ commandAllow: resolvePolicyList(process.env.SSH_MCP_COMMAND_ALLOW, filePolicy.commandAllow ?? config.policy.commandAllow),
12
+ commandDeny: resolvePolicyList(process.env.SSH_MCP_COMMAND_DENY, filePolicy.commandDeny ?? config.policy.commandDeny),
13
+ pathAllowPrefixes: resolvePolicyList(process.env.SSH_MCP_PATH_ALLOW_PREFIXES, filePolicy.pathAllowPrefixes ?? config.policy.pathAllowPrefixes),
14
+ pathDenyPrefixes: resolvePolicyList(process.env.SSH_MCP_PATH_DENY_PREFIXES, filePolicy.pathDenyPrefixes ?? config.policy.pathDenyPrefixes),
15
+ localPathAllowPrefixes: resolvePolicyList(process.env.SSH_MCP_LOCAL_PATH_ALLOW_PREFIXES, filePolicy.localPathAllowPrefixes ?? config.policy.localPathAllowPrefixes),
16
+ localPathDenyPrefixes: resolvePolicyList(process.env.SSH_MCP_LOCAL_PATH_DENY_PREFIXES, filePolicy.localPathDenyPrefixes ?? config.policy.localPathDenyPrefixes),
17
+ };
18
+ }
19
+ function resolveTunnelPolicyLists(config, filePolicy) {
20
+ return {
21
+ tunnelAllowBindHosts: resolvePolicyList(process.env.SSH_MCP_TUNNEL_ALLOW_BIND_HOSTS, filePolicy.tunnelAllowBindHosts ?? config.policy.tunnelAllowBindHosts),
22
+ tunnelDenyBindHosts: resolvePolicyList(process.env.SSH_MCP_TUNNEL_DENY_BIND_HOSTS, filePolicy.tunnelDenyBindHosts ?? config.policy.tunnelDenyBindHosts),
23
+ tunnelAllowRemoteHosts: resolvePolicyList(process.env.SSH_MCP_TUNNEL_ALLOW_REMOTE_HOSTS, filePolicy.tunnelAllowRemoteHosts ?? config.policy.tunnelAllowRemoteHosts),
24
+ tunnelDenyRemoteHosts: resolvePolicyList(process.env.SSH_MCP_TUNNEL_DENY_REMOTE_HOSTS, filePolicy.tunnelDenyRemoteHosts ?? config.policy.tunnelDenyRemoteHosts),
25
+ tunnelAllowPorts: resolvePolicyList(process.env.SSH_MCP_TUNNEL_ALLOW_PORTS, filePolicy.tunnelAllowPorts ?? config.policy.tunnelAllowPorts),
26
+ tunnelDenyPorts: resolvePolicyList(process.env.SSH_MCP_TUNNEL_DENY_PORTS, filePolicy.tunnelDenyPorts ?? config.policy.tunnelDenyPorts),
27
+ };
28
+ }
29
+ /** Preserve host-key migration precedence and root-login policy coupling. */
30
+ function applyHostKeyEnvironment(config) {
31
+ const strictHostKeyChecking = process.env.STRICT_HOST_KEY_CHECKING ?? process.env.SSH_MCP_STRICT_HOST_KEY;
32
+ if (strictHostKeyChecking !== undefined) {
33
+ config.security.hostKeyPolicy = parseBoolean(strictHostKeyChecking, true)
34
+ ? "strict"
35
+ : "insecure";
36
+ }
37
+ config.security.hostKeyPolicy = parseHostKeyPolicy(process.env.SSH_MCP_HOST_KEY_POLICY, config.security.hostKeyPolicy);
38
+ config.security.knownHostsPath =
39
+ process.env.KNOWN_HOSTS_PATH ??
40
+ process.env.SSH_MCP_KNOWN_HOSTS_PATH ??
41
+ config.security.knownHostsPath;
42
+ config.security.allowRootLogin = parseBoolean(process.env.SSH_MCP_ALLOW_ROOT_LOGIN, config.security.allowRootLogin);
43
+ config.security.allowedCiphers = parseList(process.env.SSH_MCP_ALLOWED_CIPHERS);
44
+ }
45
+ /** Apply security and policy environment values before programmatic overrides. */
46
+ export function applySecurityPolicyEnvironment(config) {
47
+ applyHostKeyEnvironment(config);
48
+ const filePolicy = loadPolicyFile(process.env.SSH_MCP_POLICY_FILE);
49
+ config.policy = {
50
+ ...config.policy,
51
+ ...filePolicy,
52
+ mode: process.env.SSH_MCP_POLICY_MODE === "explain"
53
+ ? "explain"
54
+ : (filePolicy.mode ?? config.policy.mode),
55
+ allowRootLogin: config.security.allowRootLogin,
56
+ allowRawSudo: parseBoolean(process.env.SSH_MCP_ALLOW_RAW_SUDO, filePolicy.allowRawSudo ?? config.policy.allowRawSudo),
57
+ allowDestructiveCommands: parseBoolean(process.env.SSH_MCP_ALLOW_DESTRUCTIVE_COMMANDS, filePolicy.allowDestructiveCommands ?? config.policy.allowDestructiveCommands),
58
+ allowDestructiveFs: parseBoolean(process.env.SSH_MCP_ALLOW_DESTRUCTIVE_FS, filePolicy.allowDestructiveFs ?? config.policy.allowDestructiveFs),
59
+ ...resolveGeneralPolicyLists(config, filePolicy),
60
+ ...resolveTunnelPolicyLists(config, filePolicy),
61
+ };
62
+ config.policy.allowRootLogin = config.security.allowRootLogin;
63
+ }
64
+ //# sourceMappingURL=config-security-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-security-env.js","sourceRoot":"","sources":["../src/config-security-env.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { CONNECTOR_CREDENTIAL_PROVIDERS, type ConnectorCredentialProvider } from "./config-parsers.js";
1
+ import { type ConnectorCredentialProvider } from "./config-parsers.js";
2
2
  /** @deprecated Import from config-parsers.js directly */
3
- export { CONNECTOR_CREDENTIAL_PROVIDERS };
3
+ export { CONNECTOR_CREDENTIAL_PROVIDERS } from "./config-parsers.js";
4
4
  import { type ToolProfile } from "./connector-profile.js";
5
5
  import type { PolicyConfig } from "./policy.js";
6
6
  import type { HostKeyPolicy } from "./types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/config.js CHANGED
@@ -1,9 +1,10 @@
1
1
  import * as os from "node:os";
2
2
  import * as path from "node:path";
3
3
  import { logger } from "./logging.js";
4
- import { CONNECTOR_CREDENTIAL_PROVIDERS, parseBoolean, parseHostKeyPolicy, parseInteger, parseList, loadPolicyFile, parseAuthMode, parseCredentialProvider, checkDeprecatedEnvVars, } from "./config-parsers.js";
4
+ import { applySecurityPolicyEnvironment } from "./config-security-env.js";
5
+ import { parseBoolean, parseInteger, parseList, parseAuthMode, parseCredentialProvider, checkDeprecatedEnvVars, } from "./config-parsers.js";
5
6
  /** @deprecated Import from config-parsers.js directly */
6
- export { CONNECTOR_CREDENTIAL_PROVIDERS };
7
+ export { CONNECTOR_CREDENTIAL_PROVIDERS } from "./config-parsers.js";
7
8
  import { parseToolProfile } from "./connector-profile.js";
8
9
  export const DEFAULT_CONFIG = {
9
10
  maxSessions: 20,
@@ -114,71 +115,7 @@ export class ConfigManager {
114
115
  config.rateLimit.perSession.maxRequests = parseInteger(process.env.SSH_MCP_RATE_LIMIT_PER_SESSION_MAX, config.rateLimit.perSession.maxRequests);
115
116
  config.rateLimit.perSession.windowMs = parseInteger(process.env.SSH_MCP_RATE_LIMIT_PER_SESSION_WINDOW_MS, config.rateLimit.perSession.windowMs);
116
117
  config.rateLimit.windowMs = parseInteger(process.env.SSH_MCP_RATE_LIMIT_WINDOW_MS, config.rateLimit.windowMs);
117
- const strictHostKeyChecking = process.env.STRICT_HOST_KEY_CHECKING ?? process.env.SSH_MCP_STRICT_HOST_KEY;
118
- if (strictHostKeyChecking !== undefined) {
119
- config.security.hostKeyPolicy = parseBoolean(strictHostKeyChecking, true)
120
- ? "strict"
121
- : "insecure";
122
- }
123
- config.security.hostKeyPolicy = parseHostKeyPolicy(process.env.SSH_MCP_HOST_KEY_POLICY, config.security.hostKeyPolicy);
124
- config.security.knownHostsPath =
125
- process.env.KNOWN_HOSTS_PATH ??
126
- process.env.SSH_MCP_KNOWN_HOSTS_PATH ??
127
- config.security.knownHostsPath;
128
- config.security.allowRootLogin = parseBoolean(process.env.SSH_MCP_ALLOW_ROOT_LOGIN, config.security.allowRootLogin);
129
- config.security.allowedCiphers = parseList(process.env.SSH_MCP_ALLOWED_CIPHERS);
130
- const filePolicy = loadPolicyFile(process.env.SSH_MCP_POLICY_FILE);
131
- config.policy = {
132
- ...config.policy,
133
- ...filePolicy,
134
- mode: process.env.SSH_MCP_POLICY_MODE === "explain"
135
- ? "explain"
136
- : (filePolicy.mode ?? config.policy.mode),
137
- allowRootLogin: config.security.allowRootLogin,
138
- allowRawSudo: parseBoolean(process.env.SSH_MCP_ALLOW_RAW_SUDO, filePolicy.allowRawSudo ?? config.policy.allowRawSudo),
139
- allowDestructiveCommands: parseBoolean(process.env.SSH_MCP_ALLOW_DESTRUCTIVE_COMMANDS, filePolicy.allowDestructiveCommands ?? config.policy.allowDestructiveCommands),
140
- allowDestructiveFs: parseBoolean(process.env.SSH_MCP_ALLOW_DESTRUCTIVE_FS, filePolicy.allowDestructiveFs ?? config.policy.allowDestructiveFs),
141
- allowedHosts: parseList(process.env.SSH_MCP_ALLOWED_HOSTS).length
142
- ? parseList(process.env.SSH_MCP_ALLOWED_HOSTS)
143
- : (filePolicy.allowedHosts ?? config.policy.allowedHosts),
144
- commandAllow: parseList(process.env.SSH_MCP_COMMAND_ALLOW).length
145
- ? parseList(process.env.SSH_MCP_COMMAND_ALLOW)
146
- : (filePolicy.commandAllow ?? config.policy.commandAllow),
147
- commandDeny: parseList(process.env.SSH_MCP_COMMAND_DENY).length
148
- ? parseList(process.env.SSH_MCP_COMMAND_DENY)
149
- : (filePolicy.commandDeny ?? config.policy.commandDeny),
150
- pathAllowPrefixes: parseList(process.env.SSH_MCP_PATH_ALLOW_PREFIXES).length
151
- ? parseList(process.env.SSH_MCP_PATH_ALLOW_PREFIXES)
152
- : (filePolicy.pathAllowPrefixes ?? config.policy.pathAllowPrefixes),
153
- pathDenyPrefixes: parseList(process.env.SSH_MCP_PATH_DENY_PREFIXES).length
154
- ? parseList(process.env.SSH_MCP_PATH_DENY_PREFIXES)
155
- : (filePolicy.pathDenyPrefixes ?? config.policy.pathDenyPrefixes),
156
- localPathAllowPrefixes: parseList(process.env.SSH_MCP_LOCAL_PATH_ALLOW_PREFIXES).length
157
- ? parseList(process.env.SSH_MCP_LOCAL_PATH_ALLOW_PREFIXES)
158
- : (filePolicy.localPathAllowPrefixes ?? config.policy.localPathAllowPrefixes),
159
- localPathDenyPrefixes: parseList(process.env.SSH_MCP_LOCAL_PATH_DENY_PREFIXES).length
160
- ? parseList(process.env.SSH_MCP_LOCAL_PATH_DENY_PREFIXES)
161
- : (filePolicy.localPathDenyPrefixes ?? config.policy.localPathDenyPrefixes),
162
- tunnelAllowBindHosts: parseList(process.env.SSH_MCP_TUNNEL_ALLOW_BIND_HOSTS).length
163
- ? parseList(process.env.SSH_MCP_TUNNEL_ALLOW_BIND_HOSTS)
164
- : (filePolicy.tunnelAllowBindHosts ?? config.policy.tunnelAllowBindHosts),
165
- tunnelDenyBindHosts: parseList(process.env.SSH_MCP_TUNNEL_DENY_BIND_HOSTS).length
166
- ? parseList(process.env.SSH_MCP_TUNNEL_DENY_BIND_HOSTS)
167
- : (filePolicy.tunnelDenyBindHosts ?? config.policy.tunnelDenyBindHosts),
168
- tunnelAllowRemoteHosts: parseList(process.env.SSH_MCP_TUNNEL_ALLOW_REMOTE_HOSTS).length
169
- ? parseList(process.env.SSH_MCP_TUNNEL_ALLOW_REMOTE_HOSTS)
170
- : (filePolicy.tunnelAllowRemoteHosts ?? config.policy.tunnelAllowRemoteHosts),
171
- tunnelDenyRemoteHosts: parseList(process.env.SSH_MCP_TUNNEL_DENY_REMOTE_HOSTS).length
172
- ? parseList(process.env.SSH_MCP_TUNNEL_DENY_REMOTE_HOSTS)
173
- : (filePolicy.tunnelDenyRemoteHosts ?? config.policy.tunnelDenyRemoteHosts),
174
- tunnelAllowPorts: parseList(process.env.SSH_MCP_TUNNEL_ALLOW_PORTS).length
175
- ? parseList(process.env.SSH_MCP_TUNNEL_ALLOW_PORTS)
176
- : (filePolicy.tunnelAllowPorts ?? config.policy.tunnelAllowPorts),
177
- tunnelDenyPorts: parseList(process.env.SSH_MCP_TUNNEL_DENY_PORTS).length
178
- ? parseList(process.env.SSH_MCP_TUNNEL_DENY_PORTS)
179
- : (filePolicy.tunnelDenyPorts ?? config.policy.tunnelDenyPorts),
180
- };
181
- config.policy.allowRootLogin = config.security.allowRootLogin;
118
+ applySecurityPolicyEnvironment(config);
182
119
  const bearerTokenFile = process.env.SSH_MCP_HTTP_BEARER_TOKEN_FILE ?? config.http.bearerTokenFile;
183
120
  const publicUrl = process.env.SSH_MCP_HTTP_PUBLIC_URL ?? config.http.publicUrl;
184
121
  config.http = {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,20 @@
1
- import type { MCPPromptDefinition } from "./prompts.js";
2
- import type { MCPResource } from "./resources.js";
3
- import type { Tool } from "@modelcontextprotocol/sdk/types.js";
1
+ export interface MCPResource {
2
+ uri: string;
3
+ name: string;
4
+ description: string;
5
+ mimeType: string;
6
+ }
7
+ export interface MCPPromptDefinition {
8
+ name: string;
9
+ title: string;
10
+ description: string;
11
+ arguments?: Array<{
12
+ name: string;
13
+ description: string;
14
+ required?: boolean;
15
+ }>;
16
+ }
17
+ import type { Tool } from "@modelcontextprotocol/server";
4
18
  export declare const TOOL_PROFILES: readonly ["full", "remote-safe", "chatgpt", "claude", "remote-readonly", "remote-broker"];
5
19
  export type ToolProfile = (typeof TOOL_PROFILES)[number];
6
20
  export declare const REMOTE_SAFE_TOOL_NAMES: readonly ["connector_status", "ssh_hosts_list", "ssh_policy_explain", "ssh_host_inspect", "ssh_mutation_plan"];
@@ -1 +1 @@
1
- {"version":3,"file":"connector-profile.d.ts","sourceRoot":"","sources":["../src/connector-profile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE/D,eAAO,MAAM,aAAa,2FAOhB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAUzD,eAAO,MAAM,sBAAsB,gHAExB,CAAC;AAeZ,eAAO,MAAM,mBAAmB,aAE/B,CAAC;AACF,eAAO,MAAM,kBAAkB,aAE9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAO9D,CAAC;AAMF,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAgBpF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,EAAE,CAOvE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,WAAW,GAAG,WAAW,CAQ9F;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAErE;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAEvF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,EAAE,CAMjF;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,iBAKvF;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAEtF;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,mBAAmB,EAAE,EAAE,OAAO,EAAE,WAAW,yBAK3F;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAErF"}
1
+ {"version":3,"file":"connector-profile.d.ts","sourceRoot":"","sources":["../src/connector-profile.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC9E;AAED,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAEzD,eAAO,MAAM,aAAa,2FAOhB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAUzD,eAAO,MAAM,sBAAsB,gHAExB,CAAC;AAeZ,eAAO,MAAM,mBAAmB,aAE/B,CAAC;AACF,eAAO,MAAM,kBAAkB,aAE9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAO9D,CAAC;AAMF,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAgBpF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,EAAE,CAOvE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,WAAW,GAAG,WAAW,CAQ9F;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAErE;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAEvF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,EAAE,CAMjF;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,iBAKvF;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAEtF;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,mBAAmB,EAAE,EAAE,OAAO,EAAE,WAAW,yBAK3F;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAErF"}