mcpField
C
cygnus-ssh-mcp

cygnus-ssh-mcp

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

cygnus-ssh-mcp について

cygnus-ssh-mcpは、インフラ管理者向けにSSH経由でLinux、macOS、Windowsのホストを操作するMCPサーバーです。汎用コマンド実行だけでなく、用途別のシステム管理ツールを提供します。

主な機能

  1. 01設定済みエイリアスでSSH接続
  2. 02コマンドとバックグラウンドプロセスの管理
  3. 03sudo操作
  4. 04リモートファイル編集とディレクトリ操作
  5. 05アーカイブの作成と展開
  6. 06Linux、macOS、WindowsなどのSSH機器に対応

活用シーン

  1. 01ホストのリソースと最近のログを確認
  2. 02リモート設定を編集して差分を確認
  3. 03ビルド成果物をアップロードして展開
  4. 04バックグラウンドタスクを開始し後から出力を取得

MCP 対応

MCPサーバーとして、SSH経由でMCPクライアントをリモートホストに接続し、46種類のサーバー管理ツールを公開します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"cygnussystems-cygnus-ssh": {
"command": "uvx",
"args": [
"cygnus-ssh-mcp"
]
}
}
}
起動コマンドuvx cygnus-ssh-mcp

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

パッケージ
pypicygnus-ssh-mcp1.5.1

ツール

46

掲載時のツール一覧 · 2 週間前に更新

このツールにパラメーターはありません。

詳細

cygnus-ssh-mcp

cygnus-ssh-mcp

AI エージェントによる実際のサーバー管理に特化した、46 個のツールを備えるクロスプラットフォーム対応 SSH MCP サーバー

PyPI version Python License: GPL v3 Tests

Claude、OpenCode、またはあらゆる MCP 対応 AI アシスタントに、Linux、macOS、Windows サーバーを完全に制御するための 46 個の専用ツールを提供します

前提条件 · インストール · クイックスタート · 機能 · ドキュメント


ヒント

作者からひとこと: 2025 年 4 月から毎日使い続けており、もう 1 年以上になります。Tailscale で接続したネットワーク上の十数台のマシンやデバイスに加え、30 台以上のコンテナを動かす Proxmox ホストの管理にも使っています。自分自身の問題を解決するために作ったツールですが、それ以来、手作業を大幅に減らしてくれました。Linux で 1 年運用した後、Windows、macOS、BusyBox のような制限付きシェルを備えるデバイスにも対応しました。実際のインフラを運用する人なら誰にとっても同じように役立つと思い、今回オープンソースとして公開します。公開リポジトリとしてはまだ新しいものですが、その背後にあるツールは新しいものでも、実績のないものでもありません。1 年以上にわたって自分のサーバーで実運用し、検証を重ねてきました。

役に立ったと思ったら、⭐ を付けたり、自分でインフラを管理している人に紹介したりしていただけると、この新しいプロジェクトにとって大きな励みになります。ありがとうございます!


cygnus-ssh-mcp を選ぶ理由

**cygnus-ssh-mcp は MCP サーバーです。Claude Desktop、Claude Code、 OpenCode、その他の MCP 対応クライアントから利用でき、AI アシスタントを SSH 経由でリモートサーバーに直接接続します。汎用のコマンド実行ツールではなく、 目的に合わせて設計された 46 個のツールを公開します。**自然言語のリクエストを、 エイリアスでの接続、ファイル編集、バックグラウンドプロセスの管理、sudo の処理など、 Linux、macOS、Windows の各ターゲットに対応した実際のシステム管理操作に変換します。

これを適切に実現するには、単純な ssh ラッパーでは直面しない、プラットフォームごとの 難しい問題を数多く解決する必要があります。このプロジェクトでは、次のような問題に 実際に直面し、試行錯誤を重ねて解決してきました。

  • Windows ターゲットから、意味のないローカルのチャネル番号ではなく、実際の PID を取得する
  • Win32-OpenSSH が終了コードを黙って 1 に変換した場合に、実際の終了コードを復元する
  • PowerShell のコンソールは stdout を OEM コードページでエンコードして非 ASCII 文字を破損させるため、Get-Content ではなく SFTP 経由でファイルの内容を読み取る
  • sudo で起動したバックグラウンドプロセスを終了する際、権限のある子プロセスを孤児化させず、誤った PID に無差別に SIGKILL を送らない

