ssh-mcp-pro 1.2.3 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/CHANGELOG.md +71 -0
  2. package/MIGRATION.md +2 -2
  3. package/README.md +34 -13
  4. package/SECURITY_DECISIONS.md +19 -0
  5. package/dist/agent-bin.js +5 -2
  6. package/dist/agent-bin.js.map +1 -1
  7. package/dist/cli.d.ts +1 -0
  8. package/dist/cli.d.ts.map +1 -1
  9. package/dist/cli.js +38 -47
  10. package/dist/cli.js.map +1 -1
  11. package/dist/config-security-env.d.ts +4 -0
  12. package/dist/config-security-env.d.ts.map +1 -0
  13. package/dist/config-security-env.js +64 -0
  14. package/dist/config-security-env.js.map +1 -0
  15. package/dist/config-types.d.ts +82 -0
  16. package/dist/config-types.d.ts.map +1 -0
  17. package/dist/config-types.js +2 -0
  18. package/dist/config-types.js.map +1 -0
  19. package/dist/config.d.ts +3 -82
  20. package/dist/config.d.ts.map +1 -1
  21. package/dist/config.js +4 -67
  22. package/dist/config.js.map +1 -1
  23. package/dist/connector-profile.d.ts +1 -1
  24. package/dist/connector-profile.d.ts.map +1 -1
  25. package/dist/detect.d.ts.map +1 -1
  26. package/dist/detect.js +226 -192
  27. package/dist/detect.js.map +1 -1
  28. package/dist/ensure-package-service.d.ts +9 -0
  29. package/dist/ensure-package-service.d.ts.map +1 -0
  30. package/dist/ensure-package-service.js +146 -0
  31. package/dist/ensure-package-service.js.map +1 -0
  32. package/dist/ensure-pkg.js +4 -4
  33. package/dist/ensure-pkg.js.map +1 -1
  34. package/dist/ensure.d.ts.map +1 -1
  35. package/dist/ensure.js +15 -144
  36. package/dist/ensure.js.map +1 -1
  37. package/dist/fs-sftp.js +1 -1
  38. package/dist/fs-sftp.js.map +1 -1
  39. package/dist/fs-stat.d.ts +10 -0
  40. package/dist/fs-stat.d.ts.map +1 -0
  41. package/dist/fs-stat.js +62 -0
  42. package/dist/fs-stat.js.map +1 -0
  43. package/dist/fs-tools.d.ts.map +1 -1
  44. package/dist/fs-tools.js +6 -58
  45. package/dist/fs-tools.js.map +1 -1
  46. package/dist/http-security.d.ts.map +1 -1
  47. package/dist/http-security.js +6 -6
  48. package/dist/http-security.js.map +1 -1
  49. package/dist/http-server-runtime.d.ts.map +1 -1
  50. package/dist/http-server-runtime.js +41 -7
  51. package/dist/http-server-runtime.js.map +1 -1
  52. package/dist/index.js +7 -24
  53. package/dist/index.js.map +1 -1
  54. package/dist/mcp-http-web.d.ts +8 -0
  55. package/dist/mcp-http-web.d.ts.map +1 -0
  56. package/dist/mcp-http-web.js +35 -0
  57. package/dist/mcp-http-web.js.map +1 -0
  58. package/dist/mcp.d.ts +6 -2
  59. package/dist/mcp.d.ts.map +1 -1
  60. package/dist/mcp.js +22 -14
  61. package/dist/mcp.js.map +1 -1
  62. package/dist/policy.d.ts +8 -0
  63. package/dist/policy.d.ts.map +1 -1
  64. package/dist/policy.js +147 -105
  65. package/dist/policy.js.map +1 -1
  66. package/dist/process.d.ts.map +1 -1
  67. package/dist/process.js +11 -7
  68. package/dist/process.js.map +1 -1
  69. package/dist/remote/agent-activity-log.d.ts +26 -0
  70. package/dist/remote/agent-activity-log.d.ts.map +1 -0
  71. package/dist/remote/agent-activity-log.js +211 -0
  72. package/dist/remote/agent-activity-log.js.map +1 -0
  73. package/dist/remote/agent-cli.d.ts.map +1 -1
  74. package/dist/remote/agent-cli.js +153 -33
  75. package/dist/remote/agent-cli.js.map +1 -1
  76. package/dist/remote/agent-executor.d.ts.map +1 -1
  77. package/dist/remote/agent-executor.js +22 -10
  78. package/dist/remote/agent-executor.js.map +1 -1
  79. package/dist/remote/agent-handler.d.ts +2 -0
  80. package/dist/remote/agent-handler.d.ts.map +1 -1
  81. package/dist/remote/agent-handler.js +4 -0
  82. package/dist/remote/agent-handler.js.map +1 -1
  83. package/dist/remote/config.d.ts.map +1 -1
  84. package/dist/remote/config.js +12 -1
  85. package/dist/remote/config.js.map +1 -1
  86. package/dist/remote/control-plane.d.ts +12 -0
  87. package/dist/remote/control-plane.d.ts.map +1 -1
  88. package/dist/remote/control-plane.js +164 -56
  89. package/dist/remote/control-plane.js.map +1 -1
  90. package/dist/remote/crypto.d.ts +9 -4
  91. package/dist/remote/crypto.d.ts.map +1 -1
  92. package/dist/remote/crypto.js +41 -9
  93. package/dist/remote/crypto.js.map +1 -1
  94. package/dist/remote/http-util.d.ts.map +1 -1
  95. package/dist/remote/http-util.js +14 -7
  96. package/dist/remote/http-util.js.map +1 -1
  97. package/dist/remote/mcp-tools.d.ts +7 -0
  98. package/dist/remote/mcp-tools.d.ts.map +1 -1
  99. package/dist/remote/mcp-tools.js +28 -0
  100. package/dist/remote/mcp-tools.js.map +1 -1
  101. package/dist/remote/oauth-handler.d.ts +30 -3
  102. package/dist/remote/oauth-handler.d.ts.map +1 -1
  103. package/dist/remote/oauth-handler.js +232 -18
  104. package/dist/remote/oauth-handler.js.map +1 -1
  105. package/dist/remote/policy.js +2 -2
  106. package/dist/remote/policy.js.map +1 -1
  107. package/dist/remote/schemas.d.ts +9 -9
  108. package/dist/remote/schemas.js +6 -6
  109. package/dist/remote/schemas.js.map +1 -1
  110. package/dist/remote/store.d.ts +38 -1
  111. package/dist/remote/store.d.ts.map +1 -1
  112. package/dist/remote/store.js +149 -11
  113. package/dist/remote/store.js.map +1 -1
  114. package/dist/remote/types.d.ts +14 -0
  115. package/dist/remote/types.d.ts.map +1 -1
  116. package/dist/remote/types.js.map +1 -1
  117. package/dist/remote/web-dashboard-client-config.d.ts +77 -0
  118. package/dist/remote/web-dashboard-client-config.d.ts.map +1 -0
  119. package/dist/remote/web-dashboard-client-config.js +81 -0
  120. package/dist/remote/web-dashboard-client-config.js.map +1 -0
  121. package/dist/remote/web-dashboard-html.d.ts +2 -0
  122. package/dist/remote/web-dashboard-html.d.ts.map +1 -0
  123. package/dist/remote/web-dashboard-html.js +451 -0
  124. package/dist/remote/web-dashboard-html.js.map +1 -0
  125. package/dist/remote/web-dashboard-oauth-users.d.ts +4 -0
  126. package/dist/remote/web-dashboard-oauth-users.d.ts.map +1 -0
  127. package/dist/remote/web-dashboard-oauth-users.js +78 -0
  128. package/dist/remote/web-dashboard-oauth-users.js.map +1 -0
  129. package/dist/remote/web-dashboard-static.d.ts +4 -0
  130. package/dist/remote/web-dashboard-static.d.ts.map +1 -0
  131. package/dist/remote/web-dashboard-static.js +19 -0
  132. package/dist/remote/web-dashboard-static.js.map +1 -0
  133. package/dist/remote/web-dashboard-styles.d.ts +2 -0
  134. package/dist/remote/web-dashboard-styles.d.ts.map +1 -0
  135. package/dist/remote/web-dashboard-styles.js +206 -0
  136. package/dist/remote/web-dashboard-styles.js.map +1 -0
  137. package/dist/remote/web-dashboard.d.ts +62 -0
  138. package/dist/remote/web-dashboard.d.ts.map +1 -0
  139. package/dist/remote/web-dashboard.js +467 -0
  140. package/dist/remote/web-dashboard.js.map +1 -0
  141. package/dist/retry.d.ts.map +1 -1
  142. package/dist/retry.js +6 -3
  143. package/dist/retry.js.map +1 -1
  144. package/dist/safety.d.ts.map +1 -1
  145. package/dist/safety.js +56 -6
  146. package/dist/safety.js.map +1 -1
  147. package/dist/session-auth.js +7 -7
  148. package/dist/session-auth.js.map +1 -1
  149. package/dist/session.d.ts +1 -0
  150. package/dist/session.d.ts.map +1 -1
  151. package/dist/session.js +44 -40
  152. package/dist/session.js.map +1 -1
  153. package/dist/shell.d.ts.map +1 -1
  154. package/dist/shell.js +5 -4
  155. package/dist/shell.js.map +1 -1
  156. package/dist/ssh-config.d.ts +2 -2
  157. package/dist/ssh-config.d.ts.map +1 -1
  158. package/dist/ssh-config.js +24 -20
  159. package/dist/ssh-config.js.map +1 -1
  160. package/dist/telemetry.d.ts.map +1 -1
  161. package/dist/telemetry.js +9 -2
  162. package/dist/telemetry.js.map +1 -1
  163. package/dist/tools/connector.provider.d.ts +1 -1
  164. package/dist/tools/connector.provider.d.ts.map +1 -1
  165. package/dist/tools/ensure.provider.d.ts +1 -1
  166. package/dist/tools/ensure.provider.d.ts.map +1 -1
  167. package/dist/tools/fs.provider.d.ts +1 -1
  168. package/dist/tools/fs.provider.d.ts.map +1 -1
  169. package/dist/tools/metadata.d.ts +1 -1
  170. package/dist/tools/metadata.d.ts.map +1 -1
  171. package/dist/tools/output-schemas.d.ts +27 -135
  172. package/dist/tools/output-schemas.d.ts.map +1 -1
  173. package/dist/tools/process.provider.d.ts +1 -1
  174. package/dist/tools/process.provider.d.ts.map +1 -1
  175. package/dist/tools/registry.d.ts +1 -1
  176. package/dist/tools/registry.d.ts.map +1 -1
  177. package/dist/tools/registry.js +16 -13
  178. package/dist/tools/registry.js.map +1 -1
  179. package/dist/tools/session.provider.d.ts +1 -1
  180. package/dist/tools/session.provider.d.ts.map +1 -1
  181. package/dist/tools/system.provider.d.ts +1 -1
  182. package/dist/tools/system.provider.d.ts.map +1 -1
  183. package/dist/tools/transfer.provider.d.ts +1 -1
  184. package/dist/tools/transfer.provider.d.ts.map +1 -1
  185. package/dist/tools/tunnel.provider.d.ts +1 -1
  186. package/dist/tools/tunnel.provider.d.ts.map +1 -1
  187. package/dist/tools/types.d.ts +1 -1
  188. package/dist/tools/types.d.ts.map +1 -1
  189. package/dist/transfer.js +2 -2
  190. package/dist/transfer.js.map +1 -1
  191. package/dist/types.js +1 -1
  192. package/dist/types.js.map +1 -1
  193. package/docs/adding-a-device.md +39 -17
  194. package/docs/agent-activity-monitor.md +34 -0
  195. package/docs/coolify.md +29 -0
  196. package/docs/development/dependency-management.md +1 -1
  197. package/docs/development/local-setup.md +1 -1
  198. package/docs/development/mcp-protocol-2026.md +33 -0
  199. package/docs/docker.md +4 -4
  200. package/docs/doppler-guide.md +34 -0
  201. package/docs/openssf-evidence.md +11 -7
  202. package/docs/openssf-gap-analysis.md +7 -8
  203. package/docs/reference/cli.md +17 -6
  204. package/docs/reference/compatibility.md +1 -1
  205. package/docs/security/dependency-audit-exceptions.md +3 -7
  206. package/docs/security/hosted-data-inventory.md +81 -0
  207. package/docs/sonarcloud-analysis.md +9 -0
  208. package/docs/tutorials/getting-started.md +1 -1
  209. package/mcp.json +1 -1
  210. package/package.json +26 -21
  211. package/registry/ssh-mcp-pro/mcp.json +1 -1
  212. package/server.json +3 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ssh-mcp-pro",
