SSH-MCP is a SSH management MVP server that provides
- SOC2 Compliant: Full compliance with enterprise security standards
- AES-256-GCM Encryption: Military-grade encryption for credentials at rest
- Multi-Factor Authentication: Support for TOTP, SMS, hardware tokens, and biometric auth
- Circuit Breaker Protection: 8 resilient circuits protecting all critical services
- Comprehensive Audit Trails: Complete logging with compliance reporting
- Context-Aware Assistance: Real-time command suggestions based on current context
- Technology Detection: Automatic project stack identification and recommendations
- Pattern Recognition: ML-powered learning from command history
- Community Intelligence: GitHub pattern mining and best practice discovery
- Predictive Operations: Anticipate issues using trend analysis
- 89 Specialized Tools: Comprehensive toolset across 10 major categories
- Multi-Framework Support: Laravel, Node.js, React, Go, Rust, Kubernetes
- Smart File Operations: Operational transforms with multiple fallback strategies
- Zero-Downtime Deployments: Intelligent deployment strategies
- Performance Benchmarking: Industry-standard comparisons
- Real-Time Monitoring: Performance metrics and system health tracking
- Compliance Frameworks: SOC2, GDPR, NIST, HIPAA, PCI-DSS, ISO 27001
- Error Analysis: Intelligent error diagnosis with MCP orchestration
- Alert Management: Proactive alerting with automatic remediation
- Installation
- Quick Start
- Configuration
- Tool Categories
- Security
- API Reference
- Examples
- Contributing
- License
- Node.js 18+ and npm/yarn
- Claude Code CLI with MCP support
- SSH access to target servers
- Git for version control
# Clone the repository
git clone https://github.com/LYFTIUM-INC/ssh-mcp.git
cd ssh-mcp
# Install dependencies
npm install
# Build the project
npm run build
# Configure Claude Code
claude mcp add /path/to/ssh-mcp
Create a .env
file in the project root:
# Example server configuration
MY_SERVER_HOST=example.com
MY_SERVER_PORT=22
MY_SERVER_USERNAME=user
MY_SERVER_PASSWORD=secure_password
MY_SERVER_DEFAULT_DIR=/home/user
MY_SERVER_DESCRIPTION=Production Server
# Performance Tuning
SSH_MAX_POOL_SIZE=1000 # Maximum concurrent connections
SSH_MIN_POOL_SIZE=10 # Minimum pooled connections
SSH_COMMAND_TIMEOUT=60000 # Command timeout in milliseconds
// Quick connect to predefined server
const session = await quickConnect({ serverName: "my-server" });
// Execute commands
const result = await executeRemoteCommand({
sessionId: session.id,
command: "ls -la"
});
console.log(result.stdout);
// Get intelligent command suggestions
const suggestions = await getIntelligentCommandHelp({
sessionId: session.id,
command: "find",
currentDirectory: "/home/user"
});
// Detect project technology
const tech = await detectProjectTechnology({
sessionId: session.id,
projectPath: "/home/user/project"
});
SSH-MCP uses environment variables for server configuration. Each server requires:
# Server naming convention: SERVERNAME_PROPERTY
SERVERNAME_HOST=hostname.com
SERVERNAME_PORT=22
SERVERNAME_USERNAME=username
SERVERNAME_PASSWORD=password # Optional if using key
SERVERNAME_PRIVATE_KEY=key_content # Optional if using password
SERVERNAME_PRIVATE_KEY_PATH=/path # Optional path to key file
SERVERNAME_PASSPHRASE=passphrase # Optional for encrypted keys
SERVERNAME_DEFAULT_DIR=/home/user # Optional default directory
SERVERNAME_DESCRIPTION=Description # Optional server description
Add SSH-MCP to Claude Code:
# Add the MCP server
claude mcp add ssh-mcp
# Configure with environment variables
claude mcp configure ssh-mcp --env MY_SERVER_HOST=example.com --env MY_SERVER_USERNAME=user
Cursor Configuration
Add to ~/.cursor/settings.json
:
{
"mcp.servers": {
"ssh-mcp": {
"command": "node",
"args": ["/path/to/ssh-mcp/build/index.js"],
"env": {
"NODE_PATH": "/path/to/ssh-mcp/node_modules"
}
}
}
}
Windsurf Configuration
Add to ~/.windsurf/settings.json
:
{
"mcp": {
"mcpServers": {
"ssh-mcp": {
"command": "node",
"args": ["/path/to/ssh-mcp/build/index.js"],
"env": {
"NODE_PATH": "/path/to/ssh-mcp/node_modules"
}
}
}
}
}
quick_connect
- Connect to predefined serverslist_predefined_servers
- List configured serverscreate_ssh_session
- Create custom SSH sessionslist_sessions
- View active sessionsclose_session
- Terminate sessionsget_performance_metrics
- Real-time performance dataget_security_metrics
- Security posture information
execute_remote_command
- Run commands remotelytransfer_file
- Upload/download filesclose_session
- Clean session termination
store_credential
- Secure credential storageretrieve_credential
- Secure credential retrievallist_credentials
- Credential managementrotate_credential
- Automatic rotationdelete_credential
- Secure deletionconfigure_mfa
- Multi-factor authenticationget_credential_protection_stats
- Security metricsget_credentials_requiring_rotation
- Rotation managementget_credential_access_logs
- Audit trailsget_circuit_breaker_status
- Circuit healthreset_circuit_breaker
- Manual recovery
get_intelligent_command_help
- Context-aware assistanceget_technology_documentation
- Real-time docsdetect_project_technology
- Auto-detectionsearch_github_patterns
- Pattern discoverydiscover_best_practices
- Best practicesget_community_insights
- Community wisdomcreate_or_update_sitemap
- Sitemap generationget_monitoring_insights
- Intelligent monitoring
record_command_memory
- Pattern recognitionget_command_suggestions
- Smart suggestionsget_learning_insights
- Learning analysisget_memory_statistics
- Memory metricspersist_ssh_operation
- Long-term storage
-
Laravel/PHP (2 tools)
laravel_artisan_command
- Artisan commandslaravel_deploy
- Zero-downtime deployment
-
Node.js (2 tools)
nodejs_process_management
- PM2 integrationnodejs_realtime_setup
- Real-time features
-
React/Next.js (1 tool)
react_smart_component_edit
- Intelligent editing
-
Go (3 tools)
go_module_init
- Module initializationgo_test_generation
- Test generationgo_dependency_audit
- Security audit
-
Rust (3 tools)
rust_project_setup
- Project creationrust_async_patterns
- Async patternsrust_memory_optimization
- Memory optimization
-
Kubernetes (1 tool)
kubernetes_deploy
- Auto-scaling deployment
get_error_monitoring_stats
- Error statisticsget_active_alerts
- Active alertsget_error_analysis
- Error diagnosisacknowledge_alert
- Alert managementresolve_alert
- Alert resolutionget_circuit_breaker_status
- Circuit statusreset_circuit_breaker
- Circuit recoveryanalyze_workflow_patterns
- Pattern analysis
run_compliance_assessment
- Compliance checksget_compliance_status
- Status monitoringgenerate_compliance_report
- Report generationcheck_compliance_control
- Control verificationget_data_retention_compliance
- Data complianceget_privacy_compliance
- Privacy complianceremediate_compliance_violation
- Remediationget_compliance_statistics
- Metricsexport_compliance_data
- Data export
safe_file_edit
- Multi-strategy editingsmart_file_edit
- Operational transformssetup_testing_suite
- Test framework setupcreate_intelligent_backup
- Smart backupsrestore_from_backup
- Intelligent restoreanalyze_backup_patterns
- Backup optimizationml_code_analysis
- AI code analysispredict_next_commands
- Command predictionoptimize_workflow_with_ml
- ML optimization
- Never commit credentials: Use environment variables
- Rotate credentials regularly: Set rotation schedules
- Use MFA: Enable multi-factor authentication
- Audit access: Review credential access logs
- Encrypt sensitive data: All credentials encrypted at rest
- Encryption: AES-256-GCM for data at rest
- Key Management: Secure key storage and rotation
- Access Control: Role-based access control
- Audit Logging: Complete audit trail
- Compliance: SOC2, GDPR, NIST compliant
- Configure comprehensive
.gitignore
- Set up credential rotation schedules
- Enable MFA for production access
- Configure compliance monitoring
- Review audit logs regularly
// Quick connect to predefined server
quickConnect(params: { serverName: string }): Promise<{ sessionId: string }>
// Create custom SSH session
createSSHSession(params: {
host: string
username: string
password?: string
privateKey?: string
port?: number
}): Promise<{ sessionId: string }>
// List active sessions
listSessions(): Promise<Session[]>
// Get performance metrics
getPerformanceMetrics(): Promise<PerformanceData>
// Execute remote command
executeRemoteCommand(params: {
sessionId: string
command: string
}): Promise<{
exitCode: number
stdout: string
stderr: string
}>
// Transfer files
transferFile(params: {
sessionId: string
localPath: string
remotePath: string
direction: "upload" | "download"
}): Promise<void>
// Get intelligent command help
getIntelligentCommandHelp(params: {
sessionId: string
command: string
currentDirectory?: string
}): Promise<{
suggestions: CommandSuggestion[]
contextualHelp: string
bestPractices: string[]
}>
// Detect project technology
detectProjectTechnology(params: {
sessionId: string
projectPath: string
}): Promise<{
primary: string
secondary: string[]
confidence: number
}>
// Connect and execute commands
const session = await quickConnect({ serverName: "production" });
const result = await executeRemoteCommand({
sessionId: session.id,
command: "docker ps"
});
console.log(result.stdout);
// Smart file editing with operational transforms
await smartFileEdit({
sessionId: session.id,
filePath: "/home/user/app.js",
operations: [{
id: "op1",
type: "replace",
oldContent: "const port = 3000",
content: "const port = process.env.PORT || 3000"
}],
strategy: {
type: "operational_transform",
validation: {
syntaxCheck: true,
lintCheck: true
}
}
});
// Zero-downtime Laravel deployment
await laravelDeploy({
sessionId: session.id,
projectPath: "/var/www/app",
environment: "production",
strategy: "blue-green"
});
// Generate SOC2 compliance report
const report = await generateComplianceReport({
framework: "soc2",
startDate: "2024-01-01",
endDate: "2024-12-31"
});
// Export for external audit
const exportData = await exportComplianceData({
format: "pdf"
});
We welcome contributions! Please see our Contributing Guide for details.
# Clone and install
git clone https://github.com/LYFTIUM-INC/ssh-mcp.git
cd ssh-mcp
npm install
# Run tests
npm test
# Build
npm run build
# Watch mode
npm run watch
# Lint
npm run lint
Found a security issue? Please email andre@optinampout.com instead of using the issue tracker.
This project is licensed under the MIT License - see the LICENSE file for details.
- Andre (OptinampOut) - Lead developer and architect
- Claude Code assistance - AI-powered development support
- Claude and Anthropic for MCP framework
- The open-source community for inspiration
- All contributors and testers
- Documentation: Complete Tool Documentation
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Business Inquiries: andre@optinampout.com
SSH-MCP - Transforming remote development with AI-powered intelligence and enterprise-grade security.