これらの問題は、実際の環境で Linux、macOS、Windows のターゲットに対してツールを実行するまで表面化しません。ここで解決した問題はどれも、ドキュメントから推測したのではなく、実環境で動作させて見つけたものです。

提供される機能基本的な SSH MCPcygnus-ssh-mcp
コマンドの実行✅✅
エイリアス付きの設定済みホスト❌✅
sudo 対応(Linux/macOS)限定的✅
Windows Server 対応❌✅
バックグラウンドタスクの管理❌✅
行単位のファイル編集❌✅
出力付きコマンド履歴❌✅
ディレクトリの再帰操作❌✅
アーカイブの作成・展開❌✅
完全な Unicode 対応環境による✅

Linux、macOS、Windows に加え、cygnus-ssh-mcp はさらに、ルーターや NAS などの 標準外の SSH ターゲットにも接続できます。flex プラットフォームタイプと、 各デバイスのシェルで実際に可能な操作を検出する機能プローブを使用します。 詳しくは、以下の代替プラットフォームへの接続をご覧ください。

警告

**代替プラットフォーム(flex)のサポートは開発中です。**実機でいくつか検証済みですが、 ルーター、NAS、組み込みシステムの種類は非常に多いため、未検証のハードウェアでは 動作が不安定な場合があります。

エージェントのタスク例

MCP 対応エージェントに、次のように依頼できます。

  • 「web ホストのディスク容量、メモリ、稼働時間、最近のログを確認してください。」
  • 「このリモート設定ファイルに安全にパッチを適用して、差分を見せてください。」
  • 「このビルド成果物をアップロードして展開し、サービスを再起動してください。」
  • 「このコマンドをバックグラウンドで実行し、後で出力を取得してください。」
  • 「Windows の SSH ホストで実行中のプロセスを調べてください。」

前提条件:ターゲットサーバーの SSH

cygnus-ssh-mcp は標準の SSH 経由で接続します。SSH 自体を提供するわけではないため、 管理対象の各サーバーに SSH サーバーがインストールされ、実行されている必要があります。

Linux — 通常はサーバーディストリビューションにプリインストールされています。そうでない場合:

sudo apt install openssh-server   # Debian/Ubuntu
sudo systemctl enable --now ssh

macOS — 「システム環境設定」→「共有」でリモートログインを有効にするか、ターミナルから実行します。

sudo systemsetup -setremotelogin on

Windows(Server 2019 以降、または Windows 10/11)— OpenSSH Server はオプション機能です。

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'

Windows Server 2016 やその他の特殊なケースについては、Windows のサポートをご覧ください。


インストール

以下の 2 つのオプションからどちらか 1 つを選んでください。それぞれ独立したツールで、 ストレージを共有しないため、一方のコマンドから他方で行った操作を参照したり、影響を与えたりすることはありません。

オプション A:pip(永続的なインストール)
pip install cygnus-ssh-mcp

アンインストールまたはアップグレードする場合:

pip uninstall cygnus-ssh-mcp
pip install --upgrade cygnus-ssh-mcp
オプション B:uvx(インストール不要)

メモ

uvxとは? uv(高速なPythonパッケージマネージャー)の一部です。uvx <package>を実行すると、パッケージが使い捨ての隔離されたキャッシュにダウンロードされ、すぐに実行されます。システムのPython環境やプロジェクト、pipから参照できる場所にはインストールされません。その後に管理が必要なものは何も残りません。Python環境のことを気にせず、MCP クライアントからこのサーバーを起動したい場合に最も簡単な方法です。

uvx cygnus-ssh-mcp

「アンインストール」するものはありません。uvxは実行のたびに最新バージョンを再解決し、再取得するためです。新たに取得し直す場合や、キャッシュを削除する場合は、次のようにします。

uvx --refresh cygnus-ssh-mcp   # force this run to ignore the cache
uv cache clean                 # clear uv's entire package cache

毎回再取得せず、意図的にアップグレードできる、uvxのように永続化するセットアップを希望する場合は、代わりにuv tool install cygnus-ssh-mcpを使用してください。uv tool uninstall cygnus-ssh-mcp/uv tool upgrade cygnus-ssh-mcpで管理できます。これはpip(オプション A)とは別の環境です。uv/uvxでセットアップしたものにpipのコマンドを混在させないでください。お互いを参照できません。


クイックスタート

1. ホストを追加する

