ssh-client-mcp
SSH/SFTP MCP Server - Execute remote commands and transfer files via SSH for Claude AI
Install / Use
claude mcp add veithly -- npx -y github:veithly/ssh-client-mcpIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
Development & EngineeringSupported Platforms
Tags
Our assessment of ssh-client-mcp
ssh-client-mcp scores 74/100 on our quality scale, 3701st of 4,575 Development & Engineering skills we index.
Its MCP Server is 8.4 KB long, well organised into 37 sections with 16 code examples: a thorough specification that gives an agent plenty to work with.
It has 3 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated about 10 months ago. That is recent enough to be usable, but agent tooling moves fast, so check the instructions against your agent's current version.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 81/100, with 3 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
ssh-client-mcp compared with similar skills
All 4 of these similar skills score higher than ssh-client-mcp; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| ssh-client-mcp (this skill)by veithly | 74 | 3 | 10mo ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 93.6k | today | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 74.6k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.3k | today | CLAUDE.md |
| ai-job-searchby MadsLorentzen | 100 | 45.2k | 2d ago | CLAUDE.md |
Frequently asked questions
- How do I install ssh-client-mcp?
- Run
claude mcp add veithly -- npx -y github:veithly/ssh-client-mcp. The install tabs above show the steps for each supported agent. - Which AI agents does ssh-client-mcp work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is ssh-client-mcp safe to use?
- It is MIT-licensed and scores 81/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is ssh-client-mcp still maintained?
- The repository was last updated about 10 months ago. That is recent enough to be usable, but agent tooling moves fast, so check the instructions against your agent's current version.
Skill content
View source on GitHubSSH/SFTP MCP Server
English | 中文
A Model Context Protocol (MCP) server that enables AI assistants like Claude to execute SSH commands and perform SFTP file operations on remote servers.
Features
- Server Configuration Management - Define servers in config files or environment variables
- Connection Testing - Test server connectivity before establishing sessions
- SSH Command Execution - Run commands remotely with optional sudo support
- SFTP File Operations - Upload, download, list, create, and delete files/directories
- Session Management - Auto-cleanup of idle sessions, connection pooling
- Multiple Auth Methods - Password and private key authentication
Installation
Using npx (Recommended)
npx ssh-client-mcp
Using npm
npm install -g ssh-client-mcp
From Source
git clone https://github.com/veithly/ssh-client-mcp.git
cd ssh-client-mcp
npm install
npm run build
Quick Start
Configure Claude Desktop
Add to your Claude Desktop configuration file:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
Option 1: CLI Arguments (Recommended)
Configure server directly via command line arguments:
{
"mcpServers": {
"ssh": {
"command": "npx",
"args": [
"ssh-client-mcp",
"--host", "192.168.1.100",
"--user", "admin",
"--password", "your-password"
]
}
}
}
With private key authentication:
{
"mcpServers": {
"ssh": {
"command": "npx",
"args": [
"ssh-client-mcp",
"--host", "192.168.1.100",
"--user", "admin",
"--key", "~/.ssh/id_rsa"
]
}
}
}
With private key + passphrase:
{
"mcpServers": {
"ssh": {
"command": "npx",
"args": [
"ssh-client-mcp",
"--host", "192.168.1.100",
"--user", "admin",
"--key", "~/.ssh/id_rsa",
"--passphrase", "your-key-passphrase"
]
}
}
}
Available CLI Arguments:
| Argument | Short | Description |
|----------|-------|-------------|
| --host | -h | Server hostname or IP |
| --port | -p | SSH port (default: 22) |
| --user | -u | SSH username |
| --password | | SSH password |
| --key | -k | Path to private key file |
| --passphrase | | Passphrase for private key |
| --id | | Server ID (default: "cli") |
| --name | | Server display name |
Option 2: Config File
Create a servers.json file in the working directory:
{
"servers": [
{
"id": "my-server",
"name": "My Server",
"host": "192.168.1.100",
"port": 22,
"username": "admin",
"password": "your-password"
}
],
"defaultServer": "my-server"
}
Option 3: Environment Variables
SSH_SERVER_DEV_HOST=192.168.1.100
SSH_SERVER_DEV_PORT=22
SSH_SERVER_DEV_USERNAME=admin
SSH_SERVER_DEV_PASSWORD=your-password
SSH_SERVER_DEV_NAME=Development Server
Then restart Claude Desktop to load the MCP server.
Available Tools (18 total)
Server Management
| Tool | Description |
|------|-------------|
| ssh_list_servers | List all configured servers |
| ssh_get_server | Get details of a specific server |
| ssh_test_connection | Test connection to a server |
| ssh_test_all_connections | Test all configured servers |
| ssh_connect_by_id | Connect using server ID from config |
Connection Management
| Tool | Description |
|------|-------------|
| ssh_connect | Establish SSH connection with credentials |
| ssh_disconnect | Close an SSH session |
| ssh_list_sessions | List all active SSH sessions |
Command Execution
| Tool | Description |
|------|-------------|
| ssh_exec | Execute a command on the remote server |
| ssh_sudo_exec | Execute a command with sudo privileges |
File Operations (SFTP)
| Tool | Description |
|------|-------------|
| sftp_upload | Upload a local file to the remote server |
| sftp_download | Download a file from the remote server |
| sftp_ls | List contents of a remote directory |
| sftp_mkdir | Create a directory on the remote server |
| sftp_rm | Remove a file or directory |
| sftp_stat | Get file/directory information |
| sftp_read | Read contents of a remote file |
| sftp_write | Write content to a remote file |
Usage Examples
List Configured Servers
Tool: ssh_list_servers
Arguments: {}
Test Connection
Tool: ssh_test_connection
Arguments: {
"serverId": "my-server"
}
Connect to Server
Tool: ssh_connect_by_id
Arguments: {
"serverId": "my-server"
}
Execute Command
Tool: ssh_exec
Arguments: {
"sessionId": "<session-id>",
"command": "ls -la /home"
}
Upload File
Tool: sftp_upload
Arguments: {
"sessionId": "<session-id>",
"localPath": "/local/path/file.txt",
"remotePath": "/remote/path/file.txt"
}
Download File
Tool: sftp_download
Arguments: {
"sessionId": "<session-id>",
"remotePath": "/remote/path/file.txt",
"localPath": "/local/path/file.txt"
}
Configuration Options
Environment Variables
| Variable | Description | Default |
|----------|-------------|---------|
| SESSION_TIMEOUT | Session timeout in milliseconds | 1800000 (30 min) |
| MAX_SESSIONS | Maximum concurrent sessions | 100 |
| SSH_CONNECTION_TIMEOUT | Connection timeout in milliseconds | 30000 |
| SSH_DEFAULT_SERVER | Default server ID | - |
Server Configuration Fields
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| id | string | Yes | Unique server identifier |
| name | string | Yes | Display name |
| host | string | Yes | Hostname or IP address |
| port | number | No | SSH port (default: 22) |
| username | string | Yes | SSH username |
| password | string | No* | SSH password |
| privateKeyPath | string | No* | Path to private key file |
| passphrase | string | No | Passphrase for private key |
| description | string | No | Server description |
| tags | string[] | No | Tags for filtering |
*Either password or privateKeyPath must be provided.
Security Considerations
- Sessions auto-expire after 30 minutes of inactivity
- Maximum session limit prevents resource exhaustion
- Credentials are not stored persistently
- Sudo passwords are not logged
- Use SSH keys instead of passwords when possible
Development
# Clone the repository
git clone https://github.com/veithly/ssh-client-mcp.git
cd ssh-client-mcp
# Install dependencies
npm install
# Build
npm run build
# Watch mode
npm run dev
# Clean build
npm run clean
Project Structure
ssh-client-mcp/
├── src/
│ ├── index.ts # MCP server entry point
│ ├── types.ts # Type definitions
│ ├── SessionManager.ts # SSH session lifecycle
│ ├── SSHExecutor.ts # Command execution
│ ├── SFTPOperations.ts # SFTP file operations
│ ├── ConnectionTester.ts # Connection testing
│ ├── config/
│ │ ├── ConfigManager.ts # Configuration management
│ │ ├── types.ts # Config types
│ │ └── index.ts # Config exports
│ └── tools/
│ ├── connection.ts # Connection tools
│ ├── command.ts # Command tools
│ ├── file.ts # File tools
│ ├── server.ts # Server management tools
│ └── index.ts # Tool exports
├── servers.example.json # Example server config
├── .env.example # Example environment config
├── package.json
├── tsconfig.json
└── README.md
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
License
MIT © 2024
Acknowledgments
- Model Context Protocol - The MCP SDK
- ssh2 - SSH2 client library for Node.js
Made for Claude AI
Related Skills
Agent-Reach
93.6kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
74.6kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
CowAgent
47.3kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
ai-job-search
45.2kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
