ssh-mcp-pro 1.2.3 → 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 (200) hide show
  1. package/CHANGELOG.md +55 -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 +1 -1
  18. package/dist/connector-profile.d.ts.map +1 -1
  19. package/dist/detect.d.ts.map +1 -1
  20. package/dist/detect.js +226 -192
  21. package/dist/detect.js.map +1 -1
  22. package/dist/ensure-package-service.d.ts +9 -0
  23. package/dist/ensure-package-service.d.ts.map +1 -0
  24. package/dist/ensure-package-service.js +146 -0
  25. package/dist/ensure-package-service.js.map +1 -0
  26. package/dist/ensure-pkg.js +4 -4
  27. package/dist/ensure-pkg.js.map +1 -1
  28. package/dist/ensure.d.ts.map +1 -1
  29. package/dist/ensure.js +15 -144
  30. package/dist/ensure.js.map +1 -1
  31. package/dist/fs-sftp.js +1 -1
  32. package/dist/fs-sftp.js.map +1 -1
  33. package/dist/fs-stat.d.ts +10 -0
  34. package/dist/fs-stat.d.ts.map +1 -0
  35. package/dist/fs-stat.js +62 -0
  36. package/dist/fs-stat.js.map +1 -0
  37. package/dist/fs-tools.d.ts.map +1 -1
  38. package/dist/fs-tools.js +6 -58
  39. package/dist/fs-tools.js.map +1 -1
  40. package/dist/http-security.d.ts.map +1 -1
  41. package/dist/http-security.js +6 -6
  42. package/dist/http-security.js.map +1 -1
  43. package/dist/http-server-runtime.d.ts.map +1 -1
  44. package/dist/http-server-runtime.js +41 -7
  45. package/dist/http-server-runtime.js.map +1 -1
  46. package/dist/index.js +6 -23
  47. package/dist/index.js.map +1 -1
  48. package/dist/mcp-http-web.d.ts +8 -0
  49. package/dist/mcp-http-web.d.ts.map +1 -0
  50. package/dist/mcp-http-web.js +35 -0
  51. package/dist/mcp-http-web.js.map +1 -0
  52. package/dist/mcp.d.ts +6 -2
  53. package/dist/mcp.d.ts.map +1 -1
  54. package/dist/mcp.js +22 -14
  55. package/dist/mcp.js.map +1 -1
  56. package/dist/policy.d.ts +8 -0
  57. package/dist/policy.d.ts.map +1 -1
  58. package/dist/policy.js +147 -105
  59. package/dist/policy.js.map +1 -1
  60. package/dist/process.d.ts.map +1 -1
  61. package/dist/process.js +11 -7
  62. package/dist/process.js.map +1 -1
  63. package/dist/remote/agent-activity-log.d.ts +26 -0
  64. package/dist/remote/agent-activity-log.d.ts.map +1 -0
  65. package/dist/remote/agent-activity-log.js +211 -0
  66. package/dist/remote/agent-activity-log.js.map +1 -0
  67. package/dist/remote/agent-cli.d.ts.map +1 -1
  68. package/dist/remote/agent-cli.js +92 -25
  69. package/dist/remote/agent-cli.js.map +1 -1
  70. package/dist/remote/agent-executor.d.ts.map +1 -1
  71. package/dist/remote/agent-executor.js +22 -10
  72. package/dist/remote/agent-executor.js.map +1 -1
  73. package/dist/remote/agent-handler.d.ts +2 -0
  74. package/dist/remote/agent-handler.d.ts.map +1 -1
  75. package/dist/remote/agent-handler.js +4 -0
  76. package/dist/remote/agent-handler.js.map +1 -1
  77. package/dist/remote/config.d.ts.map +1 -1
  78. package/dist/remote/config.js +12 -1
  79. package/dist/remote/config.js.map +1 -1
  80. package/dist/remote/control-plane.d.ts +12 -0
  81. package/dist/remote/control-plane.d.ts.map +1 -1
  82. package/dist/remote/control-plane.js +164 -56
  83. package/dist/remote/control-plane.js.map +1 -1
  84. package/dist/remote/crypto.d.ts +9 -4
  85. package/dist/remote/crypto.d.ts.map +1 -1
  86. package/dist/remote/crypto.js +41 -9
  87. package/dist/remote/crypto.js.map +1 -1
  88. package/dist/remote/http-util.d.ts.map +1 -1
  89. package/dist/remote/http-util.js +14 -7
  90. package/dist/remote/http-util.js.map +1 -1
  91. package/dist/remote/mcp-tools.d.ts +7 -0
  92. package/dist/remote/mcp-tools.d.ts.map +1 -1
  93. package/dist/remote/mcp-tools.js +28 -0
  94. package/dist/remote/mcp-tools.js.map +1 -1
  95. package/dist/remote/oauth-handler.d.ts +30 -3
  96. package/dist/remote/oauth-handler.d.ts.map +1 -1
  97. package/dist/remote/oauth-handler.js +232 -18
  98. package/dist/remote/oauth-handler.js.map +1 -1
  99. package/dist/remote/policy.js +2 -2
  100. package/dist/remote/policy.js.map +1 -1
  101. package/dist/remote/schemas.d.ts +9 -9
  102. package/dist/remote/schemas.js +6 -6
  103. package/dist/remote/schemas.js.map +1 -1
  104. package/dist/remote/store.d.ts +38 -1
  105. package/dist/remote/store.d.ts.map +1 -1
  106. package/dist/remote/store.js +149 -11
  107. package/dist/remote/store.js.map +1 -1
  108. package/dist/remote/types.d.ts +14 -0
  109. package/dist/remote/types.d.ts.map +1 -1
  110. package/dist/remote/types.js.map +1 -1
  111. package/dist/remote/web-dashboard-client-config.d.ts +77 -0
  112. package/dist/remote/web-dashboard-client-config.d.ts.map +1 -0
  113. package/dist/remote/web-dashboard-client-config.js +81 -0
  114. package/dist/remote/web-dashboard-client-config.js.map +1 -0
  115. package/dist/remote/web-dashboard-html.d.ts +2 -0
  116. package/dist/remote/web-dashboard-html.d.ts.map +1 -0
  117. package/dist/remote/web-dashboard-html.js +433 -0
  118. package/dist/remote/web-dashboard-html.js.map +1 -0
  119. package/dist/remote/web-dashboard-oauth-users.d.ts +4 -0
  120. package/dist/remote/web-dashboard-oauth-users.d.ts.map +1 -0
  121. package/dist/remote/web-dashboard-oauth-users.js +78 -0
  122. package/dist/remote/web-dashboard-oauth-users.js.map +1 -0
  123. package/dist/remote/web-dashboard-static.d.ts +4 -0
  124. package/dist/remote/web-dashboard-static.d.ts.map +1 -0
  125. package/dist/remote/web-dashboard-static.js +19 -0
  126. package/dist/remote/web-dashboard-static.js.map +1 -0
  127. package/dist/remote/web-dashboard-styles.d.ts +2 -0
  128. package/dist/remote/web-dashboard-styles.d.ts.map +1 -0
  129. package/dist/remote/web-dashboard-styles.js +187 -0
  130. package/dist/remote/web-dashboard-styles.js.map +1 -0
  131. package/dist/remote/web-dashboard.d.ts +62 -0
  132. package/dist/remote/web-dashboard.d.ts.map +1 -0
  133. package/dist/remote/web-dashboard.js +467 -0
  134. package/dist/remote/web-dashboard.js.map +1 -0
  135. package/dist/retry.d.ts.map +1 -1
  136. package/dist/retry.js +6 -3
  137. package/dist/retry.js.map +1 -1
  138. package/dist/safety.d.ts.map +1 -1
  139. package/dist/safety.js +56 -6
  140. package/dist/safety.js.map +1 -1
  141. package/dist/session-auth.js +7 -7
  142. package/dist/session-auth.js.map +1 -1
  143. package/dist/session.d.ts +1 -0
  144. package/dist/session.d.ts.map +1 -1
  145. package/dist/session.js +44 -40
  146. package/dist/session.js.map +1 -1
  147. package/dist/shell.d.ts.map +1 -1
  148. package/dist/shell.js +5 -4
  149. package/dist/shell.js.map +1 -1
  150. package/dist/ssh-config.d.ts +2 -2
  151. package/dist/ssh-config.d.ts.map +1 -1
  152. package/dist/ssh-config.js +24 -20
  153. package/dist/ssh-config.js.map +1 -1
  154. package/dist/telemetry.d.ts.map +1 -1
  155. package/dist/telemetry.js +9 -2
  156. package/dist/telemetry.js.map +1 -1
  157. package/dist/tools/connector.provider.d.ts +1 -1
  158. package/dist/tools/connector.provider.d.ts.map +1 -1
  159. package/dist/tools/ensure.provider.d.ts +1 -1
  160. package/dist/tools/ensure.provider.d.ts.map +1 -1
  161. package/dist/tools/fs.provider.d.ts +1 -1
  162. package/dist/tools/fs.provider.d.ts.map +1 -1
  163. package/dist/tools/metadata.d.ts +1 -1
  164. package/dist/tools/metadata.d.ts.map +1 -1
  165. package/dist/tools/output-schemas.d.ts +27 -135
  166. package/dist/tools/output-schemas.d.ts.map +1 -1
  167. package/dist/tools/process.provider.d.ts +1 -1
  168. package/dist/tools/process.provider.d.ts.map +1 -1
  169. package/dist/tools/registry.d.ts +1 -1
  170. package/dist/tools/registry.d.ts.map +1 -1
  171. package/dist/tools/registry.js +16 -13
  172. package/dist/tools/registry.js.map +1 -1
  173. package/dist/tools/session.provider.d.ts +1 -1
  174. package/dist/tools/session.provider.d.ts.map +1 -1
  175. package/dist/tools/system.provider.d.ts +1 -1
  176. package/dist/tools/system.provider.d.ts.map +1 -1
  177. package/dist/tools/transfer.provider.d.ts +1 -1
  178. package/dist/tools/transfer.provider.d.ts.map +1 -1
  179. package/dist/tools/tunnel.provider.d.ts +1 -1
  180. package/dist/tools/tunnel.provider.d.ts.map +1 -1
  181. package/dist/tools/types.d.ts +1 -1
  182. package/dist/tools/types.d.ts.map +1 -1
  183. package/dist/transfer.js +2 -2
  184. package/dist/transfer.js.map +1 -1
  185. package/dist/types.js +1 -1
  186. package/dist/types.js.map +1 -1
  187. package/docs/adding-a-device.md +39 -17
  188. package/docs/agent-activity-monitor.md +34 -0
  189. package/docs/coolify.md +29 -0
  190. package/docs/development/dependency-management.md +1 -1
  191. package/docs/development/mcp-protocol-2026.md +33 -0
  192. package/docs/doppler-guide.md +34 -0
  193. package/docs/reference/compatibility.md +1 -1
  194. package/docs/security/dependency-audit-exceptions.md +3 -7
  195. package/docs/security/hosted-data-inventory.md +81 -0
  196. package/docs/sonarcloud-analysis.md +9 -0
  197. package/mcp.json +1 -1
  198. package/package.json +26 -21
  199. package/registry/ssh-mcp-pro/mcp.json +1 -1
  200. package/server.json +3 -3
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -28,32 +28,53 @@ token and a chosen capability profile.
28
28
  Start with the least privilege a device needs. You can raise the profile