手動でファイルを作成する必要はありません。サーバーの初回起動時に、まだ存在しなければ、空のホスト設定ファイル~/.mcp_ssh_hosts.tomlが安全な権限0o600で自動的に作成されます。このファイルを開く(またはAI アシスタント内からssh_conn_add_hostを使用する)だけで、次のようなエントリを追加できます。

# Minimal (password auth) - only required fields
["[email protected]"]
password = "your_password"
port = 22

# With alias and sudo (most common setup)
["[email protected]"]
password = "your_password"
port = 22
sudo_password = "sudo_pass"        # optional: for use_sudo operations
alias = "prod"                     # optional: connect by alias
description = "Production server"  # optional: for documentation

# SSH key authentication
["[email protected]"]
keyfile = "~/.ssh/id_ed25519"
port = 22
alias = "staging"

# Windows Server (requires OpenSSH)
["[email protected]"]
password = "your_password"
port = 22
alias = "win-prod"

必須フィールド: port +(passwordまたはkeyfile) 任意フィールド: alias、description、sudo_password、key_passphrase

アカウントでパスワード認証を使用している場合、sudo_passwordは任意です。指定しない場合、use_sudo操作にも通常のpasswordが再利用されます。sudoパスワードがログインパスワードと異なる場合、またはSSH鍵認証(keyfile)を使用し、passwordフィールドをまったく指定しない場合にのみ必要です。その場合は、sudo_passwordを明示的に設定するか、サーバーでパスワードなしのsudoを設定してください。

ヒント

ホストファイルの場所: デフォルトは~/.mcp_ssh_hosts.tomlです。見つからない場合は./mcp_ssh_hosts.tomlにフォールバックします。 カスタムの場所には--config /path/to/hosts.tomlを使用してください。使用するパスにファイルがすでに存在する場合、上書きやリセットは決して行われません。自動作成は、ファイルがまだ存在しない場合にのみ行われます。

警告

隠しファイル拡張子に注意してください。 NotepadやTextEditでこのファイルを作成すると、WindowsとmacOSでは既知の拡張子がデフォルトで非表示になるため、mcp_ssh_hosts.tomlという名前で保存したファイルが、実際にはmcp_ssh_hosts.toml.txtとして保存されることがあります。その場合、サーバーはファイルを見つけられません。Explorer/Finderで「ファイル名拡張子を表示」を有効にするか、ターミナルで確認してください。 ls -la ~/.mcp_ssh_hosts.toml*(macOS/Linux)または dir %USERPROFILE%\.mcp_ssh_hosts.toml*(Windows)を実行すると、どちらも.tomlの後に余分な拡張子のないファイルが1つだけ表示されるはずです。

2. MCP クライアントに追加する

ほとんどの MCP クライアント(Claude Desktop、Claude Code、OpenCode、Cursor、Cline、Windsurf など)は、以下に示す同じ mcpServers JSON 形式を使用します。クライアントによって異なるのは、設定ファイルの名前と場所だけです。ここでは具体例として Claude Desktop を使用します。異なる設定を使うクライアントについては、下の Claude Code の注記を参照するか、お使いのクライアントのドキュメントで設定ファイルのパスを確認してください。

警告

以下の "command": "cygnus-ssh-mcp" を動作させるには、PATH に Python が設定されている必要があります。 MCP クライアントがサーバーの起動に失敗する(またはツール一覧が表示されない)最も一般的な原因です。Python が1台のマシン上の複数の場所にインストールされていることも多いため、問題が起こりやすくなっています。まず、以下で確認してください。

python --version   # Windows/macOS/Linux
python3 --version  # macOS/Linux、上記のコマンドが見つからない場合

「認識されていません」/「コマンドが見つかりません」というエラーが表示される場合、Python が PATH に設定されていません。まずはその問題を修正してください(Windows では Python を再インストールする際に「Add to PATH」にチェックを入れるか、シェルのプロファイルに追加します)。または、インストール済みの実行ファイルのフルパスを確認して、問題を回避することもできます。where cygnus-ssh-mcp(Windows)または which cygnus-ssh-mcp(macOS/Linux)を実行し、結果を command に直接指定してください。

{
  "mcpServers": {
    "ssh": {
      "command": "C:\\Users\\yourname\\AppData\\Local\\Programs\\Python\\Python312\\Scripts\\cygnus-ssh-mcp.exe",
      "args": ["--config", "C:\\Users\\yourname\\.mcp_ssh_hosts.toml"]
    }
  }
}

