1. Conduid
  2. Other
  3. Cssh
MCP server · Other

Cssh

Unclaimed other
35Low

Scored 6 months ago · breakdown

About Cssh

Cssh is an MCP server in the Other category.

Install

From source
git clone https://github.com/Zero-noise/Cssh

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.

Tools (7)

ssh_apply_patchApply unified diff patch on remote host

Parameters not published.

ssh_connectConnect to a saved profile, returns `connection_id`

Parameters not published.

ssh_disconnectClose a connection

Parameters not published.

ssh_execRun a command with real-time progress streaming

Parameters not published.

ssh_read_fileRead remote file (line-numbered, supports offset/limit for large files)

Parameters not published.

ssh_transferUpload/download files via scp with SHA-256 verification; supports directories and rsync resume

Parameters not published.

ssh_write_fileWrite remote file — create, overwrite, or append (workspace-guarded)

Parameters not published.

Ask AI

✦

Ask AI about Cssh

Powered by Claude · Grounded in docs

I know everything about Cssh. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

  • ✓README presentThe repository ships documentation.

5 checks have not been run yet.

README

Installation(macOS & Linux; Windows coming later)

One-line install (recommended)

curl -sSL https://raw.githubusercontent.com/Zero-noise/Cssh/main/scripts/install.sh | bash

Installs the latest release binary for your platform from GitHub Releases.

Developer install

git clone https://github.com/Zero-noise/Cssh.git && cd Cssh && ./scripts/install.sh

Builds cssh-mcp and csshctl from the local checkout with your installed Go toolchain.

The installer places binaries in ~/.csbridge/bin/, adds them to your PATH, registers the MCP server with Claude Code, and auto-approves tool permissions.

Open Claude Code and tell the AI: "Help me connect to my SSH server", and it will guide you through profile setup and connection.

Uninstall

curl -sSL https://raw.githubusercontent.com/Zero-noise/Cssh/main/scripts/uninstall.sh | bash
# or, from repo checkout:
./scripts/uninstall.sh

Verify installation

csshctl --help          # CLI tool works
claude mcp list         # cssh is registered (Claude Code)

If claude mcp list does not show cssh, register manually:

claude mcp add --transport stdio --scope user cssh -- ~/.csbridge/bin/cssh-mcp

Other MCP Clients

The install script registers cssh with Claude Code automatically. For other clients, add the config manually.

Binary path: ~/.csbridge/bin/cssh-mcp. Some clients don't expand ~ — get your absolute path with:

echo ~/.csbridge/bin/cssh-mcp

~/.cursor/mcp.json (global) or .cursor/mcp.json (project):

{
  "mcpServers": {
    "cssh": {
      "type": "stdio",
      "command": "~/.csbridge/bin/cssh-mcp"
    }
  }
}

.vscode/mcp.json (workspace) or command palette → MCP: Open User Configuration:

{
  "servers": {
    "cssh": {
      "command": "${userHome}/.csbridge/bin/cssh-mcp"
    }
  }
}

VS Code uses "servers" as the root key, not "mcpServers". Use ${userHome} instead of ~.

~/.codeium/windsurf/mcp_config.json — use an absolute path for the command:

{
  "mcpServers": {
    "cssh": {
      "command": "/Users/you/.csbridge/bin/cssh-mcp"
    }
  }
}

~/.codex/config.toml (global) or .codex/config.toml (project):

[mcp_servers.cssh]
command = ["~/.csbridge/bin/cssh-mcp"]

Or: codex mcp add cssh -- ~/.csbridge/bin/cssh-mcp

~/.config/amp/settings.json (global) or .amp/settings.json (project):

{
  "amp.mcpServers": {
    "cssh": {
      "command": "~/.csbridge/bin/cssh-mcp"
    }
  }
}

Or: amp mcp add cssh -- ~/.csbridge/bin/cssh-mcp

Settings → Tools → AI Assistant → Model Context Protocol (MCP) → + → add stdio server with command ~/.csbridge/bin/cssh-mcp.

Features

  • Managed SSH master lifecycle — master processes run with -MN; Cssh tracks process health and detects death automatically
  • Auto-reconnect — if an SSH master dies unexpectedly, Cssh reconnects transparently and notifies the AI agent
  • Exec progress streaming — real-time output via MCP progress notifications during long-running commands
  • Per-profile Cnote — persistent AI-facing notes per profile (e.g. "download to /mnt/ssd", "don't restart during business hours"); returned automatically on ssh_connect
  • File transfer with verification — scp transport with automatic SFTP/legacy-SCP fallback, SHA-256 checksums for files, and file-count verification for directories
  • Credential storage — passwords and key passphrases stored in OS keychain (macOS Keychain / Linux Secret Service), never in config files
  • Tool annotations — all tools annotated with MCP spec hints (readOnlyHint, destructiveHint, etc.)

