Skip to main content
Glama
vilasone455

SSH MCP Server

by vilasone455
README.md
# SSH MCP Server

**SSH MCP Server** is a local Model Context Protocol (MCP) server that exposes SSH control for Linux and Windows systems, enabling LLMs and other MCP clients to execute shell commands securely via SSH.

---

## Features

* MCP-compliant server exposing SSH capabilities
* Execute shell commands on remote Linux and Windows systems
* Secure authentication via password or SSH key
* Read-only mode with built-in security checks
* Built with TypeScript and the official MCP SDK

### Available Tools

| Tool                        | Description                                              |
| --------------------------- | -------------------------------------------------------- |
| `get_available_connections` | Lists machines available to connect via SSH              |
| `create_connection`         | Opens a new SSH session and tracks it by `connection_id` |
| `get_connections`           | Lists all active SSH sessions                            |
| `execute_command`           | Runs a shell command (unrestricted)                      |
| `secure_execute_command`    | Safer command execution; blocks destructive actions      |
| `close_connection`          | Closes an active SSH session                             |

---

## Quick Start

### 1. Clone the repository

```bash
$ git clone https://github.com/vilasone455/ssh-mcp-server.git
```

### 2. Create machine config

Create a `machines.json` file with the following structure:

```json
[
   {
    "machine_id": "todo-server-01",
    "label": "Todo server",
    "os": "ubuntu",
    "source": "digitalocean",
    "ssh": {
      "host": "192.168.1.11",
      "port": 22,
      "username": "user",
      "password": "your_password_here"
    }
  },
  {
    "machine_id": "build-agent-01",
    "label": "CI Build Agent (Key Auth)",
    "os": "ubuntu",
    "source": "aws",
    "ssh": {
      "host": "192.168.1.12",
      "port": 22,
      "username": "ubuntu",
      "keyPath": "/home/ubuntu/.ssh/id_rsa"
    }
  }

]
```

---

## Client Setup (Claude Desktop Example)

To integrate this MCP server into Claude Desktop, add both the server command and the required environment variable:

```jsonc
{
  "mcpServers": {
    "ssh-mcp": {
      "command": "node",
      "args": [
        "/path/to/ssh-mcp-server/dist/index.js"
      ],
      "env": {
        "MACHINES_PATH": "/path/to/your/machines.json"
      }
    }
  }
}
```

Now you can interact with your server using natural language, e.g., "Run `uptime` on Todo VM."

---

## Disclaimer

Use at your own risk. This server grants shell-level access via MCP. Review commands carefully and run in a secure environment.

---

## Contributing

Star the repo, open issues, and submit pull requests! Feedback is welcome.

---

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation4/5

Most tools have distinct purposes, but 'execute_command' and 'secure_execute_command' could cause confusion as they differ only by a safety constraint, not by target resource or action. The other tools (connection management and listing) are clearly separated.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with snake_case, such as 'create_connection', 'execute_command', and 'get_connections'. This predictability makes the set easy to navigate and understand.

Tool Count5/5

With 6 tools, the server is well-scoped for SSH operations, covering connection lifecycle (create, close, list), command execution (with safety variants), and machine discovery. Each tool earns its place without bloat or thinness.

Completeness4/5

The toolset covers core SSH workflows: establishing and managing connections, executing commands (with a read-only safety option), and discovering available machines. A minor gap is the lack of file transfer tools (e.g., upload/download), but agents can work around this using command execution.

Maintenance

ActivityInactive
ResponsivenessNo issues