Claude Desktop の場合は、claude_desktop_config.json を編集してください。

{
  "mcpServers": {
    "ssh": {
      "command": "cygnus-ssh-mcp"
    }
  }
}

カスタムのホストファイルの場所を指定する場合:

{
  "mcpServers": {
    "ssh": {
      "command": "cygnus-ssh-mcp",
      "args": ["--config", "/path/to/my_hosts.toml"]
    }
  }
}

Windows では、エスケープしたバックスラッシュを使って絶対パスを指定してください(JSON では単一の \ ではなく、\\ が必要です)。

{
  "mcpServers": {
    "ssh": {
      "command": "cygnus-ssh-mcp",
      "args": ["--config", "C:\\Users\\yourname\\.mcp_ssh_hosts.toml"]
    }
  }
}

Claude Desktop ではなく Claude Code を使っていますか? Claude Code は claude_desktop_config.json ではなく、プロジェクトルートにあるプロジェクト単位の .mcp.json ファイルを読み込みます。また、そのスキーマには Desktop にないフィールドがいくつか追加されています。

{
  "mcpServers": {
    "cygnus_ssh": {
      "command": "cygnus-ssh-mcp",
      "args": ["--config", "/path/to/.mcp_ssh_hosts.toml"],
      "working_dir": "/path/to/your/project",
      "auto_start": true
    }
  }
}
  • working_dir - サーバープロセスの実行元ディレクトリです。Claude Desktop には同等の設定がありません。設定可能な作業ディレクトリを公開していないため、上記の Desktop の例では常に絶対パスを使用しています。
  • auto_start - Claude Code がこのサーバーを自動的に起動するかどうかを指定します。Claude Desktop は設定済みのすべてのサーバーを常に自動起動するため、この設定を切り替えることはできません。

それ以外のすべて(--config 引数と、上記の警告にある PATH およびバックスラッシュに関する注意点)は、どちらのクライアントでも同じです。

3. サーバーの管理を開始する

メモ

以下の例の PROD は単なる例の エイリアス です(手順 1 のホストファイルで alias = "prod" と設定したものです)。特別な名前ではありません。ホストにエイリアスが設定されていない場合は、完全な user@host キーで指定してください。たとえば、「[email protected] に接続して……」や「[email protected] に接続して……」のように指定します。

使用している LLM/クライアントによっては、この MCP サーバーを利用すべきだと自動的に判断できない場合があります。接続せずに回答しようとしたり、リモートサーバーにアクセスできないと言ったりする場合は、SSH MCP ツールを使うよう明示してください(例:「ssh MCP を使って PROD に接続して……」)。

次のように伝えるだけです。

「PROD に接続して、マシンについて教えてください。ハードウェアや状態など、すべて教えてください」

「GPU マシンに接続して、グラフィックカードの枚数と VRAM の合計容量を教えてください」

「/etc/nginx/nginx.conf を編集して、worker_connections を 2048 に変更してください」

「/var/log で 100MB を超える .log ファイルをすべて探してください」

複数の手順が必要な作業も同じように簡単です。パッケージのインストール、設定ファイルの編集、ファイアウォールポートの開放、サービスの再起動まで、すべて一度のリクエストで行えます。

「PostgreSQL をインストールし、すべてのインターフェイスでリッスンするように設定して、リモート接続用の pg_hba.conf ルールを追加し、ファイアウォールでポート 5432 を開放して、analytics というデータベースを作成してください」

「LAMP スタック一式をセットアップし、最新の WordPress をダウンロードして、新しいデータベースを使うよう wp-config.php を設定し、/var/www/wordpress でサイトを稼働させてください」

「example.com 用の Let's Encrypt 証明書を取得し、HTTPS で配信するよう nginx を設定して、すべての HTTP トラフィックを HTTPS にリダイレクトしてください」

「/opt/api にある Node アプリがクラッシュし続けます。ログを調べて原因を特定し、自動的に再起動する systemd サービスとして設定してください」

「PROD のセキュリティを監査してください。開いているポート、各ポートで実際にリッスンしているもの、ファイアウォールルールが適切かどうかを確認し、インターネットに公開すべきでないものがあれば指摘してください」


プラットフォームのサポート

cygnus-ssh-mcp は、あらゆるクライアント(Windows、Linux、macOS)からあらゆるターゲットサーバーに接続して利用できます。

