🚀 MCP SSH Manager 🚀
強力なModel Context Protocol (MCP)サーバーで、Claude Codeから複数のSSH接続をシームレスに管理できます。リモートサーバーを制御し、コマンドを実行し、Claude Codeから直接ファイルを転送できます。
✨ 主な機能
- 🔗 複数のSSH接続 - 単一のインターフェイスから無制限のSSHサーバーを管理できます。
- 🔐 安全な認証 - パスワードとSSHキーの両方の認証方式をサポートしています。
- 📁 ファイル操作 - ローカルとリモートシステム間でファイルのアップロードとダウンロードが可能です。
- ⚡ コマンド実行 - 作業ディレクトリをサポートしたリモートサーバー上でコマンドを実行できます。
- 📂 デフォルトディレクトリ - サーバーごとにデフォルトの作業ディレクトリを設定でき、使い勝手が向上します。
- 🎯 簡単な設定 - ガイド付きの設定ツールを使って、簡単に
.envファイルを設定できます。
- 🔧 接続テスト - サーバーの接続性を確認するための組み込みツールがあります。
- 🚀 スマートなデプロイ - 新機能! パーミッションの管理を自動化したファイルデプロイが可能です。
- 🔑 sudoサポート - 新機能! sudo権限でコマンドを安全に実行できます。
- 🏷️ サーバーエイリアス - 新機能! 完全なサーバー名の代わりに短いエイリアスを使用できます。
📋 前提条件
- Node.js (v16以上)
- Python 3.8以上
- Claude Code CLIがインストールされていること
- npm (Node.jsに付属)
🚀 クイックスタート
1. リポジトリをクローンする
git clone https://github.com/yourusername/mcp-ssh-manager.git
cd mcp-ssh-manager
2. 依存関係をインストールする
npm install
pip install -r tools/requirements.txt
3. サーバーを設定する
対話型の設定ツールを実行します。
python tools/server_manager.py
サーバーを追加するにはオプション2を選択します。以下の情報を入力するように求められます。
- サーバー名 (例:
production, staging)
- ホスト/IPアドレス
- ユーザー名
- ポート (デフォルト: 22)
- 認証方法 (パスワードまたはSSHキー)
4. Claude Codeにインストールする
claude mcp add ssh-manager node /path/to/mcp-ssh-manager/src/index.js
claude mcp add ssh-manager --scope project node /path/to/mcp-ssh-manager/src/index.js
claude mcp add ssh-manager --scope user node /path/to/mcp-ssh-manager/src/index.js
5. 使用を開始する
Claude Codeでは、以下のような操作ができます。
"List all my SSH servers"
"Execute 'ls -la' on production server" # 設定されている場合はデフォルトディレクトリを使用
"Run 'docker ps' on staging"
"Upload config.json to production:/etc/app/config.json"
"Download logs from staging:/var/log/app.log"
デフォルトディレクトリを使用する場合
productionのデフォルトディレクトリとして/var/www/htmlを設定した場合、以下のコマンドは同等です。
"Run 'ls' on production" → /var/www/htmlで実行されます。
"Run 'ls' on production in /tmp" → /tmpで実行され、デフォルトを上書きします。
💻 使用例
基本的な使用法
"List all my SSH servers"
"Execute 'ls -la' on production server"
高度な使用法
"ssh_deploy production ['file1.txt', 'file2.txt'] {owner: 'user', permissions: '644', backup: true, restart: false}"
🛠️ 利用可能なMCPツール
コアツール
ssh_list_servers
設定されたすべてのSSHサーバーとその詳細をリストします。
ssh_execute
リモートサーバー上でコマンドを実行します。
- パラメータ:
server (名前), command, cwd (オプションの作業ディレクトリ)
- 注意:
cwdが指定されていない場合、設定されているサーバーのデフォルトディレクトリを使用します。
ssh_upload
リモートサーバーにファイルをアップロードします。
- パラメータ:
server, local_path, remote_path
ssh_download
リモートサーバーからファイルをダウンロードします。
- パラメータ:
server, remote_path, local_path
高度なツール (v1.2以上)
ssh_deploy 🚀
自動的にパーミッションとバックアップを管理してファイルをデプロイします。
- パラメータ:
server, files (配列), options (所有者、パーミッション、バックアップ、再起動)
- 自動的にパーミッションの問題を処理し、バックアップを作成します。
ssh_execute_sudo 🔐
sudo権限でコマンドを実行します。
- パラメータ:
server, command, password (オプション), cwd (オプション)
- ログにパスワードを公開せずにsudoパスワードを安全に処理します。
ssh_alias 🏷️
サーバーのエイリアスを管理し、アクセスを容易にします。
- パラメータ:
action (追加/削除/リスト), alias, server
- 例:
productionサーバーにprodというエイリアスを作成します。
ssh_command_alias 📝
頻繁に使用するコマンドのエイリアスを管理します。
- パラメータ:
action (追加/削除/リスト/提案), alias, command
- エイリアスはアクティブなプロファイルから読み込まれます。
- 例: プロジェクト固有のカスタムエイリアスを作成します。
ssh_hooks 🎣
SSH操作の自動化フックを管理します。
- パラメータ:
action (リスト/有効化/無効化/ステータス), hook
- フックはアクティブなプロファイルから読み込まれます。
- 例: プロジェクト固有の検証と自動化を設定します。
ssh_profile 📚
異なるプロジェクトタイプの設定プロファイルを管理します。
- パラメータ:
action (リスト/切り替え/現在のプロファイル), profile
- 利用可能なプロファイル: default, frappe, docker, nodejs
- 例: 異なるプロジェクト構成を切り替えます。
🔧 設定
プロファイル
SSH Managerは、異なるプロジェクトタイプのエイリアスとフックを設定するためにプロファイルを使用します。
- アクティブなプロファイルを設定する
- 環境変数:
export SSH_MANAGER_PROFILE=frappe
- 設定ファイル:
.ssh-manager-profileを作成し、プロファイル名を記述します。
- デフォルト: 指定されていない場合は
defaultプロファイルを使用します。
- 利用可能なプロファイル
default - 基本的なSSH操作
frappe - Frappe/ERPNextに特化した設定
docker - Dockerコンテナの管理
nodejs - Node.jsアプリケーション
profiles/ディレクトリにカスタムプロファイルを作成できます。
環境変数
サーバーは.envファイルで以下のパターンで設定されます。
# サーバー設定パターン
SSH_SERVER_[NAME]_HOST=hostname_or_ip
SSH_SERVER_[NAME]_USER=username
SSH_SERVER_[NAME]_PASSWORD=password # パスワード認証の場合
SSH_SERVER_[NAME]_KEYPATH=~/.ssh/key # SSHキー認証の場合
SSH_SERVER_[NAME]_PORT=22 # オプション、デフォルトは22
SSH_SERVER_[NAME]_DEFAULT_DIR=/path/to/dir # オプション、デフォルトの作業ディレクトリ
SSH_SERVER_[NAME]_DESCRIPTION=Description # オプション
# 例
SSH_SERVER_PRODUCTION_HOST=prod.example.com
SSH_SERVER_PRODUCTION_USER=admin
SSH_SERVER_PRODUCTION_PASSWORD=secure_password
SSH_SERVER_PRODUCTION_PORT=22
SSH_SERVER_PRODUCTION_DEFAULT_DIR=/var/www/html
SSH_SERVER_PRODUCTION_DESCRIPTION=Production Server
SSH_SERVER_PRODUCTION_SUDO_PASSWORD=secure_sudo_pass # オプション、自動デプロイ用
サーバー管理ツール
Pythonの管理ツール (tools/server_manager.py) は以下の機能を提供します。
- サーバーをリストする - 設定されたすべてのサーバーを表示します。
- サーバーを追加する - 対話型のサーバー設定を行います。
- 接続をテストする - サーバーの接続性を確認します。
- サーバーを削除する - サーバーの設定を削除します。
- Claude Codeを更新する - Claude CodeでMCPを設定します。
- 依存関係をインストールする - 必要なパッケージをセットアップします。
📁 プロジェクト構造
mcp-ssh-manager/
├── src/
│ └── index.js # メインのMCPサーバー実装
├── tools/
│ ├── server_manager.py # 対話型のサーバー管理
│ ├── test-connection.py # 接続テストユーティリティ
│ └── requirements.txt # Pythonの依存関係
├── examples/
│ ├── .env.example # 設定例
│ └── claude-code-config.example.json
├── package.json # Node.jsの依存関係
├── .env # サーバー設定 (`.env.example`から作成)
└── README.md # このファイル
🧪 テスト
サーバー接続をテストする
python tools/test-connection.py production
MCPのインストールを確認する
claude mcp list
Claude Codeでサーバーのステータスを確認する
/mcp
🔒 セキュリティのベストプラクティス
.envファイルを決してコミットしない - 常に.env.exampleをテンプレートとして使用します。
- 可能な場合はSSHキーを使用する - パスワードよりも安全です。
- サーバーへのアクセスを制限する - 必要最小限の権限を使用します。
- 資格情報を定期的に更新する - パスワードとキーを定期的に更新します。
📚 高度な使い方
ドキュメント
- DEPLOYMENT_GUIDE.md - デプロイ戦略とパーミッションの管理
- ALIASES_AND_HOOKS.md - コマンドエイリアスと自動化フック
- 実際の使用例とベストプラクティス
🐛 トラブルシューティング
MCPツールが利用できない場合
- MCPがインストールされていることを確認します:
claude mcp list
- インストール後にClaude Codeを再起動します。
- サーバーログを確認してエラーをチェックします。
接続に失敗した場合
- 接続をテストします:
python tools/test-connection.py [server_name]
- ネットワークの接続性を確認します。
- ファイアウォールのルールを確認します。
- リモートサーバーでSSHサービスが実行されていることを確認します。
権限が拒否された場合
- ユーザー名とパスワード/キーを確認します。
- SSHキーの権限を確認します:
chmod 600 ~/.ssh/your_key
- ユーザーがリモートサーバー上で必要な権限を持っていることを確認します。
🤝 コントリビューション
コントリビューションを歓迎します! 詳細はCONTRIBUTING.mdを参照してください。
開発環境のセットアップ
- リポジトリをフォークします。
- クローンして依存関係をインストールします。
- コード品質のためのプリコミットフックを設定します。
./scripts/setup-hooks.sh
- 機能ブランチを作成します。
- 変更を加えます (コミット時にフックが検証を行います)。
- ブランチにプッシュします。
- プルリクエストを開きます。
コード品質
このプロジェクトは自動化された品質チェックを使用しています。
- ESLint - JavaScriptのリントツール
- Black - Pythonのコードフォーマッター
- Flake8 - Pythonのリントツール
- Prettier - コードフォーマッター
- プリコミットフック - 自動検証
- シークレット検出 - 資格情報の漏洩を防止
手動で検証を実行するには:
./scripts/validate.sh
📄 ライセンス
このプロジェクトはMITライセンスのもとで公開されています。詳細はLICENSEファイルを参照してください。
🙏 謝辞
📧 サポート
問題、質問、または提案がある場合は、以下の方法で対応します。
Made with ❤️ for the Claude Code community