my-mcp-ssh について
my-mcp-sshは、LLMからSSH経由でリモートサーバーに接続し、コマンド実行やファイル転送を行うMCPサーバーです。MCPクライアントからSSHを使うワークフローに適しています。
主な機能
- 01SSH接続の管理
- 02リモートコマンドの実行
- 03ファイルのアップロードとダウンロード
- 04セッションの一覧表示と終了
活用シーン
- 01リモートサーバーでのコマンド実行
- 02SSH経由のファイル転送
- 03SSHセッションの再利用や終了
MCP 対応
MCPクライアントに、SSH接続、コマンド実行、セッション管理、ファイル転送のツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
my-mcp-ssh
Model Context Protocol(MCP)ベースの SSH 接続ツールです。LLM が SSH 経由でリモートサーバーに安全に接続し、MCP プロトコルを通じてファイル操作を実行できます。
機能
- SSH 接続管理:リモート SSH サーバーに接続します
- コマンド実行:リモートサーバーでコマンドを実行します
- ファイル転送:ファイルをアップロードおよびダウンロードします
- セッション管理:SSH セッションを維持および終了します
インストール
依存関係
- Python >= 3.12
- uv パッケージマネージャー
# Clone the project
git clone https://github.com/ffpy/my-mcp-ssh.git
# Enter the project directory
cd my-mcp-ssh
# Install dependencies
uv sync
使用方法
クライアントでの設定
{
"mcpServers": {
"my-mcp-ssh": {
"command": "uv",
"args": [
"--directory",
"<your_path>/my-mcp-ssh",
"run",
"src/main.py"
],
"env": {}
}
}
}
環境変数
SSH 接続のデフォルト設定(任意)
環境変数を使用すると、SSH 接続のデフォルト値を設定できます。同じサーバーに頻繁に接続する場合や、自動化された環境で役立ちます。
SSH_HOST:SSH サーバーのホスト名または IP アドレスSSH_PORT:SSH サーバーのポートSSH_USERNAME:SSH ユーザー名SSH_PASSWORD:SSH パスワード(パスワード認証を使用する場合)SSH_KEY_PATH:SSH 秘密鍵ファイルのパス(鍵認証を使用する場合)SSH_KEY_PASSPHRASE:SSH 秘密鍵のパスフレーズ(必要な場合)
SSH 環境変数を使用する場面:
- 繰り返し接続する場合:同じサーバーに何度も接続するとき
- CI/CD パイプライン:デプロイスクリプトを自動化するとき
- 開発環境:よく使うサーバーのデフォルト値を設定するとき
- コンテナのデプロイ:コードを変更せずにデフォルト値を設定するとき
注:connect ツールに渡されたパラメーターは、常に環境変数より優先されます。
サーバー設定
サーバーの追加の動作を設定できます。
SESSION_TIMEOUT:セッションタイムアウト(分単位)。デフォルトは 30 分ですMAX_OUTPUT_LENGTH:コマンド出力の最大文字数。デフォルトは 5000 文字です
SSH 認証情報ファイル
セキュリティを高めるため、パスワードをパラメーターとして渡す代わりに、SSH 認証情報をローカル設定ファイルに保存できます。
- サンプルファイルをコピーします:
cp ssh-credentials.json.example ssh-credentials.json
ssh-credentials.jsonを実際の認証情報で編集します:
{
"[email protected]": "your_password",
"admin@web-[0-9].example.com": "web_password",
"deploy@server-{dev,test,staging}.company.com": "deploy_password",
"admin@*.internal.network": "internal_password"
}
対応するパターン:
*- 任意の文字列に一致します?- 任意の 1 文字に一致します[0-9]- 任意の数字に一致します{dev,test,staging}- リスト内のいずれかの選択肢に一致します
認証の優先順位:
- connect ツールに渡されたパラメーター(
password、key_path) - 認証情報ファイル内の完全一致(
username@host) - 認証情報ファイル内のパターン一致(ワイルドカード)
- 環境変数のパスワード(
SSH_PASSWORD) - 環境変数の鍵(
SSH_KEY_PATH) - デフォルトの SSH 鍵(存在する場合は
~/.ssh/id_rsa)
セキュリティ:
- ファイルのアクセス権限は自動的に 600(所有者のみ読み取り/書き込み可能)に設定されます
- 誤ってコミットされないよう、ファイルは .gitignore に追加されます
注:
- 認証情報ファイルの変更は、サーバーを再起動せずにすぐ反映されます
- 接続を試みるたびにファイルが新たに読み込まれます
ツール一覧
connect
SSH サーバーに接続します
パラメーター:
host:SSH サーバーのホスト名または IP アドレス(任意)port:SSH サーバーのポート(任意、デフォルトは 22)username:SSH ユーザー名(任意)password:認証用の SSH パスワード(任意)key_path:認証用 SSH 秘密鍵ファイルのパス(任意)key_passphrase:必要な場合に指定する SSH 秘密鍵のパスフレーズ(任意)
disconnect
SSH セッションを切断します
パラメーター:
session_id:切断するセッション ID
list_sessions
アクティブな SSH セッションをすべて一覧表示します
パラメーター:
- なし
execute
SSH サーバーでコマンドを実行します
パラメーター:
session_id:セッション IDcommand:実行するコマンドstdin:コマンドに渡す入力文字列。デフォルトは空ですtimeout:コマンドのタイムアウト(秒単位)。デフォルトは 60 秒です
upload
SSH サーバーにファイルをアップロードします
パラメーター:
session_id:セッション IDlocal_path:ローカルファイルのパスremote_path:リモートファイルのパス
ダウンロード
SSH サーバーからファイルをダウンロードします
パラメーター:
session_id:セッション IDremote_path:リモートファイルのパスlocal_path:ローカルファイルのパス
デバッグ
オンラインでデバッグするには、./inspector.sh を実行してください
ライセンス
my-mcp-ssh は Apache License, Version 2.0 のライセンスに基づいています
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。