プラットフォームのサポート
クライアント(接続元)ターゲット(接続先)状態
WindowsLinux✅ テスト済み
WindowsWindows✅ テスト済み
LinuxLinux✅ テスト済み
LinuxWindows✅ テスト済み
macOS任意✅ サポート対象

Windows ターゲットでは、OpenSSH Server がインストールされ、実行中である必要があります。


代替プラットフォームへの接続

警告

現在も開発中です。 下記の複数の実機で動作を確認していますが、 ルーター/NAS/組み込みシステムには非常に大きな違いがあります。まだ 動作しないデバイスもありますので、問題があれば issue を作成してください。

Linux、macOS、Windows 以外にも、cygnus-ssh-mcp は 基本的なシェルコマンドに 応答するあらゆる SSH 接続先(ルーター、NAS、BSD カーネルの アプライアンス、その他の組み込み Linux デバイス)に接続します。これらは os_type: "flex" として報告されます。

接続時に一度だけ機能プローブを実行し、このプロジェクトのツールが依存する シェル/coreutils の機能(GNU find -printf、stat -c、du -sb、tar --strip-components、ps -o pgid=、xargs -0 など)を確認します。 組み込みデバイスや BusyBox ベースのデバイスの多くは、完全な GNU coreutils より 対応するフラグが少ないためです。結果は ssh_conn_connect から capabilities と、利用できない機能がある場合は capability_warnings として 返されます。必要な機能が利用できないツールは、何が使えないのかを明示し、 代替手段がある場合は具体的な方法を示すエラーで失敗します。機能が黙って 劣化することはありません。GNU find -printf を使わない glob 検索や ディレクトリサイズ取得など、移植性の高い代替手段がある場合、ツールは その方法を使用します。

プローブでは SFTP が利用可能かどうか も確認します。SFTP がまったく 使えないデバイス(OpenWrt)もあれば、シェルとは異なるファイルシステムを 表示する SFTP を提供するデバイス(共有フォルダーしか表示されない Synology DSM)もあります。いずれの場合も、SFTP ベースのファイルツールは 誤った結果を返すのではなく、その旨を示して ssh_cmd_run を案内します。

動作確認済み(いずれも、一般的な管理ワークフローを実行し、各ツールの 結果をシェルと照合する自動テストスイートによる確認です):

デバイス結果
Alpine Linux (BusyBox)linux として接続します。bash/sudo/GNU find -printf/ps -o pgid= は利用できません。これらに依存するツールは明確な代替案を示して失敗し、それ以外はすべて動作します
OpenWrtlinux として接続します。root のみで利用でき、SFTP はなく、GNU 拡張機能の大半もありません。シェルベースのツールは動作し、ファイル操作には ssh_cmd_run を使用します
FreeBSDflex として接続します。デフォルトでは bash がなく、sudo/タスク関連ツールは sh を使うよう調整されています
Synology DSM (NAS)linux として接続します。GNU coreutils と sudo はすべて利用できますが、SFTP には共有フォルダーしか表示されません。そのため、SFTP ベースのファイルツールは無効になり、ファイル操作には ssh_cmd_run を使用します

既知の制限: 管理者レベルの権限を持つアカウントであっても、 SSH シェルへのアクセスを全面的に拒否するデバイスがあります。この場合、 ログインには成功しても、単純な echo を含むすべてのコマンドが直ちに失敗します。 機能プローブでは解決できません。この状況では、ssh_conn_connect が一般的な エラーではなく、失敗の理由を説明します。

詳細、機能一覧、および現在の制限事項については、こちらをご覧ください: docs/26-alternate-platforms.md。


機能

ホスト設定

認証情報を入力する手間を省きます。エイリアスで接続できます。

["[email protected]"]
password = "secret"
port = 22
alias = "web"

あとは、次のように伝えるだけです:「WEB に接続して」

パスワード、SSH キー、パスフレーズで暗号化されたキーに対応しています。

既存のホストのフィールドをほかの設定を失わずに更新する (ssh_host_update)ことも、セッション中にすべてのホストツールで別の 設定ファイルを使用するよう切り替える(ssh_host_use_config)こともできます。 プロジェクトや環境ごとにホスト一覧を分けたい場合に便利です。


行単位のファイル編集

ダウンロードやアップロードをせず、設定ファイルを正確に編集できます。