How It Works

Cssh follows a simple five-step loop:

1. Setup → create profile, store credentials securely
2. Connect → establish and verify the SSH session
3. Operate → read, write, patch, transfer, execute
4. Evaluate risk → classify the action as safe or sensitive
5. Resolve → allow, deny, or require explicit approval

Security Model

Two built-in security profiles control command approval:

easy_safe (default) ops_strict
Intent Development — trust the AI Production — verify everything
Hard deny rm -rf /, fork bombs, destructive finds Same
Approval Only irreversible ops (reboot, mkfs) All high-risk + all sudo
Grant caching Configurable TTL Disabled (fresh approval every time)
Overrides AllowReboot, AllowDiskOps Ignored

Additional controls: profile-only connections, workspace_roots write restrictions, limit_dir runtime narrowing, allow_root_user policy, public-host OR-precedence.

Full details: docs/security-model.md

Tools

Core — daily operations

Tool Description
ssh_connect Connect to a saved profile, returns connection_id
ssh_exec Run a command with real-time progress streaming
ssh_read_file Read remote file (line-numbered, supports offset/limit for large files)
ssh_write_file Write remote file — create, overwrite, or append (workspace-guarded)
ssh_apply_patch Apply unified diff patch on remote host
ssh_transfer Upload/download files via scp with SHA-256 verification; supports directories and rsync resume
ssh_disconnect Close a connection

Session & connection management

Tool Description
ssh_open_session Create a persistent shell session (shared cwd/env across exec calls)
ssh_connection_status Inspect connection health (single or all connections)

First-time setup flow

These tools are used once per profile. After setup, only ssh_connect is needed.

Tool Step Description
ssh_profile_setup 1 Create or edit profiles — template, save, or edit existing
ssh_key_setup 2 Select SSH key and store passphrase via local web form
ssh_credentials_prompt 3 Store password / sudo credentials securely via local web form

Profile & privilege management

Tool Description
ssh_profile List or delete saved profiles
ssh_cnote Read or update per-profile Cnote (persistent AI-facing notes)
ssh_privilege Inspect or revoke privilege grants

Build

go build -o cssh-mcp ./cmd/cssh-mcp && go build -o csshctl ./cmd/csshctl

After modifying .go source files, re-run go build to regenerate the binary.

CLI Reference

# Add a profile
csshctl profile add \
  --id devbox \
  --name rayna-dev \
  --host 100.88.0.10 \
  --user ubuntu \
  --workspace-roots / \
  --auth-priority key,password \
  --key-path ~/.ssh/id_ed25519 \
  --security-profile easy_safe

# Edit a profile
csshctl profile edit --id devbox --host 10.0.0.5 --workspace-roots /home/ubuntu/app

# Scan for SSH keys
csshctl key scan --dir ~/.ssh/

# Store credentials
csshctl secret set-password --profile devbox
csshctl secret set-key-passphrase --profile devbox
csshctl secret set-sudo-password --profile devbox

# Manage approvals
csshctl approvals list --status pending
csshctl approve apr_xxx --by yourname

Approval Flow

High-risk commands (reboot, mkfs, sudo in ops_strict, etc.) require human approval. When the AI hits one, it pauses and shows an approval_id — you approve it in another terminal:

  ssh_exec("reboot")
    → approval_required (id: apr_abc123)

  ┌─ You, in another terminal ───────────────────────┐
  │  $ csshctl approve apr_abc123 --by yourname      │
  └──────────────────────────────────────────────────┘

  AI retries automatically → ✓ command executes

AI Workflow

Full setup flow: docs/setup-flow.md · Runtime paths: docs/runtime.md

  1. ssh_profile_setup(step=template|save) — create a profile
  2. ssh_key_setup(profile_id=...) — select SSH key and store passphrase (if key auth)
  3. ssh_credentials_prompt(profile_id=...) — store password/sudo credentials if needed
  4. ssh_connect(profile_id=...) — connect (Cnote is returned automatically)
  5. ssh_exec / ssh_read_file / ssh_write_file / ssh_transfer — work on the remote host
  6. When a call returns approval_required, run csshctl approve <id> in a separate terminal, then retry with approval_token

Notes

  • Tell the AI to "record this in the Cnote" to persist profile-level rules.
  • Password auth uses SSH_ASKPASS flow.
  • ssh_apply_patch requires patch and base64 on the remote host.
  • Default config path: ~/.csbridge/config.toml (auto-created on first run).

README copy captured when this server was indexed; it may lag the repository. The original is authoritative.

Questions

About Cssh

How do I install Cssh?

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

Is Cssh safe to use with an AI agent?

Its trust score is 35 out of 100 (low). It passes 1 of the 1 static security checks run so far. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Cssh still maintained?

Conduid hasn't recorded a commit date for this repository yet. Check the repository directly for recent activity.