3
- "version": "1.2.3",
3
+ "version": "1.4.2",
4
4
  "mcpName": "io.github.oaslananka/ssh-mcp-pro",
5
5
  "description": "Model Context Protocol (MCP) SSH client server for remote automation",
6
6
  "type": "module",
@@ -58,22 +58,25 @@
58
58
  },
59
59
  "engines": {
60
60
  "node": ">=22.22.2",
61
- "pnpm": "^11.28.5"
61
+ "pnpm": "^11.28.10"
62
62
  },
63
63
  "dependencies": {
64
- "@modelcontextprotocol/sdk": "^1.32.0",
64
+ "@modelcontextprotocol/node": "^2.1.2",
65
+ "@modelcontextprotocol/server": "^2.4.0",
66
+ "@modelcontextprotocol/server-legacy": "^2.4.0",
65
67
  "@opentelemetry/api": "^1.9.1",
66
68
  "@opentelemetry/exporter-trace-otlp-http": "^0.222.0",
67
69
  "@opentelemetry/resources": "^2.11.0",
68
70
  "@opentelemetry/sdk-node": "^0.222.0",
69
71
  "@opentelemetry/semantic-conventions": "^1.43.0",
70
72
  "html-escaper": "3.0.3",
71
- "jose": "6.2.3",
73
+ "jose": "6.2.13",
72
74
  "node-ssh": "^13.2.1",
73
75
  "ws": "^8.21.1",
74
- "zod": "^4.4.3"
76
+ "zod": "^4.6.7"
75
77
  },