# Replace a single line
ssh_file_replace_line(
    file_path="/etc/nginx/nginx.conf",
    match_line="worker_connections 1024;",
    new_line="worker_connections 4096;"
)

# Insert lines after a match
ssh_file_insert_lines_after_match(
    file_path="/etc/hosts",
    match_line="# Custom entries",
    lines_to_insert=["192.168.1.10 app.local", "192.168.1.11 db.local"]
)

安全性を標準搭載:一致箇所が一意でない場合、操作は失敗します。 誤って複数箇所を一括編集することはありません。


バックグラウンドタスク管理

時間のかかるプロセスを起動し、後から確認できます。

# Start a backup (returns immediately)
ssh_task_launch(command="./backup.sh", stdout_log="/var/log/backup.log")

# Check status anytime
ssh_task_status(pid=12345)  # → 'running' or 'exited'

# Kill if needed
ssh_task_kill(pid=12345, force=True)

充実した sudo 対応

すべてのツールで use_sudo を使用できます。パスワードは自動的に処理されます。

ssh_file_write(file_path="/etc/app/config.yaml", content="...", use_sudo=True)
ssh_dir_mkdir(path="/opt/myapp", use_sudo=True)
ssh_archive_extract(archive_path="/backup.tar.gz", destination_path="/", use_sudo=True)

3段階タイムアウトシステム

コマンドが応答しなくなっても処理が止まることはありません。時間のかかるコマンドの状況も見失いません。

ssh_cmd_run(
    command="./long_script.sh",
    io_timeout=60.0,        # Check back in if silent for 60s (does NOT kill it)
    wait_timeout=20.0,      # Or check back in every 20s regardless of activity
    runtime_timeout=3600.0  # Hard safety cap - the only one that actually kills it
)

io_timeout と wait_timeout はリモートコマンドを終了せず、バックグラウンド監視に引き継ぎます。後から状態を確認する(ssh_cmd_check_status)、これまでに収集された出力を読む(ssh_cmd_output)、または早めに終了する(ssh_cmd_kill)ことができます。処理を終了するのは runtime_timeout だけです。

1 回の呼び出しが 50 秒(--max-wait / MCP_SSH_MAX_WAIT)を超えてブロックすることはありません。これは、多くの MCP クライアント(OpenCode など)が 60 秒でツール呼び出しを中断し、引き継ぎが失われるためです。さらに時間のかかるコマンドは、通常の wait_timeout の引き継ぎとして wait_capped: true を返します。ポーリングして状況を確認するか、数分間実行する処理には ssh_task_launch を使用してください。


Unicode の完全サポート

あらゆるプラットフォームで、絵文字、各国語のテキスト、特殊文字を含むファイルを読み書きできます。

✅ ❌ 🎉 • → ≥ ∞ │ ┌ ─ 你好 مرحبا Привет café naïve

仕組み: ssh_file_read と ssh_file_write は SFTP を使用してバイナリを直接転送するため、シェルのエンコードに関する問題を完全に回避できます。これにより、PowerShell のコンソールエンコードでは通常、特殊文字が文字化けする Windows のターゲットでも、Unicode を正しく扱えます。サーバー独自の PowerShell スクリプトも UTF-8 で書き込むため、Windows の結果に含まれるファイル名(削除プレビュー、glob 検索、一覧表示)も、元の表記がそのまま保持されます。行単位の編集では、ファイル本来の改行コードが維持されます(CRLF は CRLF のままです)。


Windows サーバーのサポート

OpenSSH Server を使用する Windows ターゲットを完全にサポートしています。

  • PowerShell および CMD のコマンド実行
  • Windows のパス処理(バックスラッシュ、ドライブ文字、UNC パス)
  • 管理者権限の検出 — セッションに昇格した権限があるかどうかを表示
  • SFTP ベースのファイル操作 — Unicode に安全に対応し、エンコードの問題もありません

注:Windows では(sudo に相当する機能がないため)、use_sudo は無視されます。昇格した権限が必要な操作を行う場合は、Administrator アカウントで接続してください。


そのほかの機能...
  • コマンド履歴(出力の保持とパターンによるフィルタリング)
  • 再帰的なディレクトリ操作:検索、コピー、削除(ドライラン対応)
  • アーカイブ操作:tar.gz の作成と展開
  • システム情報:OS バージョン、メモリ、ディスク、CPU、稼働時間
  • パターン検索:ファイル内の正規表現とプレーンテキスト
  • 代替ホスト設定ファイル:再起動せずに、プロジェクトや環境ごとにホスト一覧を切り替え

