mcpField
S
SSH Client MCP Server

SSH Client MCP Server

ローカル
github.com/jordanburke開発ツール3今日更新

SSH Client MCP Server について

SSH Client MCP Serverは、MCPクライアントからSSH経由でリモートホストのシェルコマンドを実行するサーバーです。複数の認証方式と、tmuxによる永続セッションに対応しています。

主な機能

  1. 01リモートシェルコマンドの実行
  2. 02パスワード、鍵、SSHエージェント認証
  3. 03tmux永続セッション
  4. 04ヘルス状態と機能の確認
  5. 05Linux、macOS、Windowsで動作

活用シーン

  1. 01MCPクライアントからリモートホストを操作
  2. 02複数回の呼び出しをまたいだ対話プロセスの継続
  3. 03サーバー状態と利用可能なツールの確認

MCP 対応

MCPクライアントに `exec`、tmux、情報確認用ツールを提供します。stdioトランスポートに対応し、MCPクライアントからローカルで起動できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"ssh-client": {
"command": "npx",
"args": [
"-y",
"ssh-client-mcp-server"
]
}
}
}
起動コマンドnpx -y ssh-client-mcp-server

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmssh-client-mcp-server1.5.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

SSH Client MCP サーバー

License NPM Version CI

SSH Client MCP Server は、LLM やその他の MCP クライアントが SSH 経由でリモートホスト上のシェルコマンドを実行できる、ローカルの Model Context Protocol(MCP)サーバーです。Linux、macOS、Windows で動作し、接続可能な任意の SSH サーバー(Linux、macOS、OpenSSH を搭載した Windows など)を対象にできます。

テレメトリ、イントロスペクション、バックエンドの抽象化機能を備えた FastMCP ベースの機能的な MCP フレームワーク、somamcp を基盤としています。

目次

モノレポ

このリポジトリは、3 つのパッケージで構成される pnpm モノレポです。

パッケージnpm 名役割
packages/core@ssh-mcp/core(非公開)SSH プール、tmux コマンドビルダー、認証解決機能を共有します。他のパッケージにバンドルされ、個別には公開されません。
packages/connectorssh-client-mcp-server単一ホスト向け MCP サーバー(元のパッケージ)です。設定済みの 1 台の SSH ホストに対して exec + tmux_* ツールを提供します。
packages/orchestratorssh-fleet-mcp-server複数ホストのフリート向け MCP サーバーです。TOML フリート設定を使用し、ホストごとにルーティングされる exec + tmux_* ツールを提供します。

すべてのパッケージを対象に、検証スイート全体を実行します。

pnpm -r validate

クイックスタート

  1. MCP クライアント(Claude Desktop、Cursor、Cline など)で、このサーバーを npx 経由で起動するよう設定します。詳しくはクライアントのセットアップを参照してください。
  2. 対象ホスト上でシェルコマンドを実行するよう、LLM に依頼します。

グローバルインストールは不要です。npx が公開済みの最新バージョンを取得して実行します。

機能

  • 単一の exec ツール — リモートホスト上でシェルコマンドを実行し、stdout を返します。stderr は構造化されたエラーとして表示されます。
  • 4 種類の認証モード — パスワード、キーファイル、環境変数から取得するキー(envpkt、Vault、Doppler などによる注入)、または SSH_AUTH_SOCK(システムの ssh-agent、1Password、Bitwarden Desktop、KeePassXC)を使用できます。
  • スマートなパス展開 — --key では functype-os を使用して、~、$VAR、${VAR}、相対パスを扱えます。解決できない変数は、型付きエラーを返して即座に失敗します。
  • OS ユーザーへのフォールバック — --user が省略された場合、現在の OS ユーザー名が既定値になります。
  • 認証のフェイルファスト — SSH キーは最初の exec 呼び出し時ではなく、サーバー起動時に読み込まれ、検証されます。
  • すぐに使えるイントロスペクション — soma_health、soma_capabilities、soma_connections は somamcp によって自動登録されます。
  • クロスプラットフォーム — Linux、macOS、Windows(Node 22 以降が動作する環境)で実行できます。

ツール

ツール説明
execリモート SSH サーバー上でシェルコマンドを実行し、stdout を返します。
soma_healthサーバーの稼働時間、状態、アクティブなセッション数を返します。
soma_capabilities登録済みのツール、リソース、プロンプトを列挙します。
soma_connectionsゲートウェイの接続状態を返します(ここでは未使用)。
永続セッション(tmux)

リモートのコーディングエージェントなど、長時間実行される対話型プロセスを複数回の呼び出しにわたって操作するために、サーバーは tmux ベースのツールを提供します。リモートホストに tmux をインストールしておく必要があります。

  • tmux_list — 実行中の tmux セッションを一覧表示します。
  • tmux_send({ session?, input, submit? }) — input を session に入力します(存在しない場合は作成します)。submit: false の場合を除き、Enter キーを押します。
  • tmux_read({ session?, lines? }) — ペインの最近の出力を返します(lines のデフォルトは 200、最大は 2000)。
  • tmux_keys({ session?, keys }) — 制御キーや特殊キーを送信します。例:{ keys: ["C-c"] }。