76
78
  "devDependencies": {
79
+ "@modelcontextprotocol/client": "2.4.0",
77
80
  "@stryker-mutator/core": "9.6.1",
78
81
  "@stryker-mutator/typescript-checker": "9.6.1",
79
82
  "@stryker-mutator/vitest-runner": "9.6.1",
@@ -83,29 +86,29 @@
83
86
  "@types/ws": "^8.18.2",
84
87
  "@typescript-eslint/eslint-plugin": "^8.71.0",
85
88
  "@typescript-eslint/parser": "^8.71.0",
86
- "@vitest/coverage-v8": "^4.1.11",
89
+ "@vitest/coverage-v8": "^4.1.12",
87
90
  "ajv": "^8.20.0",
88
91
  "autocannon": "^7.15.0",
89
92
  "dependency-cruiser": "^17.4.3",
90
93
  "eslint": "^10.12.0",
91
94
  "fast-check": "^4.10.2",
92
- "knip": "^6.39.0",
95
+ "knip": "^6.44.1",
93
96
  "prettier": "^3.9.9",
94
97
  "publint": "^0.3.25",
95
98
  "typedoc": "0.28.20",
96
99
  "typescript": "^6.0.3",
97
- "vite": "^7.3.5",
98
- "vitest": "^4.1.11"
100
+ "vite": "7.3.7",
101
+ "vitest": "^4.1.12"
99
102
  },