全 46 ツール

接続とホスト管理(12 ツール)
ツール説明
ssh_conn_connect事前設定済みのホストに接続(キーまたはエイリアスで指定)
ssh_conn_is_connectedSSH 接続がアクティブかどうかを確認
ssh_conn_status接続状態を取得(ユーザー、ホスト、OS、cwd)
ssh_conn_host_infoシステムの詳細情報を取得
ssh_conn_verify_sudosudo アクセスを確認
ssh_conn_add_host設定に新しいホストを追加
ssh_host_list設定済みの全ホストを一覧表示
ssh_host_update既存ホストのフィールドをその場で更新(パスワードのローテーション、ポートの変更など)
ssh_host_remove設定からホストを削除
ssh_host_use_configセッションで使用する代替ホスト設定ファイルに切り替え
ssh_host_disconnect現在のセッションを切断
list_tools利用可能なすべてのツールを一覧表示
コマンド実行(6 ツール)
ツール説明
ssh_cmd_runI/O、待機、実行時間のタイムアウトを指定してコマンドを実行
ssh_cmd_kill実行中のコマンドを終了
ssh_cmd_check_statusコマンドの状態を確認
ssh_cmd_outputコマンドの出力を取得
ssh_cmd_historyフィルタリングしてコマンド履歴を取得
ssh_cmd_clear_historyコマンド履歴を消去
バックグラウンドタスク(3 ツール)
ツール説明
ssh_task_launchコマンドをバックグラウンドで起動
ssh_task_statusタスクが実行中かどうかを確認
ssh_task_killタスクにシグナルを送信
ファイル操作(12 ツール)
ツール説明
ssh_file_statファイルのメタデータを取得
ssh_file_readSFTP 経由でファイルの内容を読み取る(Unicode 対応)
ssh_file_writeファイルを作成/上書き/追記
ssh_file_copyファイルをコピー
ssh_file_moveファイルを移動または名前変更
ssh_file_transferファイルをアップロードまたはダウンロード
ssh_file_find_lines_with_patternファイル内のパターンを検索
ssh_file_get_context_around_line一致箇所の前後のコンテキストを取得
ssh_file_replace_line1 行を置換
ssh_file_replace_line_multi複数行で置換
ssh_file_insert_lines_after_match一致箇所の後に行を挿入
ssh_file_delete_line_by_content内容を指定して行を削除
ディレクトリ操作(11 ツール)
ツール説明
ssh_dir_mkdirディレクトリを作成
ssh_dir_removeディレクトリを削除
ssh_dir_list_files_basicディレクトリを簡易表示
ssh_dir_list_advancedメタデータを含めて再帰的に一覧表示
ssh_dir_search_globパターンでファイルを検索
ssh_dir_search_files_contentファイル内のテキストを検索
ssh_dir_calc_sizeディレクトリのサイズを計算
ssh_dir_deleteドライランに対応した削除
ssh_dir_batch_delete_filesパターンでファイルを一括削除
ssh_dir_copyディレクトリを再帰的にコピー
ssh_dir_transferディレクトリ全体をアップロードまたはダウンロード(アーカイブ方式)
アーカイブ操作(2 ツール)
ツール説明
ssh_archive_createtar.gz アーカイブを作成
ssh_archive_extractアーカイブを展開

ドキュメント

ドキュメントサイト全文:cygnussystems.github.io/cygnus-ssh-mcp — 検索とナビゲーションに対応しています。または、docs/ 内のファイルを直接ご覧ください。


使用例

  • DevOps の自動化 — AI を介してサーバーをデプロイ、設定、管理
  • ログ分析 — 複数のサーバーにまたがってログを検索、分析
  • 設定管理 — 行単位の操作で設定ファイルを正確に編集
  • バックアップと復旧 — アーカイブの作成、ファイル転送、バックアップの復元
  • システム監視 — ステータスの確認、サービスの検証、プロセスの監視
  • セキュリティ監査 — 機密性の高いパターンを検索し、設定を検証

ライセンス

GPL-3.0 — 無料のオープンソースです。


Cygnus Systems が開発

役に立った場合は、このリポジトリにスターを付けてください!

コメント

MCP は初めてですか?

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

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