29
29
  later (see [Changing a policy later](#changing-a-policy-later)).
30
30
 
31
- ## Step 1 — Create an enrollment token (on the control plane side)
31
+ ## Step 1 — Create an enrollment token
32
32
 
33
- Tokens are one-time and short-lived. Pick the profile here.
33
+ ### Option A: From the web dashboard (recommended)
34
34
 
35
- ### Option A: HTTP API
35
+ On a deployed control plane with HTTPS and OAuth configured:
36
+
37
+ 1. Open its HTTPS URL and choose **Sign in with GitHub** or **Sign in with Google**.
38
+ 2. Select **Add Device**, enter the device alias, and choose a capability profile.
39
+ Start with `read-only` unless you need additional permissions.
40
+ 3. Choose **Generate Install Command**. The dashboard creates a short-lived,
41
+ one-time token and displays **Linux**, **Windows**, and **npm** commands.
42
+ 4. Copy the command for the target device and run it there. The Linux and
43
+ Windows installer commands install the agent, enroll it, and configure
44
+ startup; the npm command only enrolls and starts the process in that shell.
45
+
46
+ Treat a generated command as a secret: it contains a one-time enrollment
47
+ token. Do not share it in tickets, logs, chat messages, or screenshots. If
48
+ the token expires, generate a new one in the dashboard.
49
+
50
+ ### Option B: From the HTTP API (automation)
51
+
52
+ For an OAuth access token carrying the `agents:admin` scope:
36
53
 
37
54
  ```bash
38
55
  curl -sS -X POST "https://your-control-plane.example.com/api/agents/enrollment-tokens" \
39
56
  -H "Authorization: Bearer <admin-access-token>" \
40
57
  -H "Content-Type: application/json" \
41
- -d '{"alias":"office-pc","requested_profile":"operations"}'
58
+ -d '{"alias":"office-pc","requested_profile":"read-only"}'
42
59
  ```
43
60
 
44
- The response includes a one-time `enrollment_token` and a ready-to-paste
45
- install command. The calling identity must have the `agents:admin` scope.
61
+ The response includes `enrollment_token` and `commands.npm` / `commands.run`.
62
+ The npm commands do not install a background service. To install and
63
+ register a persistent service, use the platform installer in Step 2 with
64
+ that one-time token.
46
65
 
47
- ### Option B: From ChatGPT
66
+ ### Option C: From an authenticated MCP client
48
67
 
49
- If your connector has the `agents:admin` scope, ask it to call the
50
- `create_enrollment_token` tool with the alias and requested profile. It
51
- returns the same token and install command.
68
+ If your authenticated connector has the `agents:admin` scope, call
69
+ `create_enrollment_token` with an alias and requested profile. Use the
70
+ returned token with the installer in Step 2 or the returned npm commands.
52
71
 
53
72
  ## Step 2 — Run the bootstrap on the new device
54
73
 
55
- The bootstrap installs the package, enrolls the machine, and registers a
56
- service so the agent reconnects on boot. It needs Node 22.22+ or 24+.
74
+ The Linux/Windows bootstrap installs the package, enrolls the machine, and
75
+ registers startup so the agent reconnects after restarts. It needs Node
76
+ 22.22+ or 24+. The dashboard-generated command is the shortest path; the
77
+ manual commands below are alternatives if you already have a one-time token.
57
78
 
58
79
  ### Linux / WSL
59
80
 
@@ -88,9 +109,10 @@ On the device:
88
109
  ssh-mcp-pro-agent status
89
110
  ```
90
111
 
91
- It prints the agent id, alias, server, and active profile. On the control
92
- plane side the agent shows up as `online` in the fleet list, and the audit
93
- log records `enrollment_token_created` and `agent_connected`.
112
+ It prints the agent id, alias, server, and active profile. This checks local
113
+ enrollment, **not** live connectivity. In the dashboard, open **Enrolled
114
+ Devices** and verify the device reports **Live Online**. The audit log
115
+ should contain `enrollment_token_created` and `agent_connected`.
94
116
 
95
117
  ## Changing a policy later
96
118
 
@@ -123,5 +145,5 @@ restart is required.
123
145
  Windows) and that the device can reach the control plane URL over HTTPS.
124
146
  - **Enrollment fails with an expired token**: tokens are single-use and
125
147
  short-lived. Create a fresh one and retry.
126
- - **WebSocket error on start**: the runtime is too old. Install Node 22.22+
127
- or 24+.
148
+ - **WebSocket error on start**: confirm Node 22.22+ or 24+, DNS/TLS
149
+ connectivity to the configured server, and that the agent has not been revoked.
@@ -0,0 +1,34 @@
1
+ # Outbound Agent Activity Monitor
2
+
3
+ The outbound agent streams timestamped events to its terminal and a **local, rotating diagnostic log**. This is useful when a Windows Scheduled Task displays a connection window, when a service restarts, or when an agent fails to authenticate. The agent does not need to expose a new HTTP API for this.
4
+
5
+ ## Live monitor
6
+
7
+ Open a separate PowerShell 7 (Windows) or terminal (Linux/macOS) under the **same operating-system account** as the installed agent:
8
+
9
+ ```shell
10
+ ssh-mcp-pro-agent logs --follow
11
+ ```
12
+
13
+ To display the most recent events without remaining attached:
14
+
15
+ ```shell
16
+ ssh-mcp-pro-agent logs --tail 80
17
+ ssh-mcp-pro-agent status
18
+ ```
19
+
20
+ During `ssh-mcp-pro-agent run`, the console also displays a compact connection panel and continuously appends activity. The **transport-open** event means the WebSocket opened, while **agent-ready** appears only after the control plane acknowledges the agent identity. Policy updates, request start/completion, rejected or expired requests, connection errors and disconnects have distinct INFO / OK / WARN / ERROR labels.
21
+
22
+ ## Log storage and privacy
23
+
24
+ - Windows: `%USERPROFILE%\.sshautomator\logs\agent-activity.jsonl` for the Scheduled Task's user.
25
+ - Linux/macOS: `~/.sshautomator/logs/agent-activity.jsonl` for the systemd or launchd user.
26
+ - Log files rotate at 512 KiB with two older archives (`.1` and `.2`), preventing indefinite growth. On Unix, the log directory and files are created with restrictive permissions.
27
+ - Records contain only timestamps, event types and safe diagnostic descriptions. **No command arguments, command output, SSH passwords, private keys, OAuth access tokens, enrollment tokens or raw server error messages** are recorded.
28
+ - The viewer reads only this local file. There is no log upload, remote log streaming endpoint or new background service. To troubleshoot a connection, inspect its recent events and the agent supervisor's own logs as needed.
29
+
30
+ ## Windows Scheduled Task
31
+
32
+ The Windows installer registers `ssh-mcp-pro-agent run` as a Scheduled Task for the current account. A Scheduled Task may not open a visible console window on every Windows configuration. Use **a second PowerShell window** with `ssh-mcp-pro-agent logs --follow` for reliable live visibility. If you do not see log files, verify which account owns the Scheduled Task and whether that account has launched a version of the agent that includes the activity monitor.
33
+
34
+ Dashboard host, OS, architecture and policy version are sent by the agent and exposed by the server under the JSON fields `host_metadata` and `policy_version`. The web UI consumes those fields directly rather than expecting camelCase properties.
@@ -0,0 +1,29 @@
1
+ # Coolify deployment
2
+
3
+ Deploy the repository with **Dockerfile** build pack and Dockerfile path `Dockerfile.coolify`.
4
+
5
+ - Domain: `https://ssh-mcp-pro.oaslananka.dev`
6
+ - Container port: `3000` (do not expose the port directly to the internet)
7
+ - Persistent volume: mount a named volume at `/app/data` (SQLite database and signing keys)
8
+ - One replica: SQLite is local and is not a shared multi-instance database
9
+ - Start command: baked into `Dockerfile.coolify` (`node dist/render-http.js`)
10
+
11
+ Configure secrets in Coolify (never commit them): `GITHUB_CLIENT_ID`, `GITHUB_CLIENT_SECRET`, `GOOGLE_CLIENT_ID`, `GOOGLE_CLIENT_SECRET` and the project's other required credentials. Set:
12
+
13
+ ```dotenv
14
+ NODE_ENV=production
15
+ PUBLIC_BASE_URL=https://ssh-mcp-pro.oaslananka.dev
16
+ MCP_RESOURCE_URL=https://ssh-mcp-pro.oaslananka.dev/mcp
17
+ SSH_MCP_REMOTE_AGENT_CONTROL_PLANE=true
18
+ SSH_MCP_HTTP_HOST=0.0.0.0
19
+ SSH_MCP_HTTP_PORT=3000
20
+ DATABASE_URL=file:/app/data/sshautomator.db
21
+ CONTROL_PLANE_SIGNING_KEY_PATH=/app/data/control-plane-ed25519.json
22
+ JWT_SIGNING_KEY_PATH=/app/data/jwt-ed25519.json
23
+ GOOGLE_CALLBACK_URL=https://ssh-mcp-pro.oaslananka.dev/oauth/callback/google
24
+ GITHUB_CALLBACK_URL=https://ssh-mcp-pro.oaslananka.dev/oauth/callback/github
25
+ ```
26
+
27
+ Dashboard login callback URLs additionally use `/auth/callback/google` and `/auth/callback/github`; register both with the relevant OAuth providers. Keep authentication allowlists configured as appropriate. Do not enable anonymous access as a workaround.
28
+
29
+ Before deployment verify local OAuth login, dashboard and MCP flow. After deployment check health, login callbacks, device connectivity, and persistent state across a controlled restart. Do not run the SSH test fixture service in production.
@@ -4,7 +4,7 @@
4
4
 
5
5
  - **[renovate.json](../../renovate.json)** manages the `npm` ecosystem (production and
6
6
  dev dependencies). Patch/minor devDependency updates automerge; the MCP SDK
7
- (`@modelcontextprotocol/sdk`) is explicitly excluded from automerge given how central
7
+ (`@modelcontextprotocol/server`, `@modelcontextprotocol/core`, and related v2 packages) is explicitly excluded from automerge given how central
8
8
  it is; typescript-eslint packages are grouped.
9
9
  - **[.github/dependabot.yml](../../.github/dependabot.yml)** manages the
10
10
  `github-actions` ecosystem only, weekly, capped at 5 open PRs.
@@ -0,0 +1,33 @@
1
+ # MCP protocol compatibility (2026-07-28)
2
+
3
+ This repository uses the official TypeScript v2 MCP SDK. The canonical SSH tool registry and policy checks are shared across the modern and legacy protocol eras; there is no second domain, gateway, or server deployment.
4
+
5
+ ## Supported paths
6
+
7
+ - **stdio**: `serveStdio` negotiates the 2026-07-28 era and preserves the 2025 `initialize` handshake for legacy clients.
8
+ - **Standard `/mcp` HTTP**: the SDK's `createMcpHandler` handles modern per-request traffic. The existing session registry and Node Streamable HTTP transport still handle legacy sessionful traffic, selected using the SDK's `isLegacyRequest` classifier.
9
+ - **Legacy SSE**: the optional `/sse` and `/messages` endpoints use the official `server-legacy` compatibility transport. SSE remains disabled by default; do not remove it without a documented client compatibility decision.
10
+ - **Remote-agent control plane**: when its MCP routing is enabled, the distinct authenticated endpoint now serves the 2026-07-28 protocol through the official `createMcpHandler` and preserves its earlier 2025 `initialize` contract for legacy clients. Every incoming request must pass JWT validation before either era is routed; the per-request modern handler is created only with that principal's capability-filtered tool descriptors. This endpoint never falls back to the standard SSH MCP tool registry or another user's agent inventory. Official SDK clients with `versionNegotiation: { mode: "auto" }` select modern, pinned 2026 clients succeed, and explicitly legacy clients continue to work. See `test/integration/remote-mcp-auth-boundary.integration.test.ts` for real HTTP acceptance.
11
+
12
+ ## Security and operation
13
+
14
+ The existing HTTP router enforces authentication, origin policy, request-size limits, and public-boundary controls before dispatching either protocol era. The remote authorization server also includes the RFC 9207 issuer parameter on authorization-code redirects and advertises issuer-identification support in OAuth metadata. The modern SDK supplies header/body consistency validation, protocol discovery, default private/no-cache hints, and 2026 transport behavior. Do not use user-provided MCP metadata to authorize SSH host access; the existing authenticated identity and host policy remain authoritative.
15
+
16
+ Tool output schemas, structured results and annotations are preserved. New Tasks, Skills, interactive elicitation, and custom cache TTLs are not enabled without a concrete use case; protocol support does not require them.
17
+
18
+ ## Acceptance
19
+
20
+ - `pnpm run check:quality`
21
+ - `pnpm run test:coverage`
22
+ - `pnpm run check:package`
23
+ - `pnpm exec vitest run --project integration test/integration/http-server-boundary.integration.test.ts`
24
+ - `pnpm exec vitest run --project unit test/unit/mcp-v2-transport.test.ts`
25
+ - `pnpm exec vitest run --project integration test/integration/remote-mcp-auth-boundary.integration.test.ts`
26
+
27
+ The standard HTTP boundary tests exercise modern SDK client discovery/tool calls, malformed modern header rejection, existing legacy session lifecycle, bearer/OAuth rejection and opt-in SSE routing. The stdio-era tests exercise both modern and legacy clients against the same tool contract. The remote-agent acceptance test separately covers JWT-scoped modern discovery and calls, a pinned 2026 client, explicit legacy initialization, forged version headers, unauthenticated rejection and cross-tenant tool isolation.
28
+
29
+ Official migration references:
30
+
31
+ - https://ts.sdk.modelcontextprotocol.io/v2/migration/upgrade-to-v2
32
+ - https://ts.sdk.modelcontextprotocol.io/v2/migration/support-2026-07-28
33
+ - https://modelcontextprotocol.io/specification/2026-07-28
@@ -0,0 +1,34 @@
1
+ # Doppler secrets for hosted SSH MCP Pro
2
+
3
+ Hosted deployments use **Coolify's native Doppler secret-manager integration**. The app must not require a Doppler CLI process, an extra credential in the container, or a GitHub Actions `DOPPLER_TOKEN` merely to start.
4
+
5
+ ## Configure once
6
+
7
+ 1. In Coolify, open **Keys & Tokens → Integration Tokens** and configure a Doppler token with access only to the intended project/config. Prefer a service token scoped to one environment.
8
+ 2. Open the SSH MCP Pro application and select **Environment Variables → Secret manager**. Attach the existing Doppler integration token. If the token does not already fix a project and config, enter the correct project and config.
9
+ 3. Add the following runtime environment variable **references** in Coolify. The values are placeholders resolved by Coolify at deployment; the provider secrets themselves must not be copied into GitHub or the image.
10
+
11
+ ```dotenv
12
+ GITHUB_CLIENT_ID={{vault.GITHUB_CLIENT_ID}}
13
+ GITHUB_CLIENT_SECRET={{vault.GITHUB_CLIENT_SECRET}}
14
+ GOOGLE_CLIENT_ID={{vault.GOOGLE_CLIENT_ID}}
15
+ GOOGLE_CLIENT_SECRET={{vault.GOOGLE_CLIENT_SECRET}}
16
+ ```
17
+
18
+ 4. Keep non-secret settings such as `PUBLIC_BASE_URL`, `MCP_RESOURCE_URL`, callback URLs and port configuration as normal Coolify environment variables. For the SQLite single-instance deployment, use `DATABASE_URL=file:/app/data/sshautomator.db` and persist **/app/data** for the database and both signing-key files.
19
+ 5. Keep `AUTH_ALLOW_ALL_USERS=false` until real multi-user isolation and OAuth acceptance tests pass. Configure account allowlists intentionally, without embedding personal accounts in public documentation.
20
+
21
+ Coolify resolves `{{vault.KEY}}` references at startup or deployment and does not store the resolved provider values in its application configuration. A missing provider key should block deployment instead of falling back to an anonymous or insecure mode.
22
+
23
+ ## Operations
24
+
25
+ - Rotate or update values in Doppler, then restart the application for runtime-only secrets or redeploy when build-time values changed.
26
+ - Verify both GitHub and Google callback routes, OAuth issuer/audience/nonce validation, authorization decisions and device enrollment before public launch.
27
+ - Protect the persistent SQLite data and signing keys with an independently recoverable backup. Keep only the production replica and a verified rollback image.
28
+ - Never expose a Doppler service token, Google/GitHub client secret, access token, callback code, or full environment dump in logs or issue reports.
29
+
30
+ ## Local development
31
+
32
+ Local work can use the existing `doppler run -- pnpm run start:http` workflow, or a local non-committed `.env` file. The local bootstrap script is optional and does not modify the Coolify integration.
33
+
34
+ See [Coolify deployment](coolify.md) for build and data paths and [Coolify's secret-manager documentation](https://coolify.io/docs/integrations/security/using-secret-managers) for the current integration UI.
@@ -13,7 +13,7 @@ LTS line). This is expected, not an oversight.
13
13
 
14
14
  ## Package manager
15
15
 
16
- pnpm `11.28.5`, enforced via `packageManager` in `package.json` and `engine-strict=true`.
16
+ pnpm `11.28.9`, enforced via `packageManager` in `package.json` and `engine-strict=true`.
17
17
  npm/yarn are not supported installation paths for *developing* this repo (consumers
18
18
  installing the published package via npm/npx are unaffected — see
19
19
  [README.md#installation](../../README.md#installation)).
@@ -4,12 +4,8 @@ Dependency audit exceptions are a last resort. They must be scoped to a specific
4
4
 
5
5
  The canonical workspace, Docker image, and release lockfile must remain free of known moderate-or-higher advisories. `pnpm run audit:packed` separately installs the generated npm tarball as an external consumer and rejects every advisory that is not listed in the exception file. It also rejects expired or stale exceptions.
6
6
 
7
- ## Active exception
7
+ ## Active exceptions
8
8
 
9
- | Advisory | Package path | Scope | Reachability assessment | Owner | Expires |
10
- | --- | --- | --- | --- | --- | --- |
11
- | `GHSA-frvp-7c67-39w9` | `ssh-mcp-pro > @modelcontextprotocol/sdk > @hono/node-server` | Published npm consumer graph | The affected `serve-static` implementation is not imported or invoked by ssh-mcp-pro. HTTP entrypoints use the project's own Node HTTP implementation. | `@oaslananka` | 2026-08-23 |
9
+ **None as of 2026-11-02.** The v2 MCP SDK package migration replaces the legacy v1 SDK graph. The published-consumer audit reports zero accepted time-bounded exceptions; the machine-readable list is empty.
12
10
 
13
- The latest `@modelcontextprotocol/sdk` release still constrains `@hono/node-server` to the vulnerable 1.x major. Local, CI, and container installs use the patched 2.x major through the root workspace override. npm consumers do not inherit dependency-package overrides, so the exception remains visible only for the independently installed tarball.
14
-
15
- Remove the exception immediately when the MCP SDK accepts `@hono/node-server >=2.0.5`, or before introducing any use of the Hono Node adapter or `serve-static`.
11
+ The historical `GHSA-frvp-7c67-39w9` exception for the old v1 SDK's transitive `@hono/node-server` chain is no longer active. The v2 Node adapter resolves the patched `@hono/node-server` 2.x dependency. Future exceptions require an explicit evidence-based review and a machine-readable expiry, not an informal ignore rule.
@@ -0,0 +1,81 @@
1
+ # Hosted remote-agent data inventory
2
+
3
+ **Engineering evidence only — not a privacy notice or terms of service.**
4
+ This document describes the repository's remote control-plane source
5
+ on 2026-11-04, **not necessarily the version deployed in production**.
6
+ It does not claim legal compliance or promise any retention period.
7
+
8
+ ## Data handled in the remote control plane
9
+
10
+ | Category | Recorded data | Implementation evidence |
11
+ | --- | --- | --- |
12
+ | Account identity | GitHub ID/login/name or Google ID/email/name when configured | SQLite `users` in [remote store](../../src/remote/store.ts) |
13
+ | Dashboard sessions | Random browser session token, a stored token hash, user ID and expiry | `dashboard_sessions` in [remote store](../../src/remote/store.ts) and [dashboard](../../src/remote/web-dashboard.ts) |
14
+ | OAuth clients/codes | Client identity, redirect URIs, scopes and hashed authorization codes with expiry and use status | `oauth_clients` and `oauth_authorization_codes` in [remote store](../../src/remote/store.ts) |
15
+ | Devices | Alias, public key, policy, status, host metadata and last seen | `agents` in [remote store](../../src/remote/store.ts) |
16
+ | Enrollment | Hashed one-time tokens with expiration and use status | `agent_enrollment_tokens` in [remote store](../../src/remote/store.ts) |
17
+ | Remote actions | Tool and capability, **arguments**, status, deadline, **result**, and error details | `actions` in [remote store](../../src/remote/store.ts) |
18
+ | Security events | Event type/severity/time, optional user/device/action IDs and metadata | `audit_events` in [remote store](../../src/remote/store.ts) |
19
+ | Local agent credentials | Agent private key, server URL, device ID and execution policy | Local file described in [agent CLI](../../src/remote/agent-cli.ts) |
20
+
21
+ Remote actions can return stdout, stderr, file output and host logs.
22
+ The [executor](../../src/remote/agent-executor.ts) bounds output sizes,
23
+ but bounded size is **not** automatic secret redaction. Arguments and
24
+ results can contain sensitive host information and are persisted as JSON
25
+ in the action table.
26
+
27
+ ## Expiration and erasure: observed behavior
28
+
29
+ - Dashboard cookies and session records are valid for 24 hours. Logout
30
+ deletes the current session, while periodic maintenance also deletes
31
+ session rows whose expiration time has passed.
32
+ - OAuth authorization codes and device enrollment tokens expire logically
33
+ and can be used only once. The existing minute maintenance tick also
34
+ removes physically expired code/token rows. Non-expired rows are retained
35
+ even if already used.
36
+ - The periodic cleanup also clears in-memory OAuth and connection state.
37
+ It does **not** impose automatic retention/deletion on users, OAuth
38
+ clients, devices, action history, audit events or infrastructure logs.
39
+ - Dashboard **Remove device** revokes/disconnects that device, then deletes
40
+ the device row, associated enrollment token records and its action rows.
41
+ **Audit events remain** for security review. **Revoke** by itself
42
+ changes device status and is not the same as Remove device.
43
+ - No account-level export/erasure workflow, audit-erasure workflow, or
44
+ global retention/deletion job for users, clients, actions and audit
45
+ events was found in the inspected remote routes and store.
46
+
47
+ Source: [dashboard](../../src/remote/web-dashboard.ts),
48
+ [store](../../src/remote/store.ts),
49
+ [OAuth handler](../../src/remote/oauth-handler.ts),
50
+ [control plane](../../src/remote/control-plane.ts).
51
+
52
+ ## Deployment and third-party boundaries
53
+
54
+ The documented [Coolify deployment](../coolify.md) uses one SQLite
55
+ replica and a persistent `/app/data` volume for the database and
56
+ signing keys. Redeploying the application does not itself remove the
57
+ volume. OAuth login involves GitHub or Google depending on configuration.
58
+ Infrastructure access logs, provider-side logs, external processing,
59
+ hosting jurisdiction and infrastructure-level backups **cannot be
60
+ inferred from the repository's database schema**.
61
+
62
+ ## Verify before drafting a user-facing privacy notice and terms
63
+
64
+ 1. Confirm operator identity, responsible contact and intended account scope.
65
+ 2. Verify actual hosting region, infrastructure/OAuth processors, logs and
66
+ their configured retention; do not purchase new services to do so.
67
+ 3. Decide accurate retention and deletion behavior for identities, sessions,
68
+ authorization records, command args/results and audit events. Explain
69
+ the surviving audit trail after Remove device.
70
+ 4. Define an actionable access/correction/deletion request process before
71
+ promising rights, methods or timelines.
72
+ 5. Verify agent/SSH-host data transfer, user responsibilities and any
73
+ external storage or telemetry not visible in these source files.
74
+ 6. Publish **separate**, reviewed HTTPS privacy and terms documents.
75
+ `SECURITY.md` concerns vulnerability reports; the MIT `LICENSE`
76
+ concerns source licensing. Neither is a substitute.
77
+
78
+ ChatGPT, Claude and Gemini application metadata must remain
79
+ `publishReady: false` until these and the other launch conditions
80
+ are genuinely complete. This inventory is engineering
81
+ evidence, **not** a published privacy policy.
@@ -0,0 +1,9 @@
1
+ # SonarQube Cloud analysis
2
+
3
+ This repository uses **SonarQube Cloud Automatic Analysis** for GitHub pull requests and the default branch. SonarScanner must not run in GitHub Actions while automatic analysis is enabled; the two methods conflict.
4
+
5
+ The GitHub CI workflow runs Node 24 and 26 test/coverage gates and uploads LCOV coverage artifacts. Vitest enforces local coverage thresholds independently of SonarQube Cloud. SonarQube Cloud automatic analysis **cannot import LCOV coverage**: its quality gate must not be interpreted as measuring this repository's test coverage. The project coverage minimum remains enforced in CI.
6
+
7
+ Do not add `SONAR_TOKEN`, another Doppler credential-fetch step, or `sonarqube-scan-action` to this workflow for automatic analysis. To migrate back to CI analysis, first explicitly switch off Automatic Analysis in SonarQube Cloud, then implement a single authenticated scanner pipeline and restore LCOV import.
8
+
9
+ Security and maintainability findings, especially new-code duplication, remain enforced by SonarQube Cloud's independent GitHub PR check. Do not weaken duplication thresholds or bypass repository rules to make CI green.
package/mcp.json CHANGED
@@ -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.0",
6
6
  "author": "Osman Aslan",
7
7
  "license": "MIT",
8
8
  "runtime": "node",
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.0",
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.9"
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.0",
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.0",
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.0",
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.0",
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.0",
26
26
  "runtimeHint": "npx",
27
27
  "transport": {
28
28
  "type": "streamable-http",