100
103
  "overrides": {
101
104
  "brace-expansion": "^5.0.12",
102
- "fast-uri": "^3.1.8",
103
- "ip-address": "^10.7.1",
104
- "nanoid": "^3.3.18",
105
- "browserslist": "^4.28.7",
105
+ "fast-uri": "^3.1.9",
106
+ "ip-address": "^10.7.5",
107
+ "nanoid": "^3.3.20",
108
+ "browserslist": "^4.29.5",
106
109
  "@hono/node-server": "^2.1.3",
107
- "markdown-it": "^14.3.2",
108
- "vitest": "^4.1.11"
110
+ "markdown-it": "^14.3.3",
111
+ "vitest": "^4.1.12"
109
112
  },
110
113
  "scripts": {
111
114
  "build": "tsc -p tsconfig.json",
@@ -120,11 +123,11 @@
120
123
  "test:perf:baseline": "WRITE_BASELINE=true pnpm run test:perf",
121
124
  "test:mutation": "stryker run",
122
125
  "test:mutation:ci": "stryker run",
123
- "lint": "eslint \"src/**/*.ts\" \"test/**/*.ts\" \"vitest.config.ts\" \"vitest.mutation.config.ts\"",
124
- "lint:fix": "eslint \"src/**/*.ts\" \"test/**/*.ts\" \"vitest.config.ts\" \"vitest.mutation.config.ts\" --fix",
126
+ "lint": "eslint \"src/**/*.ts\" \"test/**/*.ts\" \"vitest.config.ts\" \"vitest.mutation.config.ts\" \"vitest.bench.config.ts\"",
127
+ "lint:fix": "eslint \"src/**/*.ts\" \"test/**/*.ts\" \"vitest.config.ts\" \"vitest.mutation.config.ts\" \"vitest.bench.config.ts\" --fix",
125
128
  "lint:staged": "node scripts/run-staged-checks.mjs --lint-only",
126
- "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"scripts/**/*.{mjs,cjs}\" \"docs/**/*.md\" \".github/workflows/*.{yml,yaml}\" \"stryker.conf.mjs\" \"vitest.config.ts\" \"vitest.mutation.config.ts\"",
127
- "format:check": "prettier --check \"src/**/*.ts\" \"test/**/*.ts\" \"scripts/**/*.{mjs,cjs}\" \"docs/**/*.md\" \".github/workflows/*.{yml,yaml}\" \"stryker.conf.mjs\" \"vitest.config.ts\" \"vitest.mutation.config.ts\"",
129
+ "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\" \"scripts/**/*.{mjs,cjs}\" \"docs/**/*.md\" \".github/workflows/*.{yml,yaml}\" \"stryker.conf.mjs\" \"vitest.config.ts\" \"vitest.mutation.config.ts\" \"vitest.bench.config.ts\"",
130
+ "format:check": "prettier --check \"src/**/*.ts\" \"test/**/*.ts\" \"scripts/**/*.{mjs,cjs}\" \"docs/**/*.md\" \".github/workflows/*.{yml,yaml}\" \"stryker.conf.mjs\" \"vitest.config.ts\" \"vitest.mutation.config.ts\" \"vitest.bench.config.ts\"",
128
131
  "format:staged": "node scripts/run-staged-checks.mjs",
129
132
  "docker:ssh-fixture:up": "node scripts/docker-ssh-fixture.mjs up",
130
133
  "docker:ssh-fixture:verify": "node scripts/docker-ssh-fixture.mjs verify",
@@ -142,6 +145,7 @@
142
145
  "validate:mcp-registry": "node scripts/check-mcp-registry-record.mjs",
143
146
  "validate:chatgpt-app": "node scripts/validate-chatgpt-app.mjs",
144
147
  "validate:claude-connector": "node scripts/validate-claude-connector.mjs",
148
+ "validate:google-app": "node scripts/validate-google-app.mjs",
145
149
  "check:doc-language": "node scripts/check-doc-language.mjs",
146
150
  "check:package-scripts": "node scripts/check-package-scripts.mjs",
147
151
  "check:freshness": "node scripts/check-dependency-freshness.mjs --json artifacts/dependency-freshness.json --markdown artifacts/dependency-freshness.md",
@@ -166,12 +170,13 @@
166
170
  "check:module-size": "node scripts/check-module-size.mjs",
167
171
  "check:maintainability": "pnpm run check:module-size && pnpm run check:circular && pnpm run check:knip",
168
172
  "check:quality": "pnpm run format:check && pnpm run check:doc-language && pnpm run check:package-scripts && pnpm run check:rulesets && pnpm run verify:actions-runtime && pnpm run lint && pnpm run typecheck && pnpm run audit && pnpm run licenses:check",
169
- "check:package": "pnpm run build && pnpm run sync-version -- --check && pnpm run validate:mcp-metadata && pnpm run validate:chatgpt-app && pnpm run validate:claude-connector && pnpm run docs:check && pnpm run pack:check && pnpm run pack:install-smoke && pnpm run audit:packed",
173
+ "check:package": "pnpm run build && pnpm run sync-version -- --check && pnpm run validate:mcp-metadata && pnpm run validate:chatgpt-app && pnpm run validate:claude-connector && pnpm run validate:google-app && pnpm run docs:check && pnpm run pack:check && pnpm run pack:install-smoke && pnpm run audit:packed",
170
174
  "check:push": "pnpm run format:check && pnpm run lint && pnpm run typecheck && pnpm test",
171
175
  "check": "pnpm run check:quality && pnpm run test:coverage && pnpm run check:package",
172
176
  "hook:pre-commit": "pnpm run format:staged",
173
177
  "hook:pre-push": "pnpm run check:push",
174
178
  "release:dry-run": "node scripts/validate-release-please.mjs && node scripts/release-state.mjs --offline --json && pnpm run check:package",
175
- "sbom": "node scripts/generate-sbom.mjs"
179
+ "sbom": "node scripts/generate-sbom.mjs",
180
+ "bench": "vitest bench --run --config vitest.bench.config.ts"
176
181
  }
