MCP SSH Server: 37 tools for remote SSH management | Claude Code & OpenAI Codex | DevOps automation, backups, database operations, health monitoring
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · http
verified
reported
listed in the official MCP registry counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 663bb88 · analyzer v33 · 2d ago
skills & prompt files 1
- agent-rules bvisible-mcp-ssh-manager-663bb88/CLAUDE.md
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 70
filesystem 29
- fs bvisible-mcp-ssh-manager-663bb88/cli/ssh-manager.js :13
import { existsSync } from 'node:fs'; - fs (weak) bvisible-mcp-ssh-manager-663bb88/debug/test-e2e-policy.js :42
import fs from 'fs'; - fs bvisible-mcp-ssh-manager-663bb88/src/audit.js :13
import fs from 'fs'; - fs bvisible-mcp-ssh-manager-663bb88/src/command-aliases.js :6
import fs from 'fs'; - fs bvisible-mcp-ssh-manager-663bb88/src/config-loader.js :3
import fs from 'fs'; - fs bvisible-mcp-ssh-manager-663bb88/src/hooks-system.js :6
import fs from 'fs'; - fs bvisible-mcp-ssh-manager-663bb88/src/index.js :8
import fs from 'fs'; - fs bvisible-mcp-ssh-manager-663bb88/src/logger.js :6
import fs from 'fs'; - fs bvisible-mcp-ssh-manager-663bb88/src/profile-loader.js :6
import fs from 'fs'; - fs bvisible-mcp-ssh-manager-663bb88/src/server-aliases.js :1
import fs from 'fs'; - fs bvisible-mcp-ssh-manager-663bb88/src/server-config-manager.js :1
import fs from 'fs'; - fs bvisible-mcp-ssh-manager-663bb88/src/server-groups.js :6
import fs from 'fs';
show 17 more
- fs bvisible-mcp-ssh-manager-663bb88/src/ssh-key-manager.js :2
import fs from 'fs'; - fs bvisible-mcp-ssh-manager-663bb88/src/ssh-manager.js :2
import fs from 'fs'; - fs bvisible-mcp-ssh-manager-663bb88/src/tool-config-manager.js :8
import fs from 'fs'; - fs (weak) bvisible-mcp-ssh-manager-663bb88/tests/test-backup-monitor-injection.js :20
import fs from 'fs'; - fs (weak) bvisible-mcp-ssh-manager-663bb88/tests/test-command-aliases.js :16
import fs from 'fs'; - fs (weak) bvisible-mcp-ssh-manager-663bb88/tests/test-config-field-names.js :9
import fs from 'fs'; - fs (weak) bvisible-mcp-ssh-manager-663bb88/tests/test-database-injection.js :17
import fs from 'fs'; - fs (weak) bvisible-mcp-ssh-manager-663bb88/tests/test-hooks.js :17
import fs from 'fs'; - fs (weak) bvisible-mcp-ssh-manager-663bb88/tests/test-lifecycle.js :9
import fs from 'fs'; - fs (weak) bvisible-mcp-ssh-manager-663bb88/tests/test-lockfile.js :18
import fs from 'fs'; - fs (weak) bvisible-mcp-ssh-manager-663bb88/tests/test-logger-redaction.js :12
import fs from 'fs'; - fs (weak) bvisible-mcp-ssh-manager-663bb88/tests/test-policy.js :12
import fs from 'fs'; - fs (weak) bvisible-mcp-ssh-manager-663bb88/tests/test-profiles.js :14
import fs from 'fs'; - fs (weak) bvisible-mcp-ssh-manager-663bb88/tests/test-rsync-path.js :15
import fs from 'node:fs'; - fs (weak) bvisible-mcp-ssh-manager-663bb88/tests/test-server-config-manager.js :2
import fs from 'fs'; - fs (weak) bvisible-mcp-ssh-manager-663bb88/tests/test-server-groups.js :13
import fs from 'fs'; - fs (weak) bvisible-mcp-ssh-manager-663bb88/tests/test-sudo-stdin.js :13
import fs from 'fs';
shell / exec 11
- shell bvisible-mcp-ssh-manager-663bb88/cli/ssh-manager.js :12
import { spawnSync } from 'node:child_process'; - shell (weak) bvisible-mcp-ssh-manager-663bb88/debug/test-mcp.js :4
import { spawn } from 'child_process'; - shell (weak) bvisible-mcp-ssh-manager-663bb88/debug/test-ssh-command.js :4
import { spawn } from 'child_process'; - shell bvisible-mcp-ssh-manager-663bb88/src/hooks-system.js :8
import { exec } from 'child_process'; - shell bvisible-mcp-ssh-manager-663bb88/src/index.js :468
const { spawn } = await import('child_process'); - shell bvisible-mcp-ssh-manager-663bb88/src/ssh-key-manager.js :1
import { execSync, spawn } from 'child_process'; - shell (weak) bvisible-mcp-ssh-manager-663bb88/tests/test-backup-monitor-injection.js :19
import { execSync } from 'child_process'; - shell (weak) bvisible-mcp-ssh-manager-663bb88/tests/test-database-injection.js :16
import { execSync } from 'child_process'; - shell (weak) bvisible-mcp-ssh-manager-663bb88/tests/test-lifecycle.js :8
import { spawn } from 'child_process'; - shell (weak) bvisible-mcp-ssh-manager-663bb88/tests/test-lockfile.js :20
import { execFileSync } from 'child_process'; - shell (weak) bvisible-mcp-ssh-manager-663bb88/tests/test-sudo-stdin.js :50
exec(cmd, cb) {
network 2
- net bvisible-mcp-ssh-manager-663bb88/src/tunnel-manager.js :7
import net from 'net'; - net (weak) bvisible-mcp-ssh-manager-663bb88/tests/test-tunnel-listen.js :14
import net from 'net';
secrets 1
- secrets (weak) bvisible-mcp-ssh-manager-663bb88/debug/test-e2e-policy.js :59
const PASSWORD = process.env.SSH_E2E_PASSWORD;
declared dependencies 9
- @modelcontextprotocol/sdk@^1.30.0
- @iarna/toml@^2.2.5
- dotenv@^16.4.5
- ssh2@^1.17.0
- zod@^4.4.3
- eslint@^8.56.0
- knip@^5.0.0
- prettier@^3.2.4
- typescript@^6.0.3