realssh-mcp について
realssh-mcpは、システムのsshバイナリを介してリモートホストでコマンドを実行するMCPサーバーです。MCPクライアントからSSH操作を行いたいユーザー向けで、既存のssh-agentやSSH設定を利用し、接続テストと実行タイムアウトも備えています。
主な機能
- 01システムのsshでリモートコマンドを実行
- 02ssh-agentとSSH設定を再利用
- 03ProxyCommandと踏み台ホストに対応
- 04ホスト接続のテスト
- 05stdout、stderr、終了コードを返却
活用シーン
- 01リモートサーバーのディスク状態の確認
- 02リモートサービスの稼働状況の確認
- 03実行前のSSH接続テスト
- 04MCPワークフローでの運用コマンド実行
MCP 対応
MCPサーバーはssh_executeとssh_testのツールを公開します。MCPクライアントからリモートコマンドの実行や接続テストを行え、処理はシステムのsshプログラムに委譲されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
2掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| host | string | はい | SSH サーバーのホスト名または IP アドレス(例:'dev234' または '192.168.1.100') |
| port | number | いいえ | SSH サーバーのポート(デフォルト:22) |
| command | string | はい | リモートサーバーで実行するコマンド |
| timeout | number | いいえ | コマンドのタイムアウト(ミリ秒、デフォルト:30000) |
| username | string | いいえ | SSH ユーザー名(例:'username')。デフォルトは現在の OS ユーザーです。 |
| extraArgs | array | いいえ | 追加の SSH 引数(例:['-o', 'StrictHostKeyChecking=no']) |
| agentForward | boolean | いいえ | SSH エージェント転送を有効にします(デフォルト:false) |
詳細
SSH Real MCP サーバー
システムの ssh バイナリに全面的に処理を委任して、SSH リモートコマンド実行を可能にする Model Context Protocol(MCP)サーバーです。つまり、ssh-agent、ProxyCommand、~/.ssh/config、踏み台ホストなど、OS レベルのあらゆる SSH 機能をそのまま利用できます。Node.js の暗号化機能やネイティブアドオンは不要です。
仕組み
Node.js で SSH プロトコルを実装する代わりに、このサーバーは子プロセスとして ssh を起動し、その出力を MCP クライアントに返します。認証、鍵の検索、接続先へのルーティングは、ターミナルで自分で ssh を実行した場合と同じように OS が処理します。
要件: ssh がインストールされ、PATH から利用できる必要があります(macOS および Linux では標準で利用できます)。
機能
- 認証設定不要 — 既存の
ssh-agent、~/.ssh/config、鍵ファイルを自動的に使用します - ProxyCommand/踏み台ホスト — 標準で動作し、特別なパラメーターは不要です
- 接続テスト — コマンド実行前に接続可能か確認する
ssh_testツール - 引数インジェクション対策 —
sshに渡す前にホストとユーザー名を検証します - タイムアウト設定 — コマンドがタイムアウトを超えると強制終了し、エラーを返します
- 詳細な結果:標準出力、標準エラー出力、終了コード
インストール
npm から
npm install -g @danielecr/realssh-mcp
ソースから
git clone https://github.com/danielecr/realssh-mcp.git
cd realssh-mcp
npm install
npm run build
VS Code/Copilot の設定
パッケージをグローバルにインストールしたら、MCP の設定にサーバーを追加します。VS Code で Command Palette → MCP: Open User Configuration から MCP 設定ファイルを開き、次の内容を追加します。
{
"servers": {
"realssh": {
"type": "stdio",
"command": "realssh-mcp"
}
}
}
次に MCP: List Servers を実行して、サーバーが有効になっていることを確認します。
ツール
ssh_execute
SSH 経由でリモートサーバー上のコマンドを実行します。
パラメーター:
host(文字列、必須):SSH サーバーのホスト名または IP アドレスcommand(文字列、必須):リモートサーバー上で実行するコマンドusername(文字列、任意):SSH ユーザー名。デフォルトは現在の OS ユーザーですport(数値、任意):SSH サーバーのポート(デフォルト:22)timeout(数値、任意):コマンドのタイムアウト(ミリ秒、デフォルト:30000)agentForward(ブール値、任意):SSH エージェント転送-Aを有効にします(デフォルト:false)extraArgs(文字列配列、任意):追加の SSH 引数(例:["-o", "StrictHostKeyChecking=no"])
例:
{
"host": "prod-web-01",
"command": "df -h"
}
{
"host": "192.168.1.100",
"username": "deploy",
"command": "systemctl status nginx"
}
ssh_test
リモートホストへの SSH 接続をテストします(echo ok を実行して応答を確認します)。
パラメーター:
host(文字列、必須):SSH サーバーのホスト名または IP アドレスusername(文字列、任意):SSH ユーザー名port(数値、任意):SSH サーバーのポート(デフォルト:22)extraArgs(文字列配列、任意):追加の SSH 引数
ホストの設定
ホスト、エイリアス、踏み台ホスト、ID ファイルは MCP サーバーではなく、~/.ssh/config で設定します。これは意図した仕様です。OS の ssh バイナリがこのファイルを直接読み込むためです。
~/.ssh/config の例:
Host prod
HostName prod.example.com
User deploy
ProxyJump bastion
Host bastion
HostName bastion.example.com
User admin
IdentityFile ~/.ssh/bastion_ed25519
上記の設定があれば、追加のパラメーターなしで "host": "prod" を使用できます。
セキュリティ上の考慮事項
- コマンドは SSH ユーザーの権限でリモートシステム上で実行されます。リモート側のアクセス制御を適切に設定してください。
- デフォルトで
BatchMode=yesが設定され、sshプロセスが対話型プロンプトで停止するのを防ぎます。 - SSH オプションのインジェクションを防ぐため、ホストとユーザー名の入力を検証します。
- コマンド出力には機密データが含まれる場合があります。適切に取り扱ってください。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。