177
182
  }
@@ -2,7 +2,7 @@
2
2
  "name": "ssh-mcp-pro",
3
3
  "display_name": "ssh-mcp-pro",
4
4
  "description": "Secure MCP SSH automation server with policy controls, resources, prompts, stdio, and HTTP.",
5
- "version": "1.2.3",
5
+ "version": "1.4.2",
6
6
  "author": "Osman Aslan",
7
7
  "license": "MIT",
8
8
  "runtime": "node",
package/server.json CHANGED
@@ -7,13 +7,13 @@
7
7
  "url": "https://github.com/oaslananka/ssh-mcp-pro",
8
8
  "source": "github"
9
9
  },
10
- "version": "1.2.3",
10
+ "version": "1.4.2",
11
11
  "packages": [
12
12
  {
13
13
  "registryType": "npm",
14
14
  "registryBaseUrl": "https://registry.npmjs.org",
15
15
  "identifier": "ssh-mcp-pro",
16
- "version": "1.2.3",
16
+ "version": "1.4.2",
17
17
  "transport": {
18
18
  "type": "stdio"
19
19
  }
@@ -22,7 +22,7 @@
22
22
  "registryType": "npm",
23
23
  "registryBaseUrl": "https://registry.npmjs.org",
24
24
  "identifier": "ssh-mcp-pro",
25
- "version": "1.2.3",
25
+ "version": "1.4.2",
26
26
  "runtimeHint": "npx",
27
27
  "transport": {
28
28
  "type": "streamable-http",