mcpField
S
SSH Fleet

SSH Fleet

ローカル
github.com/inhumanクラウド・インフラ014 週間前に更新

SSH Fleet について

SSH Fleetは、Kubernetes外のSSHホスト群を診断・操作するエージェント向けMCPサーバーです。読み取り専用の定型チェックと、単一ホストへの任意コマンド実行を分けています。

主な機能

  1. 01タグ指定ホストの読み取り専用チェック
  2. 02単一ホストでのコマンド実行
  3. 03フェイルクローズのホスト許可リスト
  4. 04SSHキーをモデルコンテキスト外で管理
  5. 05出力上限とホストごとのタイムアウト

活用シーン

  1. 01稼働時間、ディスク、メモリ、障害、ログの確認
  2. 02許可リスト内のホストでコマンドを実行

MCP 対応

Streamable HTTP、SSE、stdio経由で、MCPクライアントに `ssh_probe` と `ssh_exec` ツールを提供します。任意コマンド実行の承認はMCPクライアント側で管理します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"inhuman-mcp-ssh-fleet": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"SSH_FLEET_TRANSPORT",
"-e",
"SSH_FLEET_CMD_TIMEOUT_SECONDS",
"-e",
"SSH_FLEET_OUTPUT_CAP_BYTES",
"-e",
"SSH_FLEET_PROBE_CONCURRENCY",
"-e",
"SSH_FLEET_PROBE_MAX_HOSTS",
"-e",
"SSH_FLEET_AUTH_TOKEN",
"ghcr.io/inhuman/mcp-ssh-fleet:0.1.5"
],
"env": {
"SSH_FLEET_TRANSPORT": "<SSH_FLEET_TRANSPORT>",
"SSH_FLEET_CMD_TIMEOUT_SECONDS": "<SSH_FLEET_CMD_TIMEOUT_SECONDS>",
"SSH_FLEET_OUTPUT_CAP_BYTES": "<SSH_FLEET_OUTPUT_CAP_BYTES>",
"SSH_FLEET_PROBE_CONCURRENCY": "<SSH_FLEET_PROBE_CONCURRENCY>",
"SSH_FLEET_PROBE_MAX_HOSTS": "<SSH_FLEET_PROBE_MAX_HOSTS>",
"SSH_FLEET_AUTH_TOKEN": "<SSH_FLEET_AUTH_TOKEN>"
}
}
}
}
起動コマンドdocker run -i --rm -e SSH_FLEET_TRANSPORT -e SSH_FLEET_CMD_TIMEOUT_SECONDS -e SSH_FLEET_OUTPUT_CAP_BYTES -e SSH_FLEET_PROBE_CONCURRENCY -e SSH_FLEET_PROBE_MAX_HOSTS -e SSH_FLEET_AUTH_TOKEN ghcr.io/inhuman/mcp-ssh-fleet:0.1.5
設定が必要な環境変数
SSH_FLEET_TRANSPORTMCP transport. Must be 'stdio' for direct docker/stdio use.
SSH_FLEET_CMD_TIMEOUT_SECONDSPer-host command timeout in seconds (1..600).
SSH_FLEET_OUTPUT_CAP_BYTESCap on output bytes per host section (>=256).
SSH_FLEET_PROBE_CONCURRENCYParallelism for ssh_probe.
SSH_FLEET_PROBE_MAX_HOSTSSafety cap on the number of hosts in one probe.
SSH_FLEET_AUTH_TOKENシークレットOptional X-MCP-AUTH bearer token (only used by the http/sse transports).

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

パッケージ
ocighcr.io/inhuman/mcp-ssh-fleet:0.1.5

ツール

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

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

詳細

mcp-ssh-fleet

英語 | ロシア語

Version MCP Registry Container Build Go Version Go Report Card License: MIT Issues Last Commit

Kubernetes 外部のホスト群に対し、SSH 経由でエージェントに 2 つのツールを提供する MCP サーバーです。SSH キーはマウントされたシークレットであり(モデルのコンテキストには決して入りません)、インベントリはフェイルクローズ方式の許可リストです。

ツール

  • ssh_probe(tags, check) — 指定したタグを持つすべてのホストに対する、厳選された読み取り専用の診断です(GitLab Runner のタグと同様の AND セマンティクス)。check は組み込みのセットから選択します:uptime、disk、mem、failed、logs。任意のコマンドは渡せません。クラス:read-only。
  • ssh_exec(host, command) — インベントリ内の 1 台のホスト(名前またはアドレスで指定。インベントリ外のホストは拒否されます)で実行する、任意の非対話型コマンドです。クラス:write-external。サーバーはコマンドを実行しますが、アクセス制御(承認/RBAC)は MCP クライアント側で行います。

両ツールとも、出力サイズの上限、ホストごとのタイムアウト、TOFU ホストキー確認(フィンガープリントをログに記録)、ホストごとに 1 セクションで出力する機能を備えています。

設定(環境変数)

変数デフォルト意味
SSH_FLEET_TRANSPORThttphttp(StreamableHTTP、エンドポイント /mcp) | sse | stdio
SSH_FLEET_ADDR:8080http/sse のリッスンアドレス
SSH_FLEET_AUTH_TOKEN—任意の X-MCP-AUTH トークン
SSH_FLEET_INVENTORY_PATH/etc/ssh-fleet/inventory.yamlインベントリへのパス(ConfigMap)
SSH_FLEET_KEY_PATH/etc/ssh-fleet/id_ed25519秘密鍵へのパス(シークレット)
SSH_FLEET_OUTPUT_CAP_BYTES8192セクションごとの出力上限
SSH_FLEET_CMD_TIMEOUT_SECONDS20ホストごとのタイムアウト
SSH_FLEET_PROBE_CONCURRENCY8プローブ並列実行プール
SSH_FLEET_PROBE_MAX_HOSTS501 回のプローブで対象にできるホスト数の安全上限

インベントリの形式については、deploy/inventory.example.yaml を参照してください。

クイックスタート(docker、stdio)

docker run -i --rm \
  -v /path/to/inventory.yaml:/etc/ssh-fleet/inventory.yaml:ro \
  -v /path/to/id_ed25519:/etc/ssh-fleet/id_ed25519:ro \
  -e SSH_FLEET_TRANSPORT=stdio \
  ghcr.io/inhuman/mcp-ssh-fleet:latest

これは、MCP Registry(io.github.inhuman/mcp-ssh-fleet)からインストールする際に、MCP クライアントが使用する形式です。

MCP クライアントへの接続(http/sse)

デフォルトでは、サーバーは StreamableHTTP を使用します。エンドポイント /mcp(http://<host>:8080/mcp のような URL)を持つ通常の HTTP MCP サーバーとして登録してください。両方のツールがクライアントで使用可能になります。

クライアント側のセキュリティに関する推奨事項:

  • ssh_probe は read-only(厳選されたチェックのみ)であり、広く許可できます。
  • ssh_exec は任意のコマンドを実行できます(write-external)。アクセス制御はクライアント側で行ってください(承認/RBAC/ユーザー許可リスト)。サーバーはインベントリ内のホストでコマンドを実行するだけで、アクセス制御ポリシーは決定しません。

開発

make test        # unit tests + e2e against a real in-process SSH server
make vet
make vulncheck
make build
make docker

リリース:タグ vX.Y.Z → GitHub Actions がマルチアーキテクチャイメージをビルドし、 ghcr.io/inhuman/mcp-ssh-fleet に公開します。

コメント

MCP は初めてですか?

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

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