1. Conduid
  2. Developer Tools
  3. Ssh MCP Server
MCP server · Developer Tools

Ssh MCP Server

A powerful SSH/SFTP MCP server with multi-instance support and intelligent configuration discovery

Unclaimed MIT devtools
53Fair

Scored 5 days ago · breakdown

About Ssh MCP Server

Ssh MCP Server is an MCP server published by Cigarliu in the Developer Tools category: a powerful SSH/SFTP MCP server with multi-instance support and intelligent configuration discovery.

The repository has 13 stars and 5 forks, with the last commit 2 months ago. Recent commit activity is the strongest signal that reported issues will get attention.

Install

From source
git clone https://github.com/Cigarliu/ssh-mcp-server

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

✦

Ask AI about Ssh MCP Server

Powered by Claude · Grounded in docs

I know everything about Ssh MCP Server. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

Static checks derived from the repository 6 days ago. Heuristics on the source, not an audit.

  • ✓README presentThe repository ships documentation.
  • ✓License declaredUsable under a stated license.
  • ✓Tests presentA test suite exists in the repository.
  • ✓Dependencies pinnedA lockfile pins dependency versions.
  • ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

Releases

v1.0.6v1.0.6 · 21 Aug 2026Full Changelog: https://github.com/Cigarliu/ssh-mcp-server/compare/v1.0.5...v1.0.6
v1.0.5v1.0.5 · 21 Aug 2026Full Changelog: https://github.com/Cigarliu/ssh-mcp-server/compare/v1.0.4...v1.0.5
v1.0.4v1.0.4 · 20 Aug 2026Full Changelog: https://github.com/Cigarliu/ssh-mcp-server/compare/v1.0.3...v1.0.4
v1.0.3v1.0.3 · 20 Aug 2026Full Changelog: https://github.com/Cigarliu/ssh-mcp-server/compare/v1.0.2...v1.0.3
v1.0.2v1.0.2 · 26 Jul 2026Full Changelog: https://github.com/Cigarliu/ssh-mcp-server/compare/v1.0.1...v1.0.2

README

SSH MCP Server

English | 简体中文

A stdio MCP server for AI clients that need SSH command execution, file transfer, interactive terminals, and serial consoles. Connection profiles and execution history are shared by MCP instances on the same machine. After a profile is registered, models operate through a stable connection ID instead of receiving saved targets, usernames, or authentication details again.

Highlights

  • SSH command execution, SFTP transfer, and directory management.
  • SSH shell/TUI and serial terminals with controlled read/write turns, stream offsets, and explicit completion states.
  • SQLite-backed connection profiles and execution history that survive restarts and are shared across local MCP instances.
  • A fixed, model-oriented surface of eleven everyday tools.
  • Strict stdio boundaries: MCP data uses stdout only; logs use stderr only.

Install

Recommended: use a prebuilt archive from GitHub Releases. Download the archive for your platform, extract it, and place sshmcp (sshmcp.exe on Windows) in a stable directory. Every archive contains the example configuration, both READMEs, and the license.

Building from source requires Go 1.24.4 or newer:

git clone https://github.com/Cigarliu/ssh-mcp-server.git
cd ssh-mcp-server
go build -o sshmcp ./cmd/server

On first start, the server writes a default configuration when none exists:

  • Windows: %USERPROFILE%\.sshmcp\config.yaml
  • macOS/Linux: ~/.sshmcp/config.yaml

Pass -config <path> to use a different file.

MCP Client Configuration

Register the binary as a stdio MCP server. For example, on Windows:

{
  "mcpServers": {
    "ssh-mcp": {
      "command": "C:\\Tools\\sshmcp\\sshmcp.exe",
      "args": ["-config", "C:\\Users\\you\\.sshmcp\\config.yaml"]
    }
  }
}

On macOS or Linux, use the corresponding absolute paths. Do not make a stdio MCP server request a sudo password at startup: it consumes stdin and breaks the MCP handshake.

Connections and History

For a first direct SSH connection, the model should create a short, stable, readable connection_id and a user-facing description:

{
  "transport": "ssh",
  "connection_id": "prod-web-hk",
  "description": "Hong Kong production web server for deployments and log triage",
  "host": "203.0.113.10",
  "username": "deploy",
  "private_key": "~/.ssh/id_ed25519"
}

After a successful connection, later conversations and MCP instances need only:

{ "transport": "ssh", "connection_id": "prod-web-hk" }

connection_list returns only IDs, descriptions, active state, and locally visible serial ports. It never returns saved addresses, usernames, passwords, or private-key paths. connection_history reads durable ssh_exec and terminal_interact records.

For ordinary commands:

connection_open -> ssh_exec -> connection_close

For interactive shells, REPLs, and TUIs:

connection_open -> terminal_open -> terminal_interact -> terminal_close -> connection_close

terminal_interact defaults to wait: "quiet". Use wait: "until" only for a known complete prompt or delimiter; until is a literal, not a regular expression. When the result is limit_reached, continue with next_offset.

Tool Surface

The server always exposes the same eleven model-facing tools: connection open, close, list, and history; one-shot SSH execution; task-oriented SFTP transfer and management; and terminal open, interact, view, and close. There is no tool profile switch and no public session_id, alias, or legacy host-management API.

Configuration and Security

Minimal configuration:

logging:
  level: info
  format: console
  output: stderr

The default state database is ~/.sshmcp/state.db. Override it when needed:

state:
  database_path: "/absolute/path/to/sshmcp-state.db"

SQLite uses WAL and a write wait so several MCP instances on the same machine can share state. The database contains connection parameters and execution history. Keep it in a protected local directory; never place it in OneDrive, Dropbox, a network share, or source control. hosts is only a one-time compatibility import source; SQLite owns subsequent state.

See config.example.yaml for all fields. See SECURITY.md for security reporting and credential handling.

Serial

Use connection_list to find locally visible serial ports, then open one with connection_open:

{
  "transport": "serial",
  "device": "/dev/ttyUSB0",
  "baud_rate": 115200,
  "data_bits": 8,
  "parity": "none",
  "stop_bits": "1"
}

On Linux, the account running the server needs device access, commonly by joining the dialout group and signing in again.

Development and Maintenance

go test ./...
go vet ./...
go test -race ./...

Local SSH and serial integration tests are explicitly opt-in. Default tests do not connect to devices or read real credentials.

When a maintainer pushes a version tag, GitHub Actions builds Linux (amd64, arm64), macOS (amd64, arm64), and Windows (amd64) archives and creates the matching GitHub Release:

git tag -a vX.Y.Z -m "Release vX.Y.Z"
git push origin vX.Y.Z

Release builds inject the tag into the MCP server version. The GitHub Release page is the download and release-notes entry point for each version.

License

See LICENSE.

README fetched from the repository 6 days ago. The original is authoritative.

Questions

About Ssh MCP Server

How do I install Ssh MCP Server?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is Ssh MCP Server safe to use with an AI agent?

Its trust score is 53 out of 100 (fair). It passes 5 of the 6 static security checks run so far; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Ssh MCP Server still maintained?

Yes — the latest release is v1.0.6 (21 Aug 2026), and the last commit was 2 months ago. The repository has 13 stars and 1 open issues.