session のデフォルトは --tmux-session(デフォルトは agent)です。ヒント:tmux_read が読みやすい出力を返すよう、エージェントは全画面 TUI ではなく、行指向モードで実行してください。

インストール

npx で実行(推奨)

インストール手順は不要です。MCP クライアントが必要に応じて起動します。クライアントのセットアップを参照してください。

グローバルインストール
npm install -g ssh-client-mcp-server
# then:
ssh-client-mcp-server --host=1.2.3.4 --user=root --password=pass
ソースから(コントリビューター向け)
git clone https://github.com/jordanburke/ssh-client-mcp-server.git
cd ssh-client-mcp-server
pnpm install
pnpm build

設定

サーバーは CLI フラグから SSH 接続情報を読み取ります。

フラグ必須デフォルト説明
--hostはい—リモート SSH サーバーのホスト名または IP アドレスです。
--userいいえOS ユーザー名SSH ユーザー名です。省略した場合は、ローカル OS ユーザー(whoami)が使用されます。
--portいいえ22SSH ポートです。
--passwordいいえ*—SSH パスワードです。
--keyいいえ*—SSH 秘密鍵へのパスです。~、$VAR、${VAR}、相対パスに対応しています。
--key-envいいえ*—秘密鍵 PEM を格納する環境変数の名前です(例:envpkt、Vault、Doppler によって注入されたもの)。
--agentいいえ*—true に設定すると、SSH_AUTH_SOCK(システムの ssh-agent、1Password、Bitwarden Desktop、KeePassXC)を使用します。

*認証の優先順位は --password → --key → --key-env → --agent です。いずれも設定されていない場合、サーバーは起動しますが、最初の exec 時に ssh2 の認証が失敗します。

パスワードマネージャーから鍵を取得する(Bitwarden/1Password/KeePassXC)

これらはそれぞれ、SSH_AUTH_SOCK を通じて SSH 鍵を利用できるようにします。保管庫のロックを解除し、エージェントが有効になっていることを確認してから、--agent=true を指定して実行してください。サーバーが秘密鍵を参照することはありません。

# verify the agent is reachable
ssh-add -l

# launch the MCP server through it
ssh-client-mcp-server --host=1.2.3.4 --user=root --agent=true

Bitwarden Desktop ≥ 2024.12 の場合:Settings → SSH agent を有効にし、macOS では launchctl getenv SSH_AUTH_SOCK が Bitwarden のソケットを指していることを確認してください。

envpkt(または環境変数を注入するツール)から鍵を取得する

PEM を envpkt.toml のシールド値として保存し、envpkt exec 経由で起動します。

envpkt exec -- ssh-client-mcp-server --host=1.2.3.4 --user=root --key-env=MY_SSH_KEY

同じ方法は、HashiCorp Vault、Doppler、Infisical、AWS Secrets Manager、または鍵を process.env に設定するラッパーでも使えます。

クライアントのセットアップ

Claude Desktop(claude_desktop_config.json)
{
  "mcpServers": {
    "ssh-client-mcp-server": {
      "command": "npx",
      "args": ["-y", "ssh-client-mcp-server", "--host=1.2.3.4", "--user=root", "--key=~/.ssh/id_ed25519"]
    }
  }
}
パスワード認証

--key 引数を --password=hunter2 に置き換えてください。これをバージョン管理に含めないようにしてください。

現在の OS ユーザーを使用する

--user を省略してください。サーバーはデフォルトでローカルのユーザー名を使用します。

その他の MCP クライアント

stdio MCP トランスポートに対応するクライアントであれば、どれでも使用できます。command/args の形式は同じです。

テスト

公開済みビルドに対して
npx @modelcontextprotocol/inspector npx ssh-client-mcp-server --host=1.2.3.4 --user=root --key=~/.ssh/id_ed25519
ローカルビルドに対して(pnpm build の実行後)
pnpm inspect

これにより、dist/index.js を指定した状態で MCP Inspector がビルドされ、起動します。

開発

すべてのツールは ts-builds に委任されています。

pnpm validate      # format → lint → typecheck → test → build
pnpm test          # vitest run
pnpm test:watch    # vitest watch mode
pnpm build         # production build to dist/
pnpm dev           # tsdown watch mode to lib/
pnpm inspect       # build + launch MCP Inspector

純粋なヘルパー(parseArgv、validateConfig、resolveAuth、effectiveUser)は src/config.ts にあり、test/config.spec.ts でテストされています(一時ファイルを使った鍵の読み込みや環境変数の展開を含む18ケース)。

免責事項

MIT License に基づいて提供されています。ご自身の責任でご利用ください。SSH ベンダーまたは MCP プロバイダーとは提携しておらず、承認も受けていません。LLM にシェルアクセスを許可する際は注意してください。コマンドを監査し、対象アカウントの権限を制限し、踏み台サーバーの使用を検討してください。

貢献

jordanburke/ssh-client-mcp-server で Issue と PR を歓迎します。提出前に pnpm validate を実行してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。