{"_id":"mcp-ssh-manager","_rev":"35-1127d685836c1bc4424fb47c2d746183","name":"mcp-ssh-manager","dist-tags":{"latest":"4.0.2"},"versions":{"3.0.0":{"name":"mcp-ssh-manager","version":"3.0.0","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.0.0","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"dist":{"shasum":"406b263a7b07cfe51a31f564a50b3d50417304ea","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.0.0.tgz","fileCount":56,"integrity":"sha512-XrrlG0EIdP9dcjIDELibODbc97dFiHPemDvKK/pKGElLj5tGv3lkujX0slzmCecp2llgtntoNoRZC6IeMXHPTA==","signatures":[{"sig":"MEUCIBYbAjAcOSiNbJVcC+eq6sB7Jt/uG6D4ZG0jMbPQKWWnAiEA04fp7ux6cn0fkRIQ6VtXZZwCBuB1E+k4K/JxkxbQCUc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":474051},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"9e49cabe7ae6ae83d1c45cda4faf14eb972b64b7","scripts":{"lint":"eslint src/*.js","test":"npm run test:profiles && npm run test:aliases && npm run test:hooks","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:hooks":"node tests/test-hooks.js","test:aliases":"node tests/test-command-aliases.js","test:profiles":"node tests/test-profiles.js","test-connection":"python tools/test-connection.py"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"deprecated":"Please upgrade to v3.5.0+ — adds opt-in per-server security modes (readonly / restricted) and audit log. See https://github.com/bvisible/mcp-ssh-manager/blob/main/CHANGELOG.md#350","repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"11.5.2","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation","directories":{},"_nodeVersion":"20.17.0","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","uuid":"^11.1.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.17.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","prettier":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.0.0_1759833332136_0.8508847121569778","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"mcp-ssh-manager","version":"3.1.0","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.1.0","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"dist":{"shasum":"dcdc5cca7ba4035c6aa6410918d1ea175887971d","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.1.0.tgz","fileCount":60,"integrity":"sha512-be7BkUDT2YQDW4uv5ur81I0i/0gWz2cJKWlRvyTvEW6cUMvwEKJS9rqM787oT7BAWz2MakQHxUYAqEMZoOmdKg==","signatures":[{"sig":"MEUCIHggtcUKpqR2jL6H2Iow1RTQsxfwgpQUbWme7qbaouRnAiEA/sRtVrpYiTLGVZZHBo7RomKT6chAztd2RVaOjIW0P0Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":533582},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"1f7716e011c58cfca2db2b37c712dea25a369090","scripts":{"lint":"eslint src/*.js","test":"npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:aliases":"node tests/test-command-aliases.js","test:profiles":"node tests/test-profiles.js","test-connection":"python tools/test-connection.py"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"deprecated":"Please upgrade to v3.5.0+ — adds opt-in per-server security modes (readonly / restricted) and audit log. See https://github.com/bvisible/mcp-ssh-manager/blob/main/CHANGELOG.md#350","repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"20.19.0","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","uuid":"^11.1.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.17.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","prettier":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.1.0_1763205867709_0.32054250857213584","host":"s3://npm-registry-packages-npm-production"}},"3.1.2":{"name":"mcp-ssh-manager","version":"3.1.2","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.1.2","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"dist":{"shasum":"c0271ff20ec58c2454f3511aac836c1702c05bad","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.1.2.tgz","fileCount":64,"integrity":"sha512-1S3diAqKmrQnq6RztjxtaGgoiiJfy3S4Wi9V64lXW21T11cDNTzMAhiYT3Cauuyrg8t9PTsktsU/VHQkZqdyWg==","signatures":[{"sig":"MEUCIEvqVJDSyRYkU0NII509rOIJeHgodoqSbrU0hGFRZ0ijAiEAhdCSbyDHOBVDjNhDQf++a5/orfXhYbAgvuyZmrtSEbk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":555326},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"a8f730d59fce2fea9eac6145977c3e9f3c1d5c36","scripts":{"lint":"eslint src/*.js","test":"npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:aliases":"node tests/test-command-aliases.js","test:profiles":"node tests/test-profiles.js","test-connection":"python tools/test-connection.py"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"deprecated":"Please upgrade to v3.5.0+ — adds opt-in per-server security modes (readonly / restricted) and audit log. See https://github.com/bvisible/mcp-ssh-manager/blob/main/CHANGELOG.md#350","repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","uuid":"^11.1.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.17.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","prettier":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.1.2_1770640473650_0.12525119836454013","host":"s3://npm-registry-packages-npm-production"}},"3.1.3":{"name":"mcp-ssh-manager","version":"3.1.3","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.1.3","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"dist":{"shasum":"9a9e75c13679c617bfe2aef0b1c73ba2da29c2bd","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.1.3.tgz","fileCount":64,"integrity":"sha512-OinREYvMuj5ak5YHDJYty3YLB61ZfvGtR2NvMFhUHCx43c6ORp6xFyfiSEF/fQXOb0fVIWlBDRhg3SNOp5wyxA==","signatures":[{"sig":"MEUCIQDZN304xrWmdsypozQyjHxieYWpotyCxwjf1G3j/l5YkwIgd9lUzmMWHKTloo/hI8ZPz4g1ouTv2FOoqK0XCV6C1vo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":555658},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"224a252513980096fc4fd4a6ea4390b436263a9f","scripts":{"lint":"eslint src/*.js","test":"npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:aliases":"node tests/test-command-aliases.js","test:profiles":"node tests/test-profiles.js","test-connection":"python tools/test-connection.py"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"deprecated":"Please upgrade to v3.5.0+ — adds opt-in per-server security modes (readonly / restricted) and audit log. See https://github.com/bvisible/mcp-ssh-manager/blob/main/CHANGELOG.md#350","repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","uuid":"^11.1.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.17.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","prettier":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.1.3_1771180832311_0.30766246761672544","host":"s3://npm-registry-packages-npm-production"}},"3.1.4":{"name":"mcp-ssh-manager","version":"3.1.4","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.1.4","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"dist":{"shasum":"c0278f31c9084a053fb8086139218dcfba3d7b82","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.1.4.tgz","fileCount":64,"integrity":"sha512-XoqS8PzSJaGBeQJCFzEox+OH+m4HVon+2Pdb4En2OBaRx29LfVHxCd7g3GHC9Hvp9uoD3Ec+U+AhNId4isvKUQ==","signatures":[{"sig":"MEQCIHxE8U1cTx0LIw/qnJvooysWRJtLG9bXSlwnmuNpDessAiAyttXgRXeR3V1q3DvX7CbmU+tPrr+Q9M0l/e6V5CSSHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":556917},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"ca51fd9b9827994f7922e8932e9833f784afbb54","scripts":{"lint":"eslint src/*.js","test":"npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:aliases":"node tests/test-command-aliases.js","test:profiles":"node tests/test-profiles.js","test-connection":"python tools/test-connection.py"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"deprecated":"Please upgrade to v3.5.0+ — adds opt-in per-server security modes (readonly / restricted) and audit log. See https://github.com/bvisible/mcp-ssh-manager/blob/main/CHANGELOG.md#350","repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","uuid":"^11.1.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.17.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","prettier":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.1.4_1771758221350_0.10831115484502218","host":"s3://npm-registry-packages-npm-production"}},"3.1.5":{"name":"mcp-ssh-manager","version":"3.1.5","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.1.5","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"dist":{"shasum":"401a9b1c059b27e5f248172cc919ff5d0bbf8828","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.1.5.tgz","fileCount":64,"integrity":"sha512-mMRpRFMB7bjWBmtA3aTCAI8yW72OuGm42n7Junc34h5FpeXxVwS10N0nSbcqwiTZj/Hcq2n6kz/Bw6+twG/LPw==","signatures":[{"sig":"MEUCIEobLOT3pMc5A7ZHTH1ZIymq0Nc5uyrqPE90LceKZFSUAiEA5vmwNCPecY3pBjRn/0EaW4X1zcRUrd77AbYzsd0Wysw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":560845},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"7b6899f4c890e433ca5043ba35223732f363a8eb","scripts":{"lint":"eslint src/*.js","test":"npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:aliases":"node tests/test-command-aliases.js","test:profiles":"node tests/test-profiles.js","test-connection":"python tools/test-connection.py"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"deprecated":"Please upgrade to v3.5.0+ — adds opt-in per-server security modes (readonly / restricted) and audit log. See https://github.com/bvisible/mcp-ssh-manager/blob/main/CHANGELOG.md#350","repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","uuid":"^11.1.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.17.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","prettier":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.1.5_1772708247406_0.34224951673222637","host":"s3://npm-registry-packages-npm-production"}},"3.2.0":{"name":"mcp-ssh-manager","version":"3.2.0","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.2.0","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"fe250b229435e2df4f8df90ff23fbd5417b2720a","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.2.0.tgz","fileCount":63,"integrity":"sha512-GntrYsuZSxzh3A0xY+ReniiRCvObDCYTDprRSmLxTeQhFCEJ0FIrzrNEL7rVc69RemL5FDtuPF+Hrlfl0OtEEA==","signatures":[{"sig":"MEUCIBmGs9yOZGHel8wQAyQ1VNXLvI0QelsvYoWIr47jyOVDAiEAsFHvaS0II7uAit5SM+EqGEIVP6YeHP2SGY5+YaE+aCU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":565595},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"91026af45c08ce222579201eb33ef21b7bd2c2a4","scripts":{"lint":"eslint src/*.js","test":"npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:aliases":"node tests/test-command-aliases.js","test:profiles":"node tests/test-profiles.js","test-connection":"python tools/test-connection.py"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"deprecated":"Please upgrade to v3.5.0+ — adds opt-in per-server security modes (readonly / restricted) and audit log. See https://github.com/bvisible/mcp-ssh-manager/blob/main/CHANGELOG.md#350","repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","uuid":"^11.1.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.17.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","prettier":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.2.0_1773855977649_0.8111120825618428","host":"s3://npm-registry-packages-npm-production"}},"3.2.1":{"name":"mcp-ssh-manager","version":"3.2.1","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.2.1","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"f7b0a719f0607a156ec15e49fdc31a5e96d3a2ff","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.2.1.tgz","fileCount":63,"integrity":"sha512-uIlzvev4AgLJhbd6nWVd7rR7z0tndRhpEU09pxSzfYAjuqoAHTiS/X7RMA7NOZPtQt6QF7xPKADqXquESo7bIg==","signatures":[{"sig":"MEUCIQCiaUokSVC7vm0+yDk3OxOKklUHXDULsYicjXwVR5RTawIgdwzCUzfa1G5/LMR4Uia0mYnbmJSXUcLoTJg+BXKLVyE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":566223},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"0eaa0f23fd3b60e26717df857139aec5a96c2b15","scripts":{"lint":"eslint src/*.js","test":"npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:aliases":"node tests/test-command-aliases.js","test:profiles":"node tests/test-profiles.js","test-connection":"python tools/test-connection.py"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"deprecated":"Please upgrade to v3.5.0+ — adds opt-in per-server security modes (readonly / restricted) and audit log. See https://github.com/bvisible/mcp-ssh-manager/blob/main/CHANGELOG.md#350","repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","uuid":"^11.1.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.17.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","prettier":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.2.1_1775546794718_0.5708119225854318","host":"s3://npm-registry-packages-npm-production"}},"3.2.2":{"name":"mcp-ssh-manager","version":"3.2.2","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.2.2","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"a00da264284d6978f27353a5ee0adb793688a42a","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.2.2.tgz","fileCount":63,"integrity":"sha512-kyFsw8I0RcOEB8K7XCfETCLDwV2tkskpP3+ErdMb8/pPuYPNFjRu5XIpYuUZuw7Wm/tlkX0Zqv7eamg9PgFcYA==","signatures":[{"sig":"MEYCIQD6zAmDtP6/brI6voCoXz/4DbkKal9WgVZHZKlLlUEvrwIhAM1FLoHPzB8FoOjvqcZMmBX2EWYsVXPrlcWSU/H+qdYL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":567344},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"e93ae14ff32717d6da132a128fa5a351b329023b","scripts":{"lint":"eslint src/*.js","test":"npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:aliases":"node tests/test-command-aliases.js","test:profiles":"node tests/test-profiles.js","test-connection":"python tools/test-connection.py"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"deprecated":"Please upgrade to v3.5.0+ — adds opt-in per-server security modes (readonly / restricted) and audit log. See https://github.com/bvisible/mcp-ssh-manager/blob/main/CHANGELOG.md#350","repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","uuid":"^11.1.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.17.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","prettier":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.2.2_1775547178258_0.7842167851507429","host":"s3://npm-registry-packages-npm-production"}},"3.3.0":{"name":"mcp-ssh-manager","version":"3.3.0","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.3.0","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"e488bbc961ba9a7445a9aa325a681528455099ca","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.3.0.tgz","fileCount":64,"integrity":"sha512-s0y7G5GZqiCBbpaiUo0MPVEEqgaYUyC+kBRUDSUM8UJbyZZGLoSo438yYVykb3OK44mPA6CwsnrABIVgLx2bDg==","signatures":[{"sig":"MEUCIQDESw6Mdmmu6Qwv1pdyY4TGUg3YSNX9a3ADcfy2mKifdAIgcWPa7Y4XqVyimGfISZ1HM8ekz8vu/hD3x81hylOclu8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":583439},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"094d78a6201d976b08892d9c7a94c7cd84b72f69","scripts":{"lint":"eslint src/*.js","test":"npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:aliases":"node tests/test-command-aliases.js","test:profiles":"node tests/test-profiles.js","test-connection":"python tools/test-connection.py"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"deprecated":"Please upgrade to v3.5.0+ — adds opt-in per-server security modes (readonly / restricted) and audit log. See https://github.com/bvisible/mcp-ssh-manager/blob/main/CHANGELOG.md#350","repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","uuid":"^11.1.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.17.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","prettier":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.3.0_1777741047017_0.15257104554542367","host":"s3://npm-registry-packages-npm-production"}},"3.4.0":{"name":"mcp-ssh-manager","version":"3.4.0","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.4.0","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"19b3ee1617cd652612ede7910ddedfe1655e1299","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.4.0.tgz","fileCount":65,"integrity":"sha512-pvWPQ9YeEo6XFSlSli2F0asFPwTywecxag1iRHq4mvUijy0B9gn+v5xQKhVriYPiEJZo8Rd83Wo5yCgzVUV6Eg==","signatures":[{"sig":"MEQCIAFdCE9Y9+E8rlNd+qSMT+sDZyMIlDLjnVxBarXOrGK+AiAqbQuzu62jAsk6qMPDdxpm+L/xp9Y6Nd5WvxrCpHKZ/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2151683},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"c85d23322415f91e344d49e914834840c41fcd44","scripts":{"lint":"eslint src/*.js","test":"npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:aliases":"node tests/test-command-aliases.js","test:profiles":"node tests/test-profiles.js","test-connection":"python tools/test-connection.py"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"deprecated":"Please upgrade to v3.5.0+ — adds opt-in per-server security modes (readonly / restricted) and audit log. See https://github.com/bvisible/mcp-ssh-manager/blob/main/CHANGELOG.md#350","repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","uuid":"^11.1.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.17.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","prettier":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.4.0_1778169330885_0.3192060149588838","host":"s3://npm-registry-packages-npm-production"}},"3.4.1":{"name":"mcp-ssh-manager","version":"3.4.1","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.4.1","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"98cf0268b92edc3593178fa16a6f316361b62df7","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.4.1.tgz","fileCount":65,"integrity":"sha512-WipS2+so1rv6BkqihoNaXrppRQ4FVxXu0qmmBwrPiRnaigkkbr03VsD5j1+Nx1EIPLYVZIIeHgCdQz9gYgctmw==","signatures":[{"sig":"MEQCIDHYxbIEhKfMabRNVDOkXn90+MNVU7/AgabbaKp7dSR6AiAi3FPaGFMMfe0FF+Hjt3bYfiqoqjKEUfjigY//6ObOrA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2153999},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"ff2d3a161b928ba56060bf6359a2bed30797c7ca","scripts":{"lint":"eslint src/*.js","test":"npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:aliases":"node tests/test-command-aliases.js","test:profiles":"node tests/test-profiles.js","test-connection":"python tools/test-connection.py"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"deprecated":"Please upgrade to v3.5.0+ — adds opt-in per-server security modes (readonly / restricted) and audit log. See https://github.com/bvisible/mcp-ssh-manager/blob/main/CHANGELOG.md#350","repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","uuid":"^11.1.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.17.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","prettier":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.4.1_1778935178068_0.6456791851950414","host":"s3://npm-registry-packages-npm-production"}},"3.5.0":{"name":"mcp-ssh-manager","version":"3.5.0","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.5.0","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"c2e27b2801b87b374bc775d2a00496b0efce0dd8","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.5.0.tgz","fileCount":68,"integrity":"sha512-zRd2ZVFRt39itNP3StNKTX96lDnVrzWAUEowFQqiLLlIsYaB9gsRWEbRNxAAfo9Zt5Y1PnGS2Xkv9BKdeohRhg==","signatures":[{"sig":"MEUCIQD/83A4+t/A9Bs5LB3VzRjKJK2l3qswHMb7zk0UKjiiIwIgE0pONDmXqdafg5/3KTCaGZQL1N39dl4GecnvKxAJHAQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2190783},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"d31fcf153e96ca02ff9b5aa2a35601ef6d91691c","scripts":{"lint":"eslint src/*.js","test":"npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools && npm run test:policy","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:policy":"node tests/test-policy.js","test:aliases":"node tests/test-command-aliases.js","test:profiles":"node tests/test-profiles.js","test-connection":"python tools/test-connection.py"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","uuid":"^11.1.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.17.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","prettier":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.5.0_1779123359175_0.09403630658320461","host":"s3://npm-registry-packages-npm-production"}},"3.5.1":{"name":"mcp-ssh-manager","version":"3.5.1","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.5.1","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"be2298aba9e475d1ccb2cc19661ed71dc11b412b","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.5.1.tgz","fileCount":68,"integrity":"sha512-LbfCRZN9w7NU3Qg8FVcIbnosQS7/DMElIlGAh6VEnQiLFPrHoiLX2GDkK4osKiqfPGdrzODTqKdGyW0s9y+k9w==","signatures":[{"sig":"MEQCIFRPl+jCfoaWrx5+Fky/RYSvfCQoSCPQsx7mKlTDRmNyAiAzoTl0RApNsg5KP7C+H23mfv7TjSGoTZR5bNMrHF9okw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2195526},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"1f8d80a6660a15b480ae02cd758db4239d761e55","scripts":{"lint":"eslint src/*.js","test":"npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools && npm run test:policy && npm run test:ping","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:ping":"node tests/test-ssh-ping.js","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:policy":"node tests/test-policy.js","test:aliases":"node tests/test-command-aliases.js","test:profiles":"node tests/test-profiles.js","test-connection":"python tools/test-connection.py"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","uuid":"^11.1.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.17.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","prettier":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.5.1_1779828830977_0.1814628874504638","host":"s3://npm-registry-packages-npm-production"}},"3.6.0":{"name":"mcp-ssh-manager","version":"3.6.0","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.6.0","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"739ffea427433c323f9ab271d91add956d4cf2fb","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.6.0.tgz","fileCount":68,"integrity":"sha512-u0iw2HmO1h+/eJISxEDr1i3DgbY+wK9jauyKUR6720HNxxTUvcpO3CfZJ5EH7zL5d0R22q013nZ9HT7fp4NwNQ==","signatures":[{"sig":"MEUCIQC8qVUpvCTTZkECL8iWVe82anWhBRahsDFFQVkeTpty1wIgQToMKlLvecOz2yMMMya9yDSRbcPyz3HTcDEfa9yZths=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2200409},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"0a2ea5d033ab2d5fb390f60eb338a6a1e4f4f23e","scripts":{"lint":"eslint src/*.js","test":"npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools && npm run test:policy && npm run test:ping && npm run test:config && npm run test:lifecycle","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:ping":"node tests/test-ssh-ping.js","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:config":"node tests/test-server-config-manager.js","test:policy":"node tests/test-policy.js","test:aliases":"node tests/test-command-aliases.js","test:profiles":"node tests/test-profiles.js","test:lifecycle":"node tests/test-lifecycle.js","test-connection":"python tools/test-connection.py"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","uuid":"^11.1.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.17.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","prettier":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.6.0_1780995995645_0.14925143295483756","host":"s3://npm-registry-packages-npm-production"}},"3.6.1":{"name":"mcp-ssh-manager","version":"3.6.1","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.6.1","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"b103859cd3b67706f482bd957dc7237052dc4fd0","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.6.1.tgz","fileCount":68,"integrity":"sha512-2WzXOLUwI8R7wdsIMBsocWzX9p9dD1KwhYyJOLZY3Ad427iaoLoWlTwsI2FHC/Rz+r9KapCRIb64pRZ47jrYsQ==","signatures":[{"sig":"MEUCIQCoJHlJo9DWX58+4ms8ndfrCh1F/c01xbOsYfSz9wXzrAIgBU4553G6wvLCdpnpai5Qgdk4ZkJRD+7VV7WmIdz1QsE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2202209},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"209f750d4ee3531106886e47f3d255f19ad91c6e","scripts":{"lint":"eslint src/*.js","test":"npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools && npm run test:policy && npm run test:ping && npm run test:config && npm run test:lifecycle","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:ping":"node tests/test-ssh-ping.js","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:config":"node tests/test-server-config-manager.js","test:policy":"node tests/test-policy.js","test:aliases":"node tests/test-command-aliases.js","test:profiles":"node tests/test-profiles.js","test:lifecycle":"node tests/test-lifecycle.js","test-connection":"python tools/test-connection.py"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","uuid":"^11.1.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.17.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","prettier":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.6.1_1780997164268_0.2036165002772785","host":"s3://npm-registry-packages-npm-production"}},"3.6.2":{"name":"mcp-ssh-manager","version":"3.6.2","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.6.2","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"3e2bc20855bcd55b92f84199b3e0a35b295e0e6c","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.6.2.tgz","fileCount":68,"integrity":"sha512-hKFoxFhfLjQR5fmoCVNP/xCE8PWknNQqXlvGvziy8XgnhKx6x7VjS1momAiEQgeD7U5jBPq2GVtZKJGm4/jxQQ==","signatures":[{"sig":"MEYCIQCNZ9TcT4AGlnHaRbLy+8g8RFTf17+U/w0QqWLqnAjL5AIhAOm1Dfd5R3VqbGJ8uCmS0fpuxmHZ6JPB7HV1FKpxmOHy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2219029},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"333e26f548824a1552ee5a3de9141dd8c2852567","scripts":{"lint":"eslint src/*.js","test":"npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools && npm run test:policy && npm run test:ping && npm run test:config && npm run test:lifecycle","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:ping":"node tests/test-ssh-ping.js","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:config":"node tests/test-server-config-manager.js","test:policy":"node tests/test-policy.js","test:aliases":"node tests/test-command-aliases.js","test:profiles":"node tests/test-profiles.js","test:lifecycle":"node tests/test-lifecycle.js","test-connection":"python tools/test-connection.py"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","uuid":"^11.1.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.17.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","prettier":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.6.2_1780999526803_0.36304373677889057","host":"s3://npm-registry-packages-npm-production"}},"3.6.3":{"name":"mcp-ssh-manager","version":"3.6.3","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.6.3","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"8d744d5220b04f4d28a78e4258f743eb3c268c08","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.6.3.tgz","fileCount":69,"integrity":"sha512-2Tg1BrAjQcWfGWEshcrEahkYj2Js+N5lE+pDMrm72smHT53j5narg9XtJTLsTb8AIE3eBWiolWu/znmY0x85JA==","signatures":[{"sig":"MEYCIQCqHJ5e87ra5epdDsSO078eTjQDOj5aAcUk0NXbBy6niAIhAIwERAVvRZeffYb9mggeezpUJZeDWwyT1OnMxoJj8hVn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2224642},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"8df94e5d7617f9a965e2eda377c6cb57a3525d09","scripts":{"lint":"eslint src/*.js","test":"npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools && npm run test:policy && npm run test:ping && npm run test:config && npm run test:lifecycle && npm run test:sync","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:ping":"node tests/test-ssh-ping.js","test:sync":"node tests/test-sync-stats.js","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:config":"node tests/test-server-config-manager.js","test:policy":"node tests/test-policy.js","test:aliases":"node tests/test-command-aliases.js","test:profiles":"node tests/test-profiles.js","test:lifecycle":"node tests/test-lifecycle.js","test-connection":"python tools/test-connection.py"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","uuid":"^11.1.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.17.2"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^8.56.0","prettier":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.6.3_1781768110089_0.958775689735671","host":"s3://npm-registry-packages-npm-production"}},"3.6.4":{"name":"mcp-ssh-manager","version":"3.6.4","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.6.4","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"1e23c9eeea3412001b408971421a72c3149f2d95","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.6.4.tgz","fileCount":69,"integrity":"sha512-jyhvIWUTUVwbTUCoXNJAEwfIO8n+/yLmbch2RzH9jcA4v97DYZNih0D8BRdVEtCGbi37l8PkaYlYYNIzdDGz/w==","signatures":[{"sig":"MEUCIQCcOug31d+4+Jks2D50ajAt7UX5KfRvDdNJDGB6X+1sNgIga6OZmdZdGeE1/eHM+J9uylTJmsNOfr5fGZQFM4oOwRA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2216748},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"08cb74f3d9e9ffcc98e9d867df9b41dd9bc5724a","scripts":{"lint":"eslint src/*.js","test":"npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools && npm run test:policy && npm run test:ping && npm run test:config && npm run test:lifecycle && npm run test:sync","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:ping":"node tests/test-ssh-ping.js","test:sync":"node tests/test-sync-stats.js","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:config":"node tests/test-server-config-manager.js","test:policy":"node tests/test-policy.js","test:aliases":"node tests/test-command-aliases.js","test:profiles":"node tests/test-profiles.js","test:lifecycle":"node tests/test-lifecycle.js","test-connection":"python tools/test-connection.py"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","uuid":"^11.1.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.17.2"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^5.0.0","eslint":"^8.56.0","prettier":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.6.4_1781782579144_0.9304848680723781","host":"s3://npm-registry-packages-npm-production"}},"3.6.5":{"name":"mcp-ssh-manager","version":"3.6.5","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.6.5","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"070a5b9bbaec25c18d5666f6325410969fda9ed9","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.6.5.tgz","fileCount":69,"integrity":"sha512-dZnQW/HBfDtkR7Eq4UzSsq68rVbEszzXpHhYLFD9oT7995qqfF6NymQJdJJQDeWKISj9TTDcIH/QTXmrvV8HUw==","signatures":[{"sig":"MEUCIQDvBioWQ8OIy5FshVp11pT0vyiCAR5AxU/4V26JXBY4owIgWSSqLopbzJb8TBfXHavTea2KZSMABOR2AfaOhL4Fyew=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2226708},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"3f9a4f1ae662cc9b450d1f7339667bf58e2e4d23","scripts":{"lint":"eslint src/*.js","test":"npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools && npm run test:policy && npm run test:ping && npm run test:config && npm run test:lifecycle && npm run test:sync && npm run test:dbquoting && npm run test:dbrowcount","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:ping":"node tests/test-ssh-ping.js","test:sync":"node tests/test-sync-stats.js","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:config":"node tests/test-server-config-manager.js","test:policy":"node tests/test-policy.js","test:aliases":"node tests/test-command-aliases.js","test:profiles":"node tests/test-profiles.js","test:dbquoting":"node tests/test-database-query-quoting.js","test:lifecycle":"node tests/test-lifecycle.js","test-connection":"python tools/test-connection.py","test:dbrowcount":"node tests/test-database-row-count.js"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","uuid":"^11.1.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.17.2"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^5.0.0","eslint":"^8.56.0","prettier":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.6.5_1782806201555_0.8855197109508202","host":"s3://npm-registry-packages-npm-production"}},"3.6.6":{"name":"mcp-ssh-manager","version":"3.6.6","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.6.6","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"f01ca6396ab73eae39eeabfd24ec0902c06cf59a","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.6.6.tgz","fileCount":71,"integrity":"sha512-bEOQZly25eH73k71joAG+mLZmgOZupzhaMaAA7Jbo1bG8PSpK/xo80bzhvMfap0D9OSsDaW7SdJMaQp+N+0jnA==","signatures":[{"sig":"MEUCIQC27gIwuo5sxF72m8Qz5Ik7VhjmVau/Tuebhj66DnaHrAIgK0z9/SyVHuMbMScRuvJ5HhtMu/qE5yLeXzomXEBfJSs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4447923},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"8328ef47b6b41715176a4b3afdd796ae073efd3e","scripts":{"lint":"eslint src/*.js","test":"npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools && npm run test:policy && npm run test:ping && npm run test:config && npm run test:fieldnames && npm run test:lifecycle && npm run test:sync && npm run test:dbquoting && npm run test:dbrowcount","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:ping":"node tests/test-ssh-ping.js","test:sync":"node tests/test-sync-stats.js","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:config":"node tests/test-server-config-manager.js","test:policy":"node tests/test-policy.js","test:aliases":"node tests/test-command-aliases.js","test:profiles":"node tests/test-profiles.js","test:dbquoting":"node tests/test-database-query-quoting.js","test:lifecycle":"node tests/test-lifecycle.js","test-connection":"python tools/test-connection.py","test:dbrowcount":"node tests/test-database-row-count.js","test:fieldnames":"node tests/test-config-field-names.js"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","uuid":"^11.1.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.17.2"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^5.0.0","eslint":"^8.56.0","prettier":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.6.6_1783802064351_0.9417334043991903","host":"s3://npm-registry-packages-npm-production"}},"3.6.7":{"name":"mcp-ssh-manager","version":"3.6.7","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.6.7","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"2697cb56f241c14291ca6f7c77cea5805be12de5","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.6.7.tgz","fileCount":72,"integrity":"sha512-brLqEfQrsFnClsJeFV9jbi40W/D0tzQd7Smz28JJsRZPNIi0NZatyjYPGQerkFVuyGe33Jj8DSn/+slo+SpM/A==","signatures":[{"sig":"MEYCIQDgtHjk3wElxmuvfMVG00E7gtwc8x1rV2wmQSAhMWdbIQIhAIXLZiYmyoxxNY1vO5/e9/ewTr04eorOnP5Gdsg+Ip4u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4455562},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"82f5e080ea20c39f56a505ad412cc599aac68f7f","scripts":{"lint":"eslint src/*.js","test":"npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools && npm run test:policy && npm run test:ping && npm run test:config && npm run test:fieldnames && npm run test:lifecycle && npm run test:sync && npm run test:dbquoting && npm run test:dbinjection && npm run test:dbrowcount","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:ping":"node tests/test-ssh-ping.js","test:sync":"node tests/test-sync-stats.js","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:config":"node tests/test-server-config-manager.js","test:policy":"node tests/test-policy.js","test:aliases":"node tests/test-command-aliases.js","test:profiles":"node tests/test-profiles.js","test:dbquoting":"node tests/test-database-query-quoting.js","test:lifecycle":"node tests/test-lifecycle.js","test-connection":"python tools/test-connection.py","test:dbrowcount":"node tests/test-database-row-count.js","test:fieldnames":"node tests/test-config-field-names.js","test:dbinjection":"node tests/test-database-injection.js"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","uuid":"^11.1.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.17.2"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^5.0.0","eslint":"^8.56.0","prettier":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.6.7_1783804674766_0.9200557912335019","host":"s3://npm-registry-packages-npm-production"}},"3.7.0":{"name":"mcp-ssh-manager","version":"3.7.0","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.7.0","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"385b77e9f2dab6199aa5d5b5e02220c45be9a800","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.7.0.tgz","fileCount":72,"integrity":"sha512-4OtFejYqMqKfKzEHpJN1QFF4teZyiINBCCtYt7RZ++/kqZTmnJ+6muTflKDvq5+lflgBXzrcIakzK3IxQ/VGWg==","signatures":[{"sig":"MEUCIQCTgnlP/CNs2ALLw4bbw4HA6yYtzVSUM/t461W9VSndiAIgOw3rQ7/x+GiZjPOd4rnw3gjiOfolY5xrdtcR+UxmWCA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4460218},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"0ad818065d52e5a2f8db1120edb894b794e163e0","scripts":{"lint":"eslint src/*.js","test":"npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools && npm run test:policy && npm run test:ping && npm run test:config && npm run test:fieldnames && npm run test:agentforward && npm run test:lifecycle && npm run test:sync && npm run test:dbquoting && npm run test:dbinjection && npm run test:dbrowcount","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:ping":"node tests/test-ssh-ping.js","test:sync":"node tests/test-sync-stats.js","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:config":"node tests/test-server-config-manager.js","test:policy":"node tests/test-policy.js","test:aliases":"node tests/test-command-aliases.js","test:profiles":"node tests/test-profiles.js","test:dbquoting":"node tests/test-database-query-quoting.js","test:lifecycle":"node tests/test-lifecycle.js","test-connection":"python tools/test-connection.py","test:dbrowcount":"node tests/test-database-row-count.js","test:fieldnames":"node tests/test-config-field-names.js","test:dbinjection":"node tests/test-database-injection.js","test:agentforward":"node tests/test-agent-forward.js"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","uuid":"^11.1.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.17.2"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^5.0.0","eslint":"^8.56.0","prettier":"^3.2.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.7.0_1783941612838_0.8683798392096116","host":"s3://npm-registry-packages-npm-production"}},"3.8.0":{"name":"mcp-ssh-manager","version":"3.8.0","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.8.0","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"e06d5332e2c79d14b9fe0ae04e0a0403e20c6d08","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.8.0.tgz","fileCount":74,"integrity":"sha512-+u6mLQ8f02hSrasqdSjhmvxGT0ZyQl9MDTjAz7BykhoHEStdvBj+UbIsDokjQsa9iqO30iLReGxvpF6/k9GQbw==","signatures":[{"sig":"MEUCIDtWXviWqdsh3vqmLy2zbiyrH1xIcM2x4GtlYRUvTy2dAiEAnoWPp9xgwa6JFDjl9NPKNR6Rq5TgQoI/VQ1RbVpCQcQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4493035},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"7f810fb0a77037952a2ea1c72b6d473aeda2d130","scripts":{"lint":"eslint src/*.js","test":"npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools && npm run test:policy && npm run test:ping && npm run test:config && npm run test:fieldnames && npm run test:groups && npm run test:agentforward && npm run test:lifecycle && npm run test:tunnel && npm run test:sync && npm run test:sync-path && npm run test:dbquoting && npm run test:dbinjection && npm run test:dbrowcount","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && npm run typecheck && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:ping":"node tests/test-ssh-ping.js","test:sync":"node tests/test-sync-stats.js","typecheck":"tsc -p tsconfig.json","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:config":"node tests/test-server-config-manager.js","test:groups":"node tests/test-server-groups.js","test:policy":"node tests/test-policy.js","test:tunnel":"node tests/test-tunnel-listen.js","test:aliases":"node tests/test-command-aliases.js","test:profiles":"node tests/test-profiles.js","test:dbquoting":"node tests/test-database-query-quoting.js","test:lifecycle":"node tests/test-lifecycle.js","test:sync-path":"node tests/test-rsync-path.js","test-connection":"python tools/test-connection.py","test:dbrowcount":"node tests/test-database-row-count.js","test:fieldnames":"node tests/test-config-field-names.js","test:dbinjection":"node tests/test-database-injection.js","test:agentforward":"node tests/test-agent-forward.js"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^5.0.0","eslint":"^8.56.0","prettier":"^3.2.4","typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.8.0_1786718797997_0.26151305675476433","host":"s3://npm-registry-packages-npm-production"}},"3.8.1":{"name":"mcp-ssh-manager","version":"3.8.1","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.8.1","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"7d0cf37bed6f4f2be77af6edf3a77d6a687977b1","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.8.1.tgz","fileCount":74,"integrity":"sha512-BR8bzljoinfDZddmhf1uqpbrL8FnDb2KuE6xlgjl86SjVGOF8t6/udsp85gir/lB+5N43iicBpi5R95NW6WfqA==","signatures":[{"sig":"MEYCIQDD2zFbD0bO9k5tTYa8CJ5IBW6NI/Pxm/rhTncE5jODfgIhAJ74R8HNrLEjzcYZ6v7x3R+G0MQaqBQv7LJc8vDTQpkT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4498767},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"ec0f0291d97a80b741a50a55c7c8d58e40b7250a","scripts":{"lint":"eslint src/*.js","test":"npm run test:lockfile && npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools && npm run test:policy && npm run test:ping && npm run test:config && npm run test:fieldnames && npm run test:groups && npm run test:agentforward && npm run test:lifecycle && npm run test:tunnel && npm run test:sync && npm run test:sync-path && npm run test:dbquoting && npm run test:dbinjection && npm run test:dbrowcount","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && npm run typecheck && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:ping":"node tests/test-ssh-ping.js","test:sync":"node tests/test-sync-stats.js","typecheck":"tsc -p tsconfig.json","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:config":"node tests/test-server-config-manager.js","test:groups":"node tests/test-server-groups.js","test:policy":"node tests/test-policy.js","test:tunnel":"node tests/test-tunnel-listen.js","test:aliases":"node tests/test-command-aliases.js","test:lockfile":"node tests/test-lockfile.js","test:profiles":"node tests/test-profiles.js","test:dbquoting":"node tests/test-database-query-quoting.js","test:lifecycle":"node tests/test-lifecycle.js","test:sync-path":"node tests/test-rsync-path.js","test-connection":"python tools/test-connection.py","test:dbrowcount":"node tests/test-database-row-count.js","test:fieldnames":"node tests/test-config-field-names.js","test:dbinjection":"node tests/test-database-injection.js","test:agentforward":"node tests/test-agent-forward.js"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^5.0.0","eslint":"^8.56.0","prettier":"^3.2.4","typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.8.1_1787910736939_0.07227656789940329","host":"s3://npm-registry-packages-npm-production"}},"3.8.2":{"name":"mcp-ssh-manager","version":"3.8.2","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.8.2","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"eb4fc78b9716032ab3b6b7d419f08a3291e6114a","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.8.2.tgz","fileCount":75,"integrity":"sha512-ehTtGYLAG9A/85BCcUDTz+4P8zbAuYjKvHzDJtYChGAPAUEl3wpjNoLq3eb4nrl6EpFRlryCCz05buk+NH+4xw==","signatures":[{"sig":"MEQCIDub5WwZVHt9ATC2zDIxjtiHg4Sc6gdaK3PRhQ2MShj6AiBQW/kL+v62j44o9ryUAaLWZGjm2pqm76SH/+FB2ZrrTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4506486},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"0a1850c611c18f3c7de8fcccc92a71de943a2c75","mcpName":"io.github.bvisible/mcp-ssh-manager","scripts":{"lint":"eslint src/*.js","test":"npm run test:lockfile && npm run test:sudostdin && npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools && npm run test:policy && npm run test:ping && npm run test:config && npm run test:fieldnames && npm run test:groups && npm run test:agentforward && npm run test:lifecycle && npm run test:tunnel && npm run test:sync && npm run test:sync-path && npm run test:dbquoting && npm run test:dbinjection && npm run test:dbrowcount","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && npm run typecheck && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:ping":"node tests/test-ssh-ping.js","test:sync":"node tests/test-sync-stats.js","typecheck":"tsc -p tsconfig.json","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:config":"node tests/test-server-config-manager.js","test:groups":"node tests/test-server-groups.js","test:policy":"node tests/test-policy.js","test:tunnel":"node tests/test-tunnel-listen.js","test:aliases":"node tests/test-command-aliases.js","test:lockfile":"node tests/test-lockfile.js","test:profiles":"node tests/test-profiles.js","test:dbquoting":"node tests/test-database-query-quoting.js","test:lifecycle":"node tests/test-lifecycle.js","test:sudostdin":"node tests/test-sudo-stdin.js","test:sync-path":"node tests/test-rsync-path.js","test-connection":"python tools/test-connection.py","test:dbrowcount":"node tests/test-database-row-count.js","test:fieldnames":"node tests/test-config-field-names.js","test:dbinjection":"node tests/test-database-injection.js","test:agentforward":"node tests/test-agent-forward.js"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^3.25.76","ssh2":"^1.17.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^5.0.0","eslint":"^8.56.0","prettier":"^3.2.4","typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.8.2_1787912270483_0.547600892260562","host":"s3://npm-registry-packages-npm-production"}},"3.8.3":{"name":"mcp-ssh-manager","version":"3.8.3","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.8.3","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"d031f0dd542df4b6ee118995868438df44973f27","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.8.3.tgz","fileCount":74,"integrity":"sha512-kd/n5no2B5VVoS5K3+S1fqVmO5VHbjofyHlL/IXakP/hrOiT4kMUHg5FXL245JiPYLDKHbtYrJuh6pRzywOZwg==","signatures":[{"sig":"MEUCIQDZi80OM6WGCn32+uD4tkbAcOr50Z4J87vEW1AEkUKRWgIgOXf1uFwRDqthEQO9wpfEMbof2mfP6Y+vf3m6FGFKnZA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mcp-ssh-manager@3.8.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4502967},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"46a38d79c43ad6cfb0d5e6676be0e72681ef12b1","mcpName":"io.github.bvisible/mcp-ssh-manager","scripts":{"lint":"eslint src/*.js","test":"npm run test:lockfile && npm run test:sudostdin && npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools && npm run test:policy && npm run test:ping && npm run test:config && npm run test:fieldnames && npm run test:groups && npm run test:agentforward && npm run test:lifecycle && npm run test:tunnel && npm run test:sync && npm run test:sync-path && npm run test:dbquoting && npm run test:dbinjection && npm run test:dbrowcount","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && npm run typecheck && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:ping":"node tests/test-ssh-ping.js","test:sync":"node tests/test-sync-stats.js","typecheck":"tsc -p tsconfig.json","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:config":"node tests/test-server-config-manager.js","test:groups":"node tests/test-server-groups.js","test:policy":"node tests/test-policy.js","test:tunnel":"node tests/test-tunnel-listen.js","test:aliases":"node tests/test-command-aliases.js","test:lockfile":"node tests/test-lockfile.js","test:profiles":"node tests/test-profiles.js","test:dbquoting":"node tests/test-database-query-quoting.js","test:lifecycle":"node tests/test-lifecycle.js","test:sudostdin":"node tests/test-sudo-stdin.js","test:sync-path":"node tests/test-rsync-path.js","test-connection":"python tools/test-connection.py","test:dbrowcount":"node tests/test-database-row-count.js","test:fieldnames":"node tests/test-config-field-names.js","test:dbinjection":"node tests/test-database-injection.js","test:agentforward":"node tests/test-agent-forward.js"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.4.3","ssh2":"^1.17.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^5.0.0","eslint":"^8.56.0","prettier":"^3.2.4","typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.8.3_1787919119624_0.11991126874585367","host":"s3://npm-registry-packages-npm-production"}},"3.8.4":{"name":"mcp-ssh-manager","version":"3.8.4","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.8.4","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"df59c4173be11735f8fb6f34f7ec7890525fd0e2","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.8.4.tgz","fileCount":74,"integrity":"sha512-u2a2fUto7db8jOY3Vmg/wgwBk2/raRq4a0FtYtmlENqnMQh6LgOEaAAtHP6udyLKnAZuVxqpn8Ful/hXU/ZgZw==","signatures":[{"sig":"MEUCICXbZHwrDpXKRKKZrfLjd9Ke6V0T6jfHlU8PKHr+2U7+AiEAgUl9E7vn76zS8A0XE/zxdOQj565M0dLMtsMVc0h4B8c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mcp-ssh-manager@3.8.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4507592},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"f7e2b29e830c97f169f44813cf11872f50bf93fd","mcpName":"io.github.bvisible/mcp-ssh-manager","scripts":{"lint":"eslint src/*.js","test":"npm run test:lockfile && npm run test:sudostdin && npm run test:redaction && npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools && npm run test:policy && npm run test:ping && npm run test:config && npm run test:fieldnames && npm run test:groups && npm run test:agentforward && npm run test:lifecycle && npm run test:tunnel && npm run test:sync && npm run test:sync-path && npm run test:dbquoting && npm run test:dbinjection && npm run test:dbrowcount","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && npm run typecheck && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:ping":"node tests/test-ssh-ping.js","test:sync":"node tests/test-sync-stats.js","typecheck":"tsc -p tsconfig.json","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:config":"node tests/test-server-config-manager.js","test:groups":"node tests/test-server-groups.js","test:policy":"node tests/test-policy.js","test:tunnel":"node tests/test-tunnel-listen.js","test:aliases":"node tests/test-command-aliases.js","test:lockfile":"node tests/test-lockfile.js","test:profiles":"node tests/test-profiles.js","test:dbquoting":"node tests/test-database-query-quoting.js","test:lifecycle":"node tests/test-lifecycle.js","test:redaction":"node tests/test-logger-redaction.js","test:sudostdin":"node tests/test-sudo-stdin.js","test:sync-path":"node tests/test-rsync-path.js","test-connection":"python tools/test-connection.py","test:dbrowcount":"node tests/test-database-row-count.js","test:fieldnames":"node tests/test-config-field-names.js","test:dbinjection":"node tests/test-database-injection.js","test:agentforward":"node tests/test-agent-forward.js"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.4.3","ssh2":"^1.17.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^5.0.0","eslint":"^8.56.0","prettier":"^3.2.4","typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.8.4_1787924663280_0.7887746871840637","host":"s3://npm-registry-packages-npm-production"}},"3.8.5":{"name":"mcp-ssh-manager","version":"3.8.5","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.8.5","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"6b663f6dc08b0bfb87b5b3014b4d60ea93b7e90d","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.8.5.tgz","fileCount":75,"integrity":"sha512-AnHEV5JVLQ89SccALxm/9UegMlp0kzI9OhA5ZOPwH+o4JJ3aJxaQBQ3CLjZGXjaJig/gZ2MARTqSqlBStm86lw==","signatures":[{"sig":"MEUCIALMDp9VYeEgQSpuDBTZaqNWOGPfYpSUMETfmX/nxsV5AiEA/Xhgv3GeXryGcUgs2L+QH92PX3i8dkeOLbFwvFWRm90=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mcp-ssh-manager@3.8.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4515084},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"07e7a3bd03df0b862223e62f127b5a9bfe86e2ba","mcpName":"io.github.bvisible/mcp-ssh-manager","scripts":{"lint":"eslint src/*.js","test":"npm run test:lockfile && npm run test:sudostdin && npm run test:redaction && npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools && npm run test:policy && npm run test:ping && npm run test:config && npm run test:fieldnames && npm run test:groups && npm run test:agentforward && npm run test:lifecycle && npm run test:tunnel && npm run test:sync && npm run test:sync-path && npm run test:dbquoting && npm run test:dbinjection && npm run test:backupinjection && npm run test:dbrowcount","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && npm run typecheck && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:ping":"node tests/test-ssh-ping.js","test:sync":"node tests/test-sync-stats.js","typecheck":"tsc -p tsconfig.json","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:config":"node tests/test-server-config-manager.js","test:groups":"node tests/test-server-groups.js","test:policy":"node tests/test-policy.js","test:tunnel":"node tests/test-tunnel-listen.js","test:aliases":"node tests/test-command-aliases.js","test:lockfile":"node tests/test-lockfile.js","test:profiles":"node tests/test-profiles.js","test:dbquoting":"node tests/test-database-query-quoting.js","test:lifecycle":"node tests/test-lifecycle.js","test:redaction":"node tests/test-logger-redaction.js","test:sudostdin":"node tests/test-sudo-stdin.js","test:sync-path":"node tests/test-rsync-path.js","test-connection":"python tools/test-connection.py","test:dbrowcount":"node tests/test-database-row-count.js","test:fieldnames":"node tests/test-config-field-names.js","test:dbinjection":"node tests/test-database-injection.js","test:agentforward":"node tests/test-agent-forward.js","test:backupinjection":"node tests/test-backup-monitor-injection.js"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.4.3","ssh2":"^1.17.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^5.0.0","eslint":"^8.56.0","prettier":"^3.2.4","typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.8.5_1787926161644_0.9773759291423307","host":"s3://npm-registry-packages-npm-production"}},"3.8.6":{"name":"mcp-ssh-manager","version":"3.8.6","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.8.6","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"eddc2a4bec7a28fd15b2a37f8f62d9aa19c47230","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.8.6.tgz","fileCount":77,"integrity":"sha512-SLOScDE2UzGLE8Qb7B3jCLYoMDQs3sZQ1aFtWW3kFZPREtWfPtTtWa7pz5Gj0KE3cEwix5WztWNJKUHm667HYQ==","signatures":[{"sig":"MEUCIAbCf61HgTm0C4A1ZPxqYNtKk/6IwiLvnfPSdFH+F1xIAiEAr70QK4h/z5b8V3VgqSPp7L0gTggVhgpcW7U8A5QmLYU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHF8Bz06N3xBHwtgKWJCRobYZ4H2iGmvv2B0A20vc9HcAiAaitni4ApPhpYLgWDpfMUNNVmGj/dEV7g32CsWafcc4w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mcp-ssh-manager@3.8.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4558222},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"cf0f612101fcdd315474c165a8ed7bbb95696016","mcpName":"io.github.bvisible/mcp-ssh-manager","scripts":{"lint":"eslint src/*.js","test":"npm run test:lockfile && npm run test:sudostdin && npm run test:redaction && npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:hostkeys && npm run test:tools && npm run test:policy && npm run test:ping && npm run test:config && npm run test:fieldnames && npm run test:groups && npm run test:agentforward && npm run test:lifecycle && npm run test:tunnel && npm run test:sync && npm run test:sync-path && npm run test:dbquoting && npm run test:dbinjection && npm run test:backupinjection && npm run test:dbrowcount && npm run test:cli-edit","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && npm run typecheck && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:ping":"node tests/test-ssh-ping.js","test:sync":"node tests/test-sync-stats.js","typecheck":"tsc -p tsconfig.json","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:config":"node tests/test-server-config-manager.js","test:groups":"node tests/test-server-groups.js","test:policy":"node tests/test-policy.js","test:tunnel":"node tests/test-tunnel-listen.js","test:aliases":"node tests/test-command-aliases.js","test:cli-edit":"node tests/test-cli-edit-server.js","test:hostkeys":"node tests/test-host-key-verification.js","test:lockfile":"node tests/test-lockfile.js","test:profiles":"node tests/test-profiles.js","test:dbquoting":"node tests/test-database-query-quoting.js","test:lifecycle":"node tests/test-lifecycle.js","test:redaction":"node tests/test-logger-redaction.js","test:sudostdin":"node tests/test-sudo-stdin.js","test:sync-path":"node tests/test-rsync-path.js","test-connection":"python tools/test-connection.py","test:dbrowcount":"node tests/test-database-row-count.js","test:fieldnames":"node tests/test-config-field-names.js","test:dbinjection":"node tests/test-database-injection.js","test:agentforward":"node tests/test-agent-forward.js","test:backupinjection":"node tests/test-backup-monitor-injection.js"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.4.3","ssh2":"^1.17.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^5.0.0","eslint":"^8.56.0","prettier":"^3.2.4","typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.8.6_1791449382566_0.3742938376921965","host":"s3://npm-registry-packages-npm-production"}},"3.8.7":{"name":"mcp-ssh-manager","version":"3.8.7","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@3.8.7","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"c467ebf818fcd0bf1530cd89622f24681be221f5","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-3.8.7.tgz","fileCount":78,"integrity":"sha512-5mbMr1uiU5lzuivU39bAtINFXF+uCMIQMmWoCVe1BZsuHCpQf8kVCmbVG4ML7+3ruBy/45mM38P7vTzObig7WA==","signatures":[{"sig":"MEQCICRfNYAmUkPx48COF4BHvtnKqERsvm8DaK/7gnbFP5CQAiBM36YqcUUL9GodqDbL+z7k7CciWV9YWum86B03MzofXA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFjhbzbXari6UC+Afwd1aW885OhCxaKR2JEXK/YUONs3AiAWftdt9RDSNW/XcaWsd/hkuzzcjrF/h9xCiud8+ERNNA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mcp-ssh-manager@3.8.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4570342},"main":"src/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"a83be013a8bf35480fcbd643b1410a67563e934e","mcpName":"io.github.bvisible/mcp-ssh-manager","scripts":{"lint":"eslint src/*.js","test":"npm run test:lockfile && npm run test:sudostdin && npm run test:redaction && npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:hostkeys && npm run test:tools && npm run test:policy && npm run test:policynames && npm run test:ping && npm run test:config && npm run test:fieldnames && npm run test:groups && npm run test:agentforward && npm run test:certpath && npm run test:lifecycle && npm run test:tunnel && npm run test:sync && npm run test:sync-path && npm run test:dbquoting && npm run test:dbinjection && npm run test:backupinjection && npm run test:dbrowcount && npm run test:cli-edit","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:all":"npm test && npm run typecheck && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:ping":"node tests/test-ssh-ping.js","test:sync":"node tests/test-sync-stats.js","typecheck":"tsc -p tsconfig.json","test:hooks":"node tests/test-hooks.js","test:tools":"node tests/test-tool-registry.js","test:config":"node tests/test-server-config-manager.js","test:groups":"node tests/test-server-groups.js","test:policy":"node tests/test-policy.js","test:tunnel":"node tests/test-tunnel-listen.js","test:aliases":"node tests/test-command-aliases.js","test:certpath":"node tests/test-cert-path.js","test:cli-edit":"node tests/test-cli-edit-server.js","test:hostkeys":"node tests/test-host-key-verification.js","test:lockfile":"node tests/test-lockfile.js","test:profiles":"node tests/test-profiles.js","test:dbquoting":"node tests/test-database-query-quoting.js","test:lifecycle":"node tests/test-lifecycle.js","test:redaction":"node tests/test-logger-redaction.js","test:sudostdin":"node tests/test-sudo-stdin.js","test:sync-path":"node tests/test-rsync-path.js","test-connection":"python tools/test-connection.py","test:dbrowcount":"node tests/test-database-row-count.js","test:fieldnames":"node tests/test-config-field-names.js","test:dbinjection":"node tests/test-database-injection.js","test:policynames":"node tests/test-policy-name-resolution.js","test:agentforward":"node tests/test-agent-forward.js","test:backupinjection":"node tests/test-backup-monitor-injection.js"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^4.6.7","ssh2":"^1.17.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^5.0.0","eslint":"^8.56.0","prettier":"^3.2.4","typescript":"^6.0.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_3.8.7_1792943689255_0.05127031523648817","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"mcp-ssh-manager","version":"4.0.0","keywords":["mcp","ssh","mcp-ssh","mcp ssh","ssh-mcp","ssh mcp","model-context-protocol-ssh","mcp-server","mcp server ssh","claude-code","claude-ssh","claude-code-ssh","openai-codex","codex","model-context-protocol","remote-server","ssh-manager","ssh manager mcp","remote-ssh","ssh-automation","deployment","devops","automation","backup","restore","health-monitoring","database","mysql","postgresql","mongodb","profiles","hooks","aliases","toml","ai-assistant","ai-tools","llm-tools"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@4.0.0","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"2750a2a382036be21d8819a2188253371beff9e1","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-4.0.0.tgz","fileCount":151,"integrity":"sha512-qzvbJb1e8xgI4Hz/+q9UwTe1gnOjA/8NVpoi7L/MtH/ianj2icyrqb2q6T7uGz7tYT56v2gI7QFVwAFKLbFGXQ==","signatures":[{"sig":"MEQCIE+g4bZMgpRIfFRErdcR9VCBWViMvHXuFlHCG9sJHz9AAiBe/RrMklnW5IaiQod4wjR600AakDWsNtck2Y1A4bmD8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIF7KVLtjnlsSNkagtcEJ3GmH52+TTkFwHu6BGFUZzaGAAiEAgDzWgVW1pfxwz2YMMpJGn/LeTC3hAnVo2vHYDdhkYEU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mcp-ssh-manager@4.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3278071},"main":"src/index.js","type":"module","_from":"file:/home/runner/work/_temp/mcp-ssh-manager-4.0.0.tgz","engines":{"node":">=18.0.0"},"mcpName":"io.github.bvisible/mcp-ssh-manager","scripts":{"lint":"eslint src/*.js","test":"npm run test:lockfile && npm run test:sudostdin && npm run test:vault && npm run test:recovery && npm run test:upgrade && npm run test:notify && npm run test:commands && npm run test:commandlog && npm run test:portability && npm run test:approval && npm run test:controlplane && npm run test:terminal && npm run test:files && npm run test:livestream && npm run test:skills && npm run test:redaction && npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools && npm run test:policy && npm run test:policynames && npm run test:ping && npm run test:config && npm run test:fieldnames && npm run test:groups && npm run test:agentforward && npm run test:certpath && npm run test:agentannounce && npm run test:autherrors && npm run test:envchoice && npm run test:lifecycle && npm run test:tunnel && npm run test:sync && npm run test:sync-path && npm run test:dbquoting && npm run test:dbinjection && npm run test:backupinjection && npm run test:dbrowcount && npm run test:migration && npm run test:security && npm run test:hostkeys && npm run test:proxy && npm run test:working-directory && npm run test:groups-persistence && npm run test:release && npm run test:cli-experience && npm run test:desktop-install && npm run test:agent-clients && npm run test:preview && npm run test:desktop-smoke && npm run test:cli-edit","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","test:ui":"npm --prefix ui run test:e2e","build:ui":"cd ui && npm ci && npm run build","test:all":"npm test && npm run typecheck && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:ping":"node tests/test-ssh-ping.js","test:sync":"node tests/test-sync-stats.js","typecheck":"tsc -p tsconfig.json","test:files":"node tests/test-files.js","test:hooks":"node tests/test-hooks.js","test:proxy":"node tests/test-ssh-connection.js","test:tools":"node tests/test-tool-registry.js","test:vault":"node tests/test-secret-store.js","test:config":"node tests/test-server-config-manager.js","test:groups":"node tests/test-server-groups.js","test:notify":"node tests/test-notify.js","test:policy":"node tests/test-policy.js","test:skills":"node tests/test-skills.js","test:tunnel":"node tests/test-tunnel-listen.js","test:aliases":"node tests/test-command-aliases.js","test:preview":"node tests/test-preview-candidate.js","test:release":"node tests/test-release.js","test:upgrade":"node tests/test-upgrade.js","test:approval":"node tests/test-approval.js","test:certpath":"node tests/test-cert-path.js","test:cli-edit":"node tests/test-cli-edit-server.js","test:commands":"node tests/test-saved-commands.js","test:hostkeys":"node tests/test-host-key-verification.js","test:lockfile":"node tests/test-lockfile.js","test:profiles":"node tests/test-profiles.js","test:recovery":"node tests/test-vault-recovery.js","test:security":"node tests/test-security-boundary.js","test:terminal":"node tests/test-terminal.js","test:dbquoting":"node tests/test-database-query-quoting.js","test:envchoice":"node tests/test-env-file-choice.js","test:lifecycle":"node tests/test-lifecycle.js","test:migration":"node tests/test-v4-migration.js","test:redaction":"node tests/test-logger-redaction.js","test:sudostdin":"node tests/test-sudo-stdin.js","test:sync-path":"node tests/test-rsync-path.js","test-connection":"python tools/test-connection.py","test:autherrors":"node tests/test-auth-errors.js","test:commandlog":"node tests/test-command-log.js","test:dbrowcount":"node tests/test-database-row-count.js","test:fieldnames":"node tests/test-config-field-names.js","test:livestream":"node tests/test-live-stream.js","test:dbinjection":"node tests/test-database-injection.js","test:policynames":"node tests/test-policy-name-resolution.js","test:portability":"node tests/test-portability.js","test:agentforward":"node tests/test-agent-forward.js","test:controlplane":"node tests/test-control-plane.js","test:agent-clients":"node tests/test-agent-clients.js","test:agentannounce":"node tests/test-agent-announce.js","test:desktop-smoke":"node tests/test-desktop-smoke.js","test:cli-experience":"node tests/test-cli-experience.js","test:backupinjection":"node tests/test-backup-monitor-injection.js","test:desktop-install":"node tests/test-desktop-install.js","test:published-upgrade":"node scripts/test-upgrade-from-published.mjs","test:working-directory":"node tests/test-working-directory.js","test:groups-persistence":"node tests/test-groups-persistence.js"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"_resolved":"/home/runner/work/_temp/mcp-ssh-manager-4.0.0.tgz","_integrity":"sha512-qzvbJb1e8xgI4Hz/+q9UwTe1gnOjA/8NVpoi7L/MtH/ianj2icyrqb2q6T7uGz7tYT56v2gI7QFVwAFKLbFGXQ==","repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"11.19.0","description":"MCP SSH Manager: Model Context Protocol server for SSH remote server management. Control SSH connections from Claude Code and OpenAI Codex - execute commands, transfer files, database operations, backups, health monitoring, and DevOps automation. NEW: Too","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.6.7","ssh2":"^1.17.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.40.0","eslint":"^8.56.0","prettier":"^3.2.4","typescript":"^6.0.3","@types/node":"^26.6.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_4.0.0_1792964891681_0.9832731671516093","host":"s3://npm-registry-packages-npm-production"}},"4.0.1":{"name":"mcp-ssh-manager","version":"4.0.1","keywords":["mcp","mcp-server","model-context-protocol","ssh","ssh-mcp","mcp-ssh","sftp","ssh-client","claude-code","claude-desktop","openai-codex","codex","ai-agents","agentic-ai","llm-tools","ai-assistant","devops","remote-server","server-management","remote-access","human-in-the-loop","approval","audit-log","security","backup","database","health-monitoring","ssh-manager","ssh-automation","deployment","mysql","postgresql","mongodb"],"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","_id":"mcp-ssh-manager@4.0.1","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"dist":{"shasum":"ba4e2e0c03972cb5731e3f1705bdbea26123b8f2","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-4.0.1.tgz","fileCount":155,"integrity":"sha512-mcpnevC/IkjrmrE56o+kNEe/zS5DmOi+ovST7drWEdzgS+2urdWw81A9QURQ5lNUrUmbml5XL2G2kKaFdf8aRg==","signatures":[{"sig":"MEYCIQD0U+Uo+4t3vgElapCGd/6KC71yIu0p39F65q67d511BwIhAN3WayT5WDsmQCtA4w+/CF5TnqC6V4DS433acE6FfH19","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCLaFRy1ioOFnl08HlKZUG7SP3pNtrsMZuull4IltHRMwIgVR+LK7t7wGZae4XsX6nQqftMBecfBPrVgc0DIxfQtJo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mcp-ssh-manager@4.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3342692},"main":"src/index.js","type":"module","_from":"file:/home/runner/work/_temp/mcp-ssh-manager-4.0.1.tgz","engines":{"node":">=18.0.0"},"mcpName":"io.github.bvisible/mcp-ssh-manager","scripts":{"lint":"eslint src/*.js","test":"npm run test:lockfile && npm run test:sudostdin && npm run test:vault && npm run test:recovery && npm run test:upgrade && npm run test:notify && npm run test:commands && npm run test:commandlog && npm run test:portability && npm run test:approval && npm run test:controlplane && npm run test:terminal && npm run test:files && npm run test:livestream && npm run test:skills && npm run test:redaction && npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools && npm run test:policy && npm run test:policynames && npm run test:ping && npm run test:config && npm run test:fieldnames && npm run test:groups && npm run test:agentforward && npm run test:certpath && npm run test:agentannounce && npm run test:autherrors && npm run test:envchoice && npm run test:lifecycle && npm run test:tunnel && npm run test:sync && npm run test:sync-path && npm run test:dbquoting && npm run test:dbinjection && npm run test:quoteprops && npm run test:backupinjection && npm run test:dbrowcount && npm run test:migration && npm run test:security && npm run test:hostkeys && npm run test:proxy && npm run test:working-directory && npm run test:groups-persistence && npm run test:release && npm run test:cli-experience && npm run test:desktop-install && npm run test:agent-clients && npm run test:appupdate && npm run test:preview && npm run test:desktop-smoke && npm run test:cli-edit","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","prepack":"node scripts/build-interface.mjs","test:ui":"npm --prefix ui run test:e2e","build:ui":"node scripts/build-interface.mjs","test:all":"npm test && npm run typecheck && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:ping":"node tests/test-ssh-ping.js","test:sync":"node tests/test-sync-stats.js","typecheck":"tsc -p tsconfig.json","test:files":"node tests/test-files.js","test:hooks":"node tests/test-hooks.js","test:proxy":"node tests/test-ssh-connection.js","test:tools":"node tests/test-tool-registry.js","test:vault":"node tests/test-secret-store.js","test:config":"node tests/test-server-config-manager.js","test:groups":"node tests/test-server-groups.js","test:notify":"node tests/test-notify.js","test:policy":"node tests/test-policy.js","test:skills":"node tests/test-skills.js","test:tunnel":"node tests/test-tunnel-listen.js","test:aliases":"node tests/test-command-aliases.js","test:preview":"node tests/test-preview-candidate.js","test:release":"node tests/test-release.js","test:upgrade":"node tests/test-upgrade.js","test:approval":"node tests/test-approval.js","test:certpath":"node tests/test-cert-path.js","test:cli-edit":"node tests/test-cli-edit-server.js","test:commands":"node tests/test-saved-commands.js","test:hostkeys":"node tests/test-host-key-verification.js","test:lockfile":"node tests/test-lockfile.js","test:profiles":"node tests/test-profiles.js","test:recovery":"node tests/test-vault-recovery.js","test:security":"node tests/test-security-boundary.js","test:terminal":"node tests/test-terminal.js","test:appupdate":"node tests/test-app-update.js","test:dbquoting":"node tests/test-database-query-quoting.js","test:envchoice":"node tests/test-env-file-choice.js","test:lifecycle":"node tests/test-lifecycle.js","test:migration":"node tests/test-v4-migration.js","test:redaction":"node tests/test-logger-redaction.js","test:sudostdin":"node tests/test-sudo-stdin.js","test:sync-path":"node tests/test-rsync-path.js","test-connection":"python tools/test-connection.py","test:autherrors":"node tests/test-auth-errors.js","test:commandlog":"node tests/test-command-log.js","test:dbrowcount":"node tests/test-database-row-count.js","test:fieldnames":"node tests/test-config-field-names.js","test:livestream":"node tests/test-live-stream.js","test:quoteprops":"node tests/test-shell-quote-properties.js","test:dbinjection":"node tests/test-database-injection.js","test:policynames":"node tests/test-policy-name-resolution.js","test:portability":"node tests/test-portability.js","test:agentforward":"node tests/test-agent-forward.js","test:controlplane":"node tests/test-control-plane.js","test:agent-clients":"node tests/test-agent-clients.js","test:agentannounce":"node tests/test-agent-announce.js","test:desktop-smoke":"node tests/test-desktop-smoke.js","test:cli-experience":"node tests/test-cli-experience.js","test:backupinjection":"node tests/test-backup-monitor-injection.js","test:desktop-install":"node tests/test-desktop-install.js","test:published-upgrade":"node scripts/test-upgrade-from-published.mjs","test:working-directory":"node tests/test-working-directory.js","test:groups-persistence":"node tests/test-groups-persistence.js"},"_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"_resolved":"/home/runner/work/_temp/mcp-ssh-manager-4.0.1.tgz","_integrity":"sha512-mcpnevC/IkjrmrE56o+kNEe/zS5DmOi+ovST7drWEdzgS+2urdWw81A9QURQ5lNUrUmbml5XL2G2kKaFdf8aRg==","repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"11.19.0","description":"MCP server for SSH: let AI agents (Claude Code, Codex, any MCP client) run commands, transfer files and manage servers over SSH, with human approval, an encrypted vault and a live audit trail.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.6.7","ssh2":"^1.17.0","dotenv":"^16.4.5","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.40.0","eslint":"^8.56.0","prettier":"^3.2.4","fast-check":"^4.10.2","typescript":"^6.0.3","@types/node":"^26.6.4"},"_npmOperationalInternal":{"tmp":"tmp/mcp-ssh-manager_4.0.1_1793022195733_0.4641534961056091","host":"s3://npm-registry-packages-npm-production"}},"4.0.2":{"_id":"mcp-ssh-manager@4.0.2","bin":{"ssh-manager":"cli/ssh-manager.js","mcp-ssh-manager":"src/index.js"},"bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"dist":{"shasum":"54723eadc31547ca3de133a1ccd897a99f28076c","tarball":"https://registry.npmjs.org/mcp-ssh-manager/-/mcp-ssh-manager-4.0.2.tgz","fileCount":157,"integrity":"sha512-tndvQ3xgvW5X6aLEYjLVoQOJdD1yIkIKyamZIchUGWTxaEq1H/NZGa5ET9lOt4wjJOGitwGKxAZvaq8JAwrKbA==","signatures":[{"sig":"MEUCIQCEg6PE1hIqGny0DQt43eGxyL8OytWjJctmKDbZhkTDCwIgKf3rvllU4RvyjoGvnSJCq5srB0bt991ssGnuuI3jcTY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDEeAq1AnldxYZTc9hs7jqZBm2TwEC/vsoYu13tipar6AIgVkBRFiLFiZPKiFaNTOe+x0onzIOxkCYRZ3YkeWAoV9Y="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/mcp-ssh-manager@4.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3352387},"main":"src/index.js","name":"mcp-ssh-manager","type":"module","_from":"file:/home/runner/work/_temp/mcp-ssh-manager-4.0.2.tgz","author":{"name":"MCP SSH Manager Contributors"},"engines":{"node":">=18.0.0"},"license":"MIT","mcpName":"io.github.bvisible/mcp-ssh-manager","scripts":{"lint":"eslint src/*.js","test":"npm run test:lockfile && npm run test:sudostdin && npm run test:vault && npm run test:recovery && npm run test:upgrade && npm run test:notify && npm run test:commands && npm run test:commandlog && npm run test:portability && npm run test:approval && npm run test:controlplane && npm run test:terminal && npm run test:files && npm run test:livestream && npm run test:skills && npm run test:redaction && npm run test:profiles && npm run test:aliases && npm run test:hooks && npm run test:tools && npm run test:policy && npm run test:policynames && npm run test:ping && npm run test:config && npm run test:fieldnames && npm run test:groups && npm run test:agentforward && npm run test:certpath && npm run test:agentannounce && npm run test:autherrors && npm run test:envchoice && npm run test:lifecycle && npm run test:tunnel && npm run test:sync && npm run test:sync-path && npm run test:dbquoting && npm run test:dbinjection && npm run test:quoteprops && npm run test:backupinjection && npm run test:dbrowcount && npm run test:migration && npm run test:security && npm run test:hostkeys && npm run test:proxy && npm run test:working-directory && npm run test:groups-persistence && npm run test:release && npm run test:cli-experience && npm run test:desktop-install && npm run test:agent-clients && npm run test:appupdate && npm run test:preview && npm run test:desktop-smoke && npm run test:local-shell && npm run test:cli-edit && npm run test:timeoutwrap","setup":"npm install && pip install -r tools/requirements.txt","start":"node src/index.js","format":"prettier --write 'src/**/*.js' 'tests/**/*.js'","prepack":"node scripts/build-interface.mjs","test:ui":"npm --prefix ui run test:e2e","build:ui":"node scripts/build-interface.mjs","test:all":"npm test && npm run typecheck && ./scripts/validate.sh","validate":"./scripts/validate.sh","configure":"python tools/server-manager.py","test:ping":"node tests/test-ssh-ping.js","test:sync":"node tests/test-sync-stats.js","typecheck":"tsc -p tsconfig.json","test:files":"node tests/test-files.js","test:hooks":"node tests/test-hooks.js","test:proxy":"node tests/test-ssh-connection.js","test:tools":"node tests/test-tool-registry.js","test:vault":"node tests/test-secret-store.js","test:config":"node tests/test-server-config-manager.js","test:groups":"node tests/test-server-groups.js","test:notify":"node tests/test-notify.js","test:policy":"node tests/test-policy.js","test:skills":"node tests/test-skills.js","test:tunnel":"node tests/test-tunnel-listen.js","brand:social":"node scripts/render-social-preview.mjs","test:aliases":"node tests/test-command-aliases.js","test:preview":"node tests/test-preview-candidate.js","test:release":"node tests/test-release.js","test:upgrade":"node tests/test-upgrade.js","test:approval":"node tests/test-approval.js","test:certpath":"node tests/test-cert-path.js","test:cli-edit":"node tests/test-cli-edit-server.js","test:commands":"node tests/test-saved-commands.js","test:hostkeys":"node tests/test-host-key-verification.js","test:lockfile":"node tests/test-lockfile.js","test:profiles":"node tests/test-profiles.js","test:recovery":"node tests/test-vault-recovery.js","test:security":"node tests/test-security-boundary.js","test:terminal":"node tests/test-terminal.js","test:appupdate":"node tests/test-app-update.js","test:dbquoting":"node tests/test-database-query-quoting.js","test:envchoice":"node tests/test-env-file-choice.js","test:lifecycle":"node tests/test-lifecycle.js","test:migration":"node tests/test-v4-migration.js","test:redaction":"node tests/test-logger-redaction.js","test:sudostdin":"node tests/test-sudo-stdin.js","test:sync-path":"node tests/test-rsync-path.js","test-connection":"python tools/test-connection.py","test:autherrors":"node tests/test-auth-errors.js","test:commandlog":"node tests/test-command-log.js","test:dbrowcount":"node tests/test-database-row-count.js","test:fieldnames":"node tests/test-config-field-names.js","test:livestream":"node tests/test-live-stream.js","test:quoteprops":"node tests/test-shell-quote-properties.js","test:dbinjection":"node tests/test-database-injection.js","test:local-shell":"node tests/test-local-shell.js","test:policynames":"node tests/test-policy-name-resolution.js","test:portability":"node tests/test-portability.js","test:timeoutwrap":"node tests/test-timeout-wrapper.js","test:agentforward":"node tests/test-agent-forward.js","test:controlplane":"node tests/test-control-plane.js","test:agent-clients":"node tests/test-agent-clients.js","test:agentannounce":"node tests/test-agent-announce.js","test:desktop-smoke":"node tests/test-desktop-smoke.js","test:cli-experience":"node tests/test-cli-experience.js","test:backupinjection":"node tests/test-backup-monitor-injection.js","test:desktop-install":"node tests/test-desktop-install.js","test:published-upgrade":"node scripts/test-upgrade-from-published.mjs","test:working-directory":"node tests/test-working-directory.js","test:groups-persistence":"node tests/test-groups-persistence.js"},"version":"4.0.2","_npmUser":{"name":"bvisible","email":"jeremy@bvisible.ch"},"homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","keywords":["mcp","mcp-server","model-context-protocol","ssh","ssh-mcp","mcp-ssh","sftp","ssh-client","claude-code","claude-desktop","openai-codex","codex","ai-agents","agentic-ai","llm-tools","ai-assistant","devops","remote-server","server-management","remote-access","human-in-the-loop","approval","audit-log","security","backup","database","health-monitoring","ssh-manager","ssh-automation","deployment","mysql","postgresql","mongodb"],"_resolved":"/home/runner/work/_temp/mcp-ssh-manager-4.0.2.tgz","_integrity":"sha512-tndvQ3xgvW5X6aLEYjLVoQOJdD1yIkIKyamZIchUGWTxaEq1H/NZGa5ET9lOt4wjJOGitwGKxAZvaq8JAwrKbA==","repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"_npmVersion":"11.19.1","description":"MCP server for SSH: let AI agents (Claude Code, Codex, any MCP client) run commands, transfer files and manage servers over SSH, with human approval, an encrypted vault and a live audit trail.","directories":{},"maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"_nodeVersion":"24.22.1","dependencies":{"zod":"^4.6.7","ssh2":"^1.17.0","dotenv":"^18.0.9","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.32.1"},"_hasShrinkwrap":false,"devDependencies":{"knip":"^6.40.0","eslint":"^8.56.0","prettier":"^3.2.4","fast-check":"^4.10.2","typescript":"^6.0.3","@types/node":"^26.6.4"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-ssh-manager_4.0.2_1793531203699_0.09312974720946898"}}},"time":{"created":"2025-10-07T10:35:32.135Z","modified":"2026-11-01T11:06:44.116Z","3.0.0":"2025-10-07T10:35:32.358Z","3.1.0":"2025-11-15T11:24:27.957Z","3.1.2":"2026-02-09T12:34:33.803Z","3.1.3":"2026-02-15T18:40:32.541Z","3.1.4":"2026-02-22T11:03:41.516Z","3.1.5":"2026-03-05T10:57:27.557Z","3.2.0":"2026-03-18T17:46:17.819Z","3.2.1":"2026-04-07T07:26:34.866Z","3.2.2":"2026-04-07T07:32:58.418Z","3.3.0":"2026-05-02T16:57:27.265Z","3.4.0":"2026-05-07T15:55:31.155Z","3.4.1":"2026-05-16T12:39:38.312Z","3.5.0":"2026-05-18T16:55:59.431Z","3.5.1":"2026-05-26T20:53:51.261Z","3.6.0":"2026-06-09T09:06:35.931Z","3.6.1":"2026-06-09T09:26:04.569Z","3.6.2":"2026-06-09T10:05:26.988Z","3.6.3":"2026-06-18T07:35:10.271Z","3.6.4":"2026-06-18T11:36:19.354Z","3.6.5":"2026-06-30T07:56:41.742Z","3.6.6":"2026-07-11T20:34:24.598Z","3.6.7":"2026-07-11T21:17:54.993Z","3.7.0":"2026-07-13T11:20:13.060Z","3.8.0":"2026-08-14T14:46:38.217Z","3.8.1":"2026-08-28T09:52:17.179Z","3.8.2":"2026-08-28T10:17:50.762Z","3.8.3":"2026-08-28T12:11:59.898Z","3.8.4":"2026-08-28T13:44:23.499Z","3.8.5":"2026-08-28T14:09:21.902Z","3.8.6":"2026-10-08T08:49:42.714Z","3.8.7":"2026-10-25T15:54:49.440Z","4.0.0":"2026-10-25T21:48:11.790Z","4.0.1":"2026-10-26T13:43:15.915Z","4.0.2":"2026-11-01T11:06:43.825Z"},"bugs":{"url":"https://github.com/bvisible/mcp-ssh-manager/issues"},"author":{"name":"MCP SSH Manager Contributors"},"license":"MIT","homepage":"https://github.com/bvisible/mcp-ssh-manager#readme","keywords":["mcp","mcp-server","model-context-protocol","ssh","ssh-mcp","mcp-ssh","sftp","ssh-client","claude-code","claude-desktop","openai-codex","codex","ai-agents","agentic-ai","llm-tools","ai-assistant","devops","remote-server","server-management","remote-access","human-in-the-loop","approval","audit-log","security","backup","database","health-monitoring","ssh-manager","ssh-automation","deployment","mysql","postgresql","mongodb"],"repository":{"url":"git+https://github.com/bvisible/mcp-ssh-manager.git","type":"git"},"description":"MCP server for SSH: let AI agents (Claude Code, Codex, any MCP client) run commands, transfer files and manage servers over SSH, with human approval, an encrypted vault and a live audit trail.","maintainers":[{"name":"bvisible","email":"jeremy@bvisible.ch"}],"readme":"<p align=\"center\">\n  <img src=\"docs/images/icon.png\" alt=\"\" width=\"96\">\n</p>\n\n<p align=\"center\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/images/wordmark-dark.png\">\n    <img src=\"docs/images/wordmark.png\" alt=\"SSH Manager\" width=\"380\">\n  </picture>\n</p>\n\n<h1 align=\"center\">You give your agents a shell,<br>and you see what they do with it.</h1>\n\n<p align=\"center\">\n  <b>An MCP server for SSH.</b> Let <b>Claude Code</b>, <b>Claude Desktop</b> and <b>OpenAI Codex</b> (or any MCP client)<br>\n  work on your real servers — run commands, move files, query databases, take backups, check health —<br>\n  and watch over their shoulder while they do it.\n</p>\n\n<div align=\"center\">\n\n[![npm version](https://img.shields.io/npm/v/mcp-ssh-manager.svg?style=flat-square&logo=npm&color=c04500)](https://www.npmjs.com/package/mcp-ssh-manager)\n[![npm downloads](https://img.shields.io/npm/dm/mcp-ssh-manager.svg?style=flat-square&logo=npm&color=c04500)](https://www.npmjs.com/package/mcp-ssh-manager)\n[![Version](https://img.shields.io/badge/release-4.0.2-c04500?style=flat-square)](https://github.com/bvisible/mcp-ssh-manager/releases/tag/v4.0.2)\n[![Claude Code](https://img.shields.io/badge/Claude_Code-Compatible-5A67D8?style=flat-square&logo=anthropic)](https://claude.ai/code)\n[![OpenAI Codex](https://img.shields.io/badge/OpenAI_Codex-Compatible-00A67E?style=flat-square&logo=openai)](https://openai.com/codex)\n[![MCP](https://img.shields.io/badge/MCP-Server-orange?style=flat-square)](https://modelcontextprotocol.io)\n[![OpenSSF Scorecard](https://img.shields.io/ossf-scorecard/github.com/bvisible/mcp-ssh-manager?style=flat-square&label=OpenSSF)](https://scorecard.dev/viewer/?uri=github.com/bvisible/mcp-ssh-manager)\n[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/15950/badge)](https://www.bestpractices.dev/projects/15950)\n[![License](https://img.shields.io/badge/License-MIT-blue?style=flat-square)](LICENSE)\n\n</div>\n\n<p align=\"center\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/images/control-plane-dark.gif\">\n    <img src=\"docs/images/control-plane.gif\" alt=\"An agent asks to run rm -rf on production; the request is refused; a live command streams its output; every server is probed for health\" width=\"900\">\n  </picture>\n</p>\n\n<p align=\"center\">\n  <sub>Twenty seconds, unedited — <a href=\"docs/videos/control-plane.mp4\">watch full size</a>. Real SSH, real SFTP, three throwaway hosts on the loopback.</sub>\n</p>\n\n---\n\n## The problem, in one line\n\nAn MCP SSH server is the most dangerous tool you can hand an agent: a shell on machines that matter. Today, when your agent runs something on production, you find out afterwards — if you find out at all.\n\n**This one lets you watch, and lets you say no.** It is also, on the boring days, simply a very good way to let an assistant do the server work you were going to do yourself.\n\n---\n\n## Choose your workspace\n\n**Desktop application (`4.0.2`):** one installation with its own runtime,\nterminal, file browser and server settings. No separate Node.js or npm\ninstallation. [Download it](https://github.com/bvisible/mcp-ssh-manager/releases/tag/v4.0.2):\n\n| Platform | File | Signature |\n|---|---|---|\n| macOS, Apple silicon / Intel | `…-arm64.dmg` / `…-x64.dmg` | **Signed and notarized by Apple** — opens normally |\n| Windows x64 / arm64 | `…-setup.exe` | **Not code-signed in 4.0.x.** Windows shows *\"Windows protected your PC\"*: *More info → Run anyway*. Check the file against the SHA-256 in `release-manifest-win32.json` on the release (`ssh-manager app` does it for you). Signing comes in a later release. |\n| Linux x64 | `.deb`, `.AppImage` | Unsigned, as Linux packages usually are |\n\n**Already using npm / the CLI?** `npm update -g mcp-ssh-manager` brings 4.0.2,\nand the V4 engine runs without an interface, from your existing `.env`, TOML or\nprocess variables — no automatic import, no forced wizard, no approval prompt\nunless you enable one per server. The one behaviour that tightens is **SSH\nhost-key verification**; read that section of the\n[upgrade and rollback guide](docs/MIGRATION.md) before upgrading. To stay on 3.8\nfor now, pin it: `npm install -g mcp-ssh-manager@3`.\n\n**From the engine to the application in one step.** With a V4 engine installed,\n`ssh-manager app` downloads the desktop application of the engine's own version,\nchecks it against the release (size and SHA-256 from the release manifest, and\non macOS Apple's signature and notarization), installs it and opens it — or just\nopens it when it is already there. The browser interface of `ssh-manager control`\noffers the same as one button. Your agents keep using the npm engine; the\napplication is the window on top of it. Nothing is downloaded unless you ask.\n\n**Without npm at all.** The application carries the engine too, and your AI\ntools can start that one: *Options → AI tools* lists Claude Code, Claude Desktop\nand Codex, says which ssh-manager each one starts (npm's, the application's, or\nnone yet) and switches it in one click — no Node, no terminal. The same tab, in\n`ssh-manager control`, shows npm users which version each tool really runs.\nA switch rewrites that tool's one `ssh-manager` entry, keeps its environment\nvariables, and takes effect when the tool next starts; switching back is the\nsame click.\n\n**Updates.** The application checks for a new version at launch and every six\nhours and says so where you will see it: a mark on the sidebar, *Options →\nUpdates* (the running version, the one on offer, a *Check now* button, release\nnotes) and, once per version, a notification. Downloading is a click, and\ninstalling is a second one (*Restart to update*) or happens when you quit. The\nnpm engine updates with npm, on its own schedule. A change to the interface\nreaches npm users with the next npm release and application users with the next\napplication release.\n\n## Up and running with npm\n\n```bash\nnpm install -g mcp-ssh-manager     # or: brew tap bvisible/mcp-ssh-manager https://github.com/bvisible/mcp-ssh-manager && brew install ssh-manager\n\nssh-manager server add             # guided: host, user, key or password\nclaude mcp add ssh-manager mcp-ssh-manager\n```\n\nThat's it. Restart Claude Code and ask it something.\n\n<details>\n<summary>Using Codex, a source checkout, or a project-scoped install?</summary>\n\n<br>\n\n**OpenAI Codex** — same install, then two files. In `~/.codex/config.toml`:\n\n```toml\n[mcp_servers.ssh-manager]\ncommand = \"mcp-ssh-manager\"\nenv = { SSH_CONFIG_PATH = \"/Users/you/.codex/ssh-config.toml\" }\nstartup_timeout_ms = 20000\n```\n\nAnd your servers in `~/.codex/ssh-config.toml`:\n\n```toml\n[ssh_servers.production]\nhost = \"prod.example.com\"\nuser = \"admin\"\nkey_path = \"~/.ssh/id_rsa\"\ndefault_dir = \"/var/www\"\ngroup = \"production\"\n```\n\nEverything below works identically from Codex — same 37 tools, same config fields.\n\n**From source:**\n\n```bash\ngit clone https://github.com/bvisible/mcp-ssh-manager.git\ncd mcp-ssh-manager && npm install\ncd cli && ./install.sh\nclaude mcp add ssh-manager node /absolute/path/to/mcp-ssh-manager/src/index.js\n```\n\nThe MCP engine needs no build. To use the interface (`ssh-manager control`) from a\ncheckout, build it once: `npm run build:ui` (the published package and the desktop\napp already carry it).\n\n**Scopes** — `--scope project` writes an `.mcp.json` your team can commit; `--scope user` enables it everywhere for you.\n\n**Prerequisites** — Node 18+, on Linux, macOS or Windows. `rsync` for `ssh_sync`, `sshpass` only if you sync with password auth (`brew install hudochenkov/sshpass/sshpass`, or `apt-get install sshpass`).\n\n</details>\n\n---\n\n## Then just ask\n\nNo syntax to learn. Your assistant already knows how to use the 37 tools; you talk to it in your own words.\n\n| You say | What happens |\n|---|---|\n| *\"Why is production slow right now?\"* | CPU, memory, disk, load average and the top processes, in one round trip |\n| *\"Back up the database before I deploy.\"* | A compressed, timestamped MySQL/PostgreSQL/MongoDB dump with a retention policy |\n| *\"Tail the nginx error log on staging.\"* | Live output, streamed as it happens |\n| *\"Push ./dist to production:/var/www and restart nginx.\"* | The files out, then the restart — with ownership, permissions and a rollback copy handled |\n| *\"Which of my servers is running out of disk?\"* | Every server in the group, checked in parallel |\n| *\"Open a tunnel to the production database.\"* | Local port forward, so your GUI client just connects |\n| *\"Run `docker ps` on everything tagged production.\"* | One command, the whole group, sequential or parallel |\n\n<p align=\"center\">\n  <img src=\"docs/images/ssh-manager-cli-menu.png\" alt=\"The ssh-manager CLI home screen: version, server count, configuration file and desktop app state above the menu\" width=\"760\">\n</p>\n\n<p align=\"center\">\n  <sub>There is a CLI too, for when you'd rather do it yourself: <code>ssh-manager</code> with no arguments opens this.</sub>\n</p>\n\n---\n\n## Watch over its shoulder — the control plane\n\n> **New in 4.0.0.** The application is opt-in: with no vault and no approval enabled, the engine keeps working headlessly, exactly as 3.8.x. See the [migration guide](docs/MIGRATION.md) for host-key verification and recovery behaviour.\n\n```bash\nssh-manager control          # prints a local URL — or `ssh-manager app` for the desktop app\n```\n\nOne thing in two wrappers. `ssh-manager control` runs the whole interface in a browser tab with nothing extra to install; the desktop builds for macOS, Windows and Linux are that same page with the engine inside them, so they need neither Node nor the npm package.\n\nThe desktop build adds the two things a browser tab cannot do:\n\n- **It lives in the menu bar.** The icon carries a count when something is waiting, and its menu lists what is blocked on you, which shells and commands are open right now, and your servers — so \"is anything waiting on me?\" costs a glance instead of a window switch. Closing the window leaves it there rather than quitting.\n- **It posts real system notifications**, with the application's own identity, so macOS and Windows show and route them properly. Destructive requests stay on screen instead of fading after four seconds. macOS asks your permission the first time it needs to.\n\n<p align=\"center\">\n  <img src=\"docs/images/v4-servers-browser.png\" alt=\"The interface in a browser tab, served by ssh-manager control\" width=\"820\">\n</p>\n\n### Stop it before it runs\n\n<p align=\"center\">\n  <img src=\"docs/images/v4-waiting-app.png\" alt=\"The Waiting screen: a destructive command from an agent, with Refuse and Approve\" width=\"900\">\n</p>\n\nThe agent pauses and waits. You see the machine, the user, the tool, and the command **in full** — wrapped, never truncated, because half a command is how you approve the wrong thing. A desktop notification fires when something is waiting, because the request that goes unseen is the one that times out and is denied.\n\nApproval is switched on **from the interface, per server** — not from a file:\n\n```\nServers → the server → Approval → never (default) | destructive | always\n```\n\nApproval is stored in the vault and cannot be overridden by `.env` or process\nvariables. Editing connection details preserves it. This prevents accidental\nconfiguration overrides from disabling the gate; it is not a security boundary\nagainst a process that already controls your local user account or vault files.\nIf you had `SSH_SERVER_*_APPROVAL` set in a file, the engine says\nso on every start rather than quietly leaving you unprotected.\n\nThe `destructive` list is deliberately short. A prompt that cries wolf gets clicked through without being read, which is worse than no prompt at all: `systemctl restart` does not interrupt you, `systemctl stop` does.\n\nWhen a request requires approval, a timeout, unreachable socket or disconnected control plane denies it. If nothing is listening, start `ssh-manager control` or the desktop app before retrying. Servers with approval disabled keep working headlessly.\n\n### See what it's doing, while it does it\n\n<p align=\"center\">\n  <img src=\"docs/images/v4-live-app.png\" alt=\"The Live screen: a command still running, expanded to show its coloured output\" width=\"900\">\n</p>\n\nOutput goes through a terminal emulator, not a `<pre>` tag — what your agent ran looks exactly like what you'd have seen had you typed it yourself, colours and all. Each stream keeps a bounded scrollback, so opening the screen mid-command shows what came before instead of starting blank.\n\n**Nothing here touches the disk.** A stream can carry secrets — a config being catted, a token echoed by a deploy script — so it lives in memory, capped, and disappears with the window.\n\n### Both filesystems, side by side\n\n<p align=\"center\">\n  <img src=\"docs/images/v4-files-app.png\" alt=\"The file browser: this machine on the left, a server on the right\" width=\"900\">\n</p>\n\nDrag a file across and it moves directly between your machine and the server through the control plane. The browser never holds the bytes — which is faster, and the only way a multi-gigabyte file works at all.\n\n### Health, when you ask for it\n\n<p align=\"center\">\n  <img src=\"docs/images/v4-health-app.png\" alt=\"The Health screen: CPU, memory and disk per server, with a threshold crossed\" width=\"900\">\n</p>\n\n**Nothing is probed in the background.** Each check is an SSH handshake, and a dashboard that connects to every production box on a timer is worse than no dashboard. The button is the whole scheduling policy. Thresholds are yours to set, and crossing one is said in words rather than encoded in a colour.\n\n### A shell on any machine\n\n<p align=\"center\">\n  <img src=\"docs/images/v4-terminal-app.png\" alt=\"The Terminal screen: pick a machine to open a shell on, or manage the commands you keep retyping\" width=\"900\">\n</p>\n\nPick a machine, get a shell — the same one an agent gets, with your keyboard on\nit. Useful for the ordinary reasons, and for the one people ask about most:\nrunning an agent *on* the server rather than pointing one at it.\n\n**Including this machine.** The desktop application opens a shell on your own\ncomputer too, with your login shell and everything you have configured in it, so\nyou are not switching to a different window to run the local half of the same\njob. Open as many as you like, on any mix of machines: each is a tab across the\ntop and an entry in the rail, and switching away leaves it running.\n\nBeside it, the commands you would rather not retype, saved per server or for all\nof them, and picked from a list inside any shell.\n\n### And the rest of it\n\n<p align=\"center\">\n  <img src=\"docs/images/v4-servers-app.png\" alt=\"The Servers screen: cards grouped by category\" width=\"900\">\n</p>\n\nOn the same page: an interactive shell on any server, saved commands you pick from a list instead of retyping, groups you can run one command across, the audit trail of what agents ran and what you decided, and your known host keys.\n\nEvery screenshot above is the desktop build; each has a browser twin in [`docs/images/`](docs/images/). See [ROADMAP-V4.md](ROADMAP-V4.md) for what is built and what isn't.\n\n---\n\n## Safe by default\n\nOther SSH MCP servers hand the agent a shell and wish you luck. This one assumes you'd like some say in the matter.\n\n### Decide how far it can go — per server\n\n| Mode | What the agent can do |\n|---|---|\n| `unrestricted` *(default)* | Everything. Same as any other SSH MCP server, zero overhead. |\n| `readonly` | Mutating tools are refused outright — no deploy, no upload, no sudo, no database import. Reads still work. |\n| `restricted` | Every command must match an allow pattern **and** no deny pattern. Anything else is refused before it reaches the host. |\n\n```env\nSSH_SERVER_PROD_MODE=readonly\nSSH_SERVER_STAGING_MODE=restricted\nSSH_SERVER_STAGING_ALLOW_PATTERNS=^systemctl (status|restart) myapp$;^tail -n \\d+ /var/log/\nSSH_SERVER_PROD_AUDIT_LOG=~/.ssh-manager/audit.jsonl\n```\n\nThis is a second layer under Claude Code's `autoApprove`, which is all-or-nothing per tool: once `ssh_execute` is approved, anything goes. Useful when you're sharing the MCP with a third-party agent, a CI bot, or working on a client's machine. Full reference in **[docs/SECURITY_MODES.md](docs/SECURITY_MODES.md)**.\n\n### Credentials out of the clear-text `.env`\n\n```bash\nssh-manager vault import      # take what you already have, encrypted\nssh-manager vault list        # see it, without ever printing a secret\nssh-manager vault add prod    # add one interactively\nssh-manager vault backup FILE # a copy that survives a new machine\n```\n\nAES-256-GCM, master key in your OS keychain (a `0600` file where there is none — Windows, CI, containers). Only secret *values* are encrypted: hosts, users and modes stay readable, so the file can still be inspected and diffed. GCM is authenticated, so a tampered vault fails loudly instead of handing a wrong password to a production server.\n\n**The key belongs to this machine.** A vault copied to a new laptop is ciphertext nobody can open — `vault backup` writes a copy encrypted under a passphrase you choose, which is what makes the move survivable. Your `.env` is never modified, not by `import`, not by the interface, and a setup half in each is a normal state rather than a broken one. Upgrading changes nothing on its own: see **[docs/MIGRATION.md](docs/MIGRATION.md)**.\n\n### The unglamorous parts, which are the ones that bite\n\n- **Your sudo password never reaches the remote command line.** It travels on the SSH channel's stdin, so it isn't visible in `ps`, in `/proc/<pid>/cmdline`, or in an `auditd` trail — unlike the `echo \"$pass\" | sudo -S` pattern common in this category ([#34](https://github.com/bvisible/mcp-ssh-manager/issues/34)).\n- **Every shell argument is quoted** through one central helper, with a test that drives **340 builder × argument × payload combinations** through a real shell to prove none of them execute.\n- **Read-only SQL is enforced, not suggested.** `ssh_db_query` refuses anything that isn't a `SELECT`.\n- **Vulnerabilities are published, not buried.** [SECURITY.md](SECURITY.md) has the reporting process and every advisory already fixed — including the six in v3.8.6, among them a command injection on the machine running the server, triggered by any SSH server it connects to.\n- **Reproducible installs.** The lockfile is committed, CI installs with `npm ci`, and a test enforces that every dependency resolves to registry.npmjs.org with an integrity hash and no unreviewed install scripts.\n\n---\n\n## Questions people ask\n\n**Can I let an AI agent SSH into my servers safely?**\nYes, if you decide how far it can go. Per server you can make it read-only, allow only commands that match a pattern, or hold every request (or only the destructive ones) until you approve it in the control plane; credentials can live in an encrypted vault instead of a clear-text `.env`; and every command and decision is logged. See [Safe by default](#safe-by-default).\n\n**How do I use Claude Code or Codex with SSH?**\n`npm install -g mcp-ssh-manager`, add a server with `ssh-manager server add`, then `claude mcp add ssh-manager mcp-ssh-manager`. Codex is [set up here](#up-and-running-with-npm). Then ask in plain words: *\"why is production slow?\"*, *\"tail the nginx error log on staging\"*.\n\n**Does it work with Cursor, Windsurf, Cline or another MCP client?**\nIt is a standard stdio MCP server, so any MCP client can run it. Claude Code, Claude Desktop and Codex are the clients documented and tested here. For another one, add what it expects, for example:\n\n```json\n{ \"mcpServers\": { \"ssh-manager\": { \"command\": \"npx\", \"args\": [\"-y\", \"mcp-ssh-manager\"] } } }\n```\n\n**Do I need Node.js?**\nWith npm, yes (Node 18 or later). The desktop application carries its own runtime and engine: install it and connect your AI tools from *Options → AI tools*, with no Node and no npm.\n\n**How is this different from other SSH MCP servers?**\nMost hand the agent a shell. This one lets you choose per server how far it goes, can hold requests until you approve them, keeps an audit trail, and has a desktop app and a browser interface to see it all. It also runs without any of that, as a plain engine configured from a `.env` or a TOML file, if that is what you want.\n\n**Where are my passwords and keys kept?**\nKey files stay where they are. Saved passwords and passphrases can go into the encrypted vault (AES-256-GCM, with the key in your operating system's keychain) rather than a `.env`.\n\n**Is it free?**\nYes, it is MIT-licensed. The source is here, the package is on [npm](https://www.npmjs.com/package/mcp-ssh-manager) and the desktop apps are on the [releases page](https://github.com/bvisible/mcp-ssh-manager/releases).\n\n---\n\n## Reference\n\n<details>\n<summary><b>All 37 tools</b></summary>\n\n<br>\n\n**Core** — always enabled\n\n| Tool | What it does |\n|---|---|\n| `ssh_list_servers` | Every configured server, with its group and mode |\n| `ssh_execute` | Run a command. Falls back to the server's `DEFAULT_DIR` when no `cwd` is given |\n| `ssh_upload` / `ssh_download` | Move a single file either way |\n| `ssh_sync` | Bidirectional rsync, with real transfer counts |\n\n**Backup & restore** (v2.1+)\n\n| Tool | What it does |\n|---|---|\n| `ssh_backup_create` | MySQL, PostgreSQL, MongoDB or files — compressed, with metadata and retention |\n| `ssh_backup_list` | Everything available, with size, date and retention |\n| `ssh_backup_restore` | Restore one, including across databases |\n| `ssh_backup_schedule` | Put it on cron, with automatic cleanup |\n\nSee the [Backup Guide](docs/BACKUP_GUIDE.md) and [examples/backup-workflow.md](examples/backup-workflow.md).\n\n**Health & monitoring** (v2.2+)\n\n| Tool | What it does |\n|---|---|\n| `ssh_health_check` | CPU, memory, disk, network, uptime, load — with an overall verdict |\n| `ssh_service_status` | nginx, mysql, docker… on systemd or sysv |\n| `ssh_process_manager` | List, inspect or kill; sort by CPU or memory |\n| `ssh_alert_setup` | Thresholds, and what happens when one is crossed |\n| `ssh_monitor`, `ssh_tail` | Live resource monitoring and log following |\n\n**Databases** (v2.3+)\n\n| Tool | What it does |\n|---|---|\n| `ssh_db_dump` | MySQL, PostgreSQL, MongoDB; optional gzip, optional table subset |\n| `ssh_db_import` | Import a dump, `.gz` handled automatically |\n| `ssh_db_list` | Databases, or the tables inside one |\n| `ssh_db_query` | **`SELECT` only** — enforced, not suggested |\n\n**Deployment & sessions**\n\n| Tool | What it does |\n|---|---|\n| `ssh_deploy` | Files out, with permissions, backup and restart handled — see the [Deployment Guide](docs/DEPLOYMENT_GUIDE.md) |\n| `ssh_execute_sudo` | Sudo, with the password on stdin rather than the command line |\n| `ssh_session_*` | Persistent shells that keep their context between commands |\n| `ssh_tunnel_*` | Local, remote and SOCKS forwarding |\n\n**Organisation**\n\n| Tool | What it does |\n|---|---|\n| `ssh_alias` | Short names for servers |\n| `ssh_command_alias` | Short names for commands you keep retyping |\n| `ssh_group_*`, `ssh_execute_group` | Run one thing across many machines |\n| `ssh_hooks` | Automation hooks around SSH operations — see [Aliases and Hooks](docs/ALIASES_AND_HOOKS.md) |\n| `ssh_profile` | Swap whole sets of aliases and hooks — `default`, `frappe`, `docker`, `nodejs`, or your own |\n\n</details>\n\n<details>\n<summary><b>Spending less context — tool groups</b></summary>\n\n<br>\n\nAll 37 tools cost roughly **43.5k tokens** of context. Most people don't need all of them.\n\n```bash\nssh-manager tools configure     # interactive wizard\nssh-manager tools list          # what's on right now\nssh-manager tools enable monitoring\nssh-manager tools disable backup\n```\n\n| Mode | Tools | Context | Good for |\n|---|---|---|---|\n| **All** *(default)* | 37 | ~43.5k | The full set |\n| **Minimal** | 5 | ~3.5k | Just SSH, and 92% of the context back |\n| **Custom** | 5–37 | varies | Whatever you actually use |\n\nGroups: **core** (5, always on) · **sessions** (4) · **monitoring** (6) · **backup** (4) · **database** (4) · **advanced** (14).\n\nFewer tools also means fewer approval prompts and a faster start. `ssh-manager tools export-claude` writes the matching auto-approval block.\n\n📖 [Complete guide →](docs/TOOL_MANAGEMENT.md)\n\n</details>\n\n<details>\n<summary><b>Bringing servers in from somewhere else</b></summary>\n\n<br>\n\nNobody starts here. You have a `~/.ssh/config` with forty hosts, or a FileZilla\nsite manager, or a spreadsheet a colleague sent you.\n\n```bash\nssh-manager import ~/.ssh/config          # the format is worked out for you\nssh-manager import --from transmit        # or read where a tool keeps its list\nssh-manager import --template servers.xlsx   # or get a form to fill in\n```\n\n| Source | How |\n|---|---|\n| **Spreadsheet** (`.xlsx`) | `--template` writes one with the columns filled in and three examples to type over |\n| **CSV** | Comma or semicolon — Excel writes both, depending on where you live |\n| **`~/.ssh/config`** | `Host`, `HostName`, `User`, `Port`, `IdentityFile`, `ProxyJump`. Wildcards are skipped, aliases collapse to one server |\n| **FileZilla** | `sitemanager.xml`. SFTP sites only — an FTP bookmark is not an SSH server |\n| **PuTTY** | An exported `.reg`. A `.ppk` key is refused with the `puttygen` line that converts it |\n| **Termius** | JSON export, groups included |\n| **MobaXterm** | `.mxtsessions`, folder becomes the group |\n| **Transmit** | Its favourites, read directly (macOS) |\n\n**Import is additive.** A name you already have comes back as \"already\nconfigured — left alone\", never a silent overwrite; `--replace` if that is what\nyou want. Two rows with the same name become `web` and `web_2` rather than one.\n\n**No password is ever read.** FileZilla keeps them base64-encoded, Transmit in\nthe keychain, PuTTY not at all. Copying a credential out of another\napplication's store is not a favour — it moves a secret you had forgotten into a\nsecond place you now have to think about. Hosts, users, ports and key paths come\nacross; you are asked for a password once, when you first connect.\n\nGoing the other way:\n\n```bash\nssh-manager export servers.xlsx     # or .csv, .env, .toml\n```\n\nExports carry no passwords, no passphrases, no sudo passwords — an export is a\nfile people email each other and commit by accident.\n\n</details>\n\n<details>\n<summary><b>Configuration — every field</b></summary>\n\n<br>\n\nTwo interchangeable formats, read by the same loader: `.env` is the usual choice with Claude Code, TOML with Codex (from `SSH_CONFIG_PATH`, or `~/.codex/ssh-config.toml`). Both can coexist — the loader merges them.\n\n```env\nSSH_SERVER_[NAME]_HOST=hostname_or_ip\nSSH_SERVER_[NAME]_USER=username\nSSH_SERVER_[NAME]_PASSWORD=password          # or use a key\nSSH_SERVER_[NAME]_KEYPATH=~/.ssh/key\nSSH_SERVER_[NAME]_CERTPATH=~/.ssh/key-cert.pub # optional: OpenSSH certificate for KEYPATH\nSSH_SERVER_[NAME]_PASSPHRASE=key_passphrase  # optional\nSSH_SERVER_[NAME]_PORT=22                    # optional\nSSH_SERVER_[NAME]_DEFAULT_DIR=/var/www       # optional working directory\nSSH_SERVER_[NAME]_SUDO_PASSWORD=…            # optional, for automated deploys\nSSH_SERVER_[NAME]_DESCRIPTION=…              # optional\nSSH_SERVER_[NAME]_GROUP=production           # optional, free-form label\nSSH_SERVER_[NAME]_PLATFORM=windows           # optional: linux (default) | windows\nSSH_SERVER_[NAME]_PROXYJUMP=bastion          # optional: another server, as jump host\nSSH_SERVER_[NAME]_PROXYCOMMAND=…             # optional: ncat, ssh -W, …\nSSH_SERVER_[NAME]_FORWARD_AGENT=true         # optional, and a real security trade-off\nSSH_SERVER_[NAME]_ANNOUNCE_AGENT=true        # optional: tell this host an AI agent is driving (off by default)\nSSH_SERVER_[NAME]_MODE=readonly              # optional: unrestricted | readonly | restricted\n# Approval is NOT a field here — it is set per server from the control plane and\n# stored in the vault, so that a shell on one of your machines cannot switch off\n# the gate that exists to stop it.\nSSH_SERVER_[NAME]_AUDIT_LOG=~/audit.jsonl    # optional JSONL trail\n```\n\nThe same thing in TOML:\n\n```toml\n[ssh_servers.production]\nhost = \"prod.example.com\"\nuser = \"admin\"\nkey_path = \"~/.ssh/id_rsa\"\nport = 22\ndefault_dir = \"/var/www\"\ngroup = \"production\"\ndescription = \"Production server\"\n\n[ssh_servers.winhost]\nhost = \"192.168.1.90\"\nuser = \"svc-ssh\"\nkey_path = \"~/.ssh/winhost_key\"\nport = 2222\nplatform = \"windows\"\n\n[ssh_servers.internal]\nhost = \"10.0.0.5\"\nuser = \"admin\"\nproxy_jump = \"bastion\"\n```\n\n**OpenSSH user certificates** — for servers that trust a certificate authority (`TrustedUserCAKeys`), point `CERTPATH` / `cert_path` at the certificate signed for `KEYPATH` (usually `<key>-cert.pub`). It is read on every connection, so a short-lived certificate renewed on disk needs no restart, and a missing file fails the connection instead of falling back to the bare key. It takes effect once `ssh2` ships certificate support ([mscdex/ssh2#1495](https://github.com/mscdex/ssh2/pull/1495)); until then the plain key is offered, as before. `ssh_sync` uses the system `ssh`, which finds `<key>-cert.pub` next to the key on its own.\n\n**Loading order**, highest priority first: process environment → `.env` → the encrypted vault → TOML. A credential you deliberately put in the vault beats one left in a `.env`; an operator overriding for a single run still beats both.\n\n**Profiles** bundle aliases and hooks per project type. Set one with `export SSH_MANAGER_PROFILE=frappe`, or switch from your assistant, which remembers it in `~/.ssh-manager/profile`. Ships with `default`, `frappe`, `docker` and `nodejs`; add your own in `profiles/`. Custom aliases and hooks also live in `~/.ssh-manager/`, so an upgrade keeps them.\n\nMore examples: [examples/codex-ssh-config.example.toml](examples/codex-ssh-config.example.toml).\n\n</details>\n\n<details>\n<summary><b>Getting to machines you can't reach directly</b></summary>\n\n<br>\n\n**Through a bastion** — the tunnel is transparent, every tool works as usual:\n\n```env\nSSH_SERVER_BASTION_HOST=bastion.example.com\nSSH_SERVER_BASTION_USER=jumpuser\nSSH_SERVER_BASTION_KEYPATH=~/.ssh/bastion_key\n\nSSH_SERVER_PRIVATE_HOST=10.0.0.5\nSSH_SERVER_PRIVATE_USER=admin\nSSH_SERVER_PRIVATE_PROXYJUMP=bastion\n```\n\nChains work: if `bastion` itself has a `PROXYJUMP`, it's followed recursively. Circular references are detected and rejected.\n\n**Through a SOCKS proxy or a custom command** — it runs locally and forwards to the host, with `%h` and `%p` for host and port:\n\n```env\nSSH_SERVER_SOCKS_PROXYCOMMAND=\"ncat --proxy 127.0.0.1:1080 --proxy-type socks5 %h %p\"\nSSH_SERVER_WINPROXY_PROXYCOMMAND=\"C:\\Windows\\System32\\OpenSSH\\ssh.exe -W %h:%p user@jump-host\"\n```\n\n**Passphrase-protected keys** — load the key into `ssh-agent` and nothing else is needed; `SSH_AUTH_SOCK` is picked up automatically, the same mechanism plain `ssh` uses. Storing `PASSPHRASE` in the config works too, and is the less good option.\n\n**Agent forwarding** (`FORWARD_AGENT=true`, off by default, per server) lets a process on the remote host authenticate to *other* hosts with your local keys — `git clone` over SSH on a server without copying a private key there.\n\n> ⚠️ Anyone who can read the forwarded socket on that host — **root included** — can impersonate you against other hosts for the life of the connection. Only for servers you trust, exactly as `ssh_config(5)` advises.\n\n**Telling your servers an agent is driving** (`ANNOUNCE_AGENT=true` per server, or `SSH_MANAGER_ANNOUNCE_AGENT=true` for all of them; off by default). Every command channel then carries `AI_AGENT=mcp-ssh-manager`, following the [AI_AGENT over SSH convention](https://github.com/mthamil107/whotyped/blob/main/docs/spec/ai-agent-over-ssh.md), so a host that records it can tell a session an agent drives from one a person drives — SSH cannot otherwise: same key, same user either way. Contributed by [@mthamil107](https://github.com/mthamil107) in [#84](https://github.com/bvisible/mcp-ssh-manager/pull/84).\n\n- **The server has to accept it.** Stock OpenSSH ships `AcceptEnv LANG LC_*` and drops anything else silently. Add `AcceptEnv AI_AGENT` to `sshd_config` and reload; `$AI_AGENT` is then set for every command and shell the agent runs, for a profile, a wrapper or an audit hook to record.\n- **Off by default, for two reasons.** Upgrading must not change what reaches your servers. And the request reaches *every* host whatever its `AcceptEnv` — sshd only declines to store it — so a host you do not control would learn an agent is on the other end, and could shape its output for one. `ANNOUNCE_AGENT=false` keeps one host silent under the global switch.\n- **Covered:** commands, `ssh_tail --follow`, interactive sessions, and `ssh_sync` (via `SendEnv`, supported since OpenSSH 3.9). **Not covered:** SFTP transfers — ssh2 would fail the whole SFTP session on a server that refuses the variable — and port forwards, which have no environment.\n- **A person is never announced.** Everything you do from the control plane — a shell, a file, a health probe, a command across a group — is yours, and reaches the server unlabelled.\n\n**Groups** — tag servers and they become a group, with no extra file to maintain:\n\n```env\nSSH_SERVER_WEB1_GROUP=production\nSSH_SERVER_WEB2_GROUP=production\n```\n\nGroups created with `ssh_group_manage` live in `.server-groups.json` and additionally carry execution settings (strategy, delay, stop-on-error). When a name exists in both places, **membership is the union** and the stored settings apply. Names are case-insensitive. A group that exists only through the `group` field is read-only for `ssh_group_manage` — change membership by editing the servers.\n\n</details>\n\n<details>\n<summary><b>When something goes wrong</b></summary>\n\n<br>\n\n**Claude Code freezes or shows \"Interrupted\"** — almost always an output too large for the context. Output is auto-truncated and the default timeout is two minutes, but you can tune it:\n\n```env\nMCP_SSH_MAX_OUTPUT_LENGTH=5000    # default 10000 characters\nMCP_SSH_DEFAULT_TIMEOUT=180000    # default 120000 ms\nMCP_SSH_COMPACT_JSON=true         # fewer tokens per response\n```\n\nAnd prefer `tail -n 100 huge.log` over `cat huge.log` — the same advice you'd give a colleague.\n\n**Tools don't show up** — `claude mcp list`, then restart Claude Code. `/mcp` inside Claude Code shows the live status.\n\n**Connection failed** — `ssh-manager server test <name>` first; it tells you whether it's DNS, the firewall, or the credentials.\n\n**Permission denied** — check `chmod 600 ~/.ssh/your_key`, then the username, then what that user is allowed to do on the host.\n\nStill stuck? [Open an issue](https://github.com/bvisible/mcp-ssh-manager/issues) — include the server's `PLATFORM` and what `ssh-manager server test` said.\n\n**Known limitations, honestly:**\n\n- **Command timeouts are advisory.** ssh2 can't kill a remote process; on Linux and macOS hosts a `timeout` wrapper does it properly. On Windows hosts set `PLATFORM=windows` to skip that wrapper, which OpenSSH for Windows doesn't understand.\n- **`ssh_sync` with password auth needs `sshpass`.** Keys are better anyway. On a Windows host, pass native paths like `local:C:\\project` — drive-letter and UNC paths are converted to MSYS2 form, and a path already written as `/c/...` is passed through untouched rather than converted twice.\n- **Connections are pooled and reused.** A stale one reconnects on next use; force it with `ssh_connection_status` and the `reconnect` action.\n\n</details>\n\n<details>\n<summary><b>Working on the project</b></summary>\n\n<br>\n\n```bash\ngit clone https://github.com/bvisible/mcp-ssh-manager.git\ncd mcp-ssh-manager && npm ci\n./scripts/setup-hooks.sh      # pre-commit checks, including secret detection\n\nnpm test                      # 43 suites\nnpm run typecheck             # JSDoc through tsc, no build step\nnpm run test:all              # both, plus ./scripts/validate.sh\nnpm run test:preview          # isolated candidate fixture, restart and cleanup\n```\n\nThe layout:\n\n```\nsrc/          index.js is the MCP server and its 37 tools; one module per domain\n              (ssh-manager, config-loader, session-manager, backup-manager,\n               health-monitor, database-manager, tunnel-manager, server-groups…)\ncli/          the Bash CLI, plus the Node wrapper that makes it work on Windows\nui/           the control plane's React interface (v4)\ndesktop/      the Electron build (v4)\nprofiles/     frappe, docker, nodejs — and room for yours\nscripts/      validation, and the rig that regenerates every screenshot and the video\ndocs/         guides, migration notes, security modes\n```\n\nPull requests are welcome — [CONTRIBUTING.md](CONTRIBUTING.md) has the details. Shipping the desktop builds — signing, notarization, and why the Mac App Store is a different product rather than a further step — is in [docs/DISTRIBUTION.md](docs/DISTRIBUTION.md).\n\nNothing in this README's imagery is taken by hand. `scripts/demo-env.mjs` stands up three real ssh2 servers on the loopback with a seeded vault, a pending approval and a live stream; `capture-screenshots.mjs` and `record-demo.mjs` drive Chrome over the DevTools protocol against it; `frame-screenshots.py` draws the browser and application windows, and `macbook-mockup.py` draws the laptop. After a UI change, re-run them rather than editing an image.\n\nThe hero animation ships twice, light and dark, swapped by `<picture>` on `prefers-color-scheme`. A single transparent GIF would have been simpler, but GIF alpha is one bit and transparency defeats its inter-frame compression: the same clip came out at **11.4 MB** transparent against 357 KB on a solid ground.\n\n</details>\n\n---\n\n## What's new\n\n**[4.0.2](https://github.com/bvisible/mcp-ssh-manager/releases/tag/v4.0.2) — commands reach a Mac, and the desktop terminal is your own.** Commands sent to a macOS server no longer fail with `timeout: command not found` before they start (thanks to Henrik Tilly, [#115](https://github.com/bvisible/mcp-ssh-manager/pull/115)); the desktop terminal starts a login shell, so what Homebrew installed is found as in Terminal or Warp, and PowerShell on Windows; keystrokes reach the shell in the order they were typed; dependencies refreshed. Nothing to change on upgrade.\n\n**[4.0.1](https://github.com/bvisible/mcp-ssh-manager/releases/tag/v4.0.1) — the application tells you about updates.** *Options → Updates*, a mark on the sidebar and a notification once per version, so a new release no longer goes unnoticed in a menu you never open; a tidier Servers toolbar; the interface is built when the package is made rather than committed (what you install is byte for byte the same); and the npm, registry and GitHub descriptions say what V4 is. No change to the engine's behaviour.\n\n**[4.0.0](https://github.com/bvisible/mcp-ssh-manager/releases/tag/v4.0.0) — the control plane.** See what an agent is running on your servers, with its output, and stop it before it runs. A desktop application for macOS, Windows and Linux, installed from the engine with `ssh-manager app`; an encrypted vault for credentials; human approval per server; a shell on your own machine alongside the remote ones. Everything new is opt-in — an npm install upgraded from 3.8.x keeps behaving as 3.8.x, which [a test installs from the registry and proves](docs/TESTING-V4.md). The Windows application is not code-signed in this release. [What changes and how to go back](docs/MIGRATION.md).\n\n**v3.8.7 — a security release; upgrade.** Two advisories fixed: a partial server name or an alias escaped `readonly` and `restricted` mode ([GHSA-mq9f-5385-rjf4](https://github.com/bvisible/mcp-ssh-manager/security/advisories/GHSA-mq9f-5385-rjf4)), and `ssh_backup_restore`'s `backupId` ran commands on the server ([GHSA-2wjh-xm9c-7qf9](https://github.com/bvisible/mcp-ssh-manager/security/advisories/GHSA-2wjh-xm9c-7qf9)). See the [CHANGELOG](CHANGELOG.md#387---2026-10-25).\n\n**v3.8.6 — a security release; upgrade.** Six advisories fixed. The default `on-error` hook let any SSH server you connect to run a command on your machine; `restricted` mode only checked how a line started; `ssh_db_query` could write; host keys were never compared. See the [CHANGELOG](CHANGELOG.md#386---2026-10-08).\n\n**v3.8.5 — a security release.** Three command-injection advisories fixed, one of which defeated `readonly` mode. Upgrade if you use `ssh_backup_*`, `ssh_db_dump`, `ssh_service_status` or `ssh_tail`.\n\n- **RCE bypassing `readonly` / `restricted`** ([GHSA-m793-whw6-f537](https://github.com/bvisible/mcp-ssh-manager/security/advisories/GHSA-m793-whw6-f537)) — `ssh_service_status` and `ssh_tail` are read-only, so they stay enabled on servers you locked down, and neither quoted its arguments nor consulted the policy layer. A service name like `nginx; id > /tmp/pwned` executed.\n- **RCE through `ssh_db_dump`** ([GHSA-796j-h5q5-jx6p](https://github.com/bvisible/mcp-ssh-manager/security/advisories/GHSA-796j-h5q5-jx6p)) — the `stat` run after the dump interpolated the output path raw. The v3.6.7 patch had stopped one line short.\n- **RCE through every `ssh_backup_*` tool** ([GHSA-qwwm-vrm9-4mw8](https://github.com/bvisible/mcp-ssh-manager/security/advisories/GHSA-qwwm-vrm9-4mw8)) — `backup-manager.js` had zero shell escaping across its nine builders while `database-manager.js` had 95.\n\nQuoting now lives in one module so \"did this builder quote its inputs?\" has a single answer.\n\n[Full changelog, every release back to v1.0.0 →](CHANGELOG.md)\n\n---\n\n<div align=\"center\">\n\n**[Documentation](docs/)** · **[Changelog](CHANGELOG.md)** · **[Security policy](SECURITY.md)** · **[Roadmap](ROADMAP-V4.md)** · **[Issues](https://github.com/bvisible/mcp-ssh-manager/issues)**\n\n<br>\n\nBuilt on the [Model Context Protocol](https://modelcontextprotocol.io), with [ssh2](https://github.com/mscdex/ssh2) doing the hard part.\nMIT licensed — see [LICENSE](LICENSE).\n\n<br>\n\nMade with ❤️ for the Claude Code community\n\n<br><br>\n\n<a href=\"https://glama.ai/mcp/servers/@bvisible/mcp-ssh-manager\">\n  <img width=\"380\" height=\"200\" src=\"https://glama.ai/mcp/servers/@bvisible/mcp-ssh-manager/badge\" alt=\"SSH Manager MCP server\" />\n</a>\n\n[![MCP Toplist](https://mcptoplist.com/badge/glama%2Fbvisible%2Fmcp-ssh-manager.svg)](https://mcptoplist.com/server/glama%2Fbvisible%2Fmcp-ssh-manager)\n\n</div>\n\n## Validation before a release\n\nThe [V4 testing guide](docs/TESTING-V4.md) describes the offline suites, real npm\n3.8.5 → V4 → rollback checks, browser flows, and platform release gates.\nUse the [final V4 test guide](docs/FINAL-TEST-V4.md) to review the actual npm\npackage or desktop candidate with a disposable profile before publication.\n","readmeFilename":"README.md"}