mcpField
R
realssh-mcp

realssh-mcp

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

realssh-mcp について

realssh-mcpは、システムのsshバイナリを介してリモートホストでコマンドを実行するMCPサーバーです。MCPクライアントからSSH操作を行いたいユーザー向けで、既存のssh-agentやSSH設定を利用し、接続テストと実行タイムアウトも備えています。

主な機能

  1. 01システムのsshでリモートコマンドを実行
  2. 02ssh-agentとSSH設定を再利用
  3. 03ProxyCommandと踏み台ホストに対応
  4. 04ホスト接続のテスト
  5. 05stdout、stderr、終了コードを返却

活用シーン

  1. 01リモートサーバーのディスク状態の確認
  2. 02リモートサービスの稼働状況の確認
  3. 03実行前のSSH接続テスト
  4. 04MCPワークフローでの運用コマンド実行

MCP 対応

MCPサーバーはssh_executeとssh_testのツールを公開します。MCPクライアントからリモートコマンドの実行や接続テストを行え、処理はシステムのsshプログラムに委譲されます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"danielecr-realssh": {
"command": "npx",
"args": [
"-y",
"@danielecr/realssh-mcp"
]
}
}
}
起動コマンドnpx -y @danielecr/realssh-mcp

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

パッケージ
npm@danielecr/realssh-mcp1.0.6

ツール

2

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

パラメーター型必須説明
hoststringはいSSH サーバーのホスト名または IP アドレス(例:'dev234' または '192.168.1.100')
portnumberいいえSSH サーバーのポート(デフォルト:22)
commandstringはいリモートサーバーで実行するコマンド
timeoutnumberいいえコマンドのタイムアウト(ミリ秒、デフォルト:30000)
usernamestringいいえSSH ユーザー名(例:'username')。デフォルトは現在の OS ユーザーです。
extraArgsarrayいいえ追加の SSH 引数(例:['-o', 'StrictHostKeyChecking=no'])
agentForwardbooleanいいえ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

コメント

MCP は初めてですか?

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

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