MCP SSH Docker Server について
MCP SSH Docker Serverは、SSH経由でリモートシステム上のコマンドを実行し、Dockerコンテナ内でもコマンドを実行するMCPインターフェースを提供します。出力や進捗の取得、実行のキャンセルが必要なクライアント向けです。
主な機能
- 01SSH経由でリモートシステムのコマンドを実行
- 02Dockerコンテナ内でコマンドを実行
- 03コマンド出力と進捗のストリーミング
- 04構造化JSON形式の結果を返却
- 05コマンドのキャンセルとタイムアウト設定
活用シーン
- 01リモートホストでコマンドを実行
- 02Dockerコンテナ内でコマンドを実行
- 03長時間実行するコマンドの出力を取得
- 04コマンド結果をJSON形式で取得
MCP 対応
MCPクライアントにSSHおよびDockerのコマンド実行ツールを提供します。コンテナ一覧の取得やコマンドのキャンセルにも対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP SSH Docker サーバー
SSH および Docker コマンドを実行する機能を提供する Message Control Protocol(MCP)サーバーです。このサーバーを使用すると、標準化されたインターフェースを通じて、リモートシステムや Docker コンテナ上でコマンドを実行できます。
機能
- リモートシステム上での SSH コマンド実行
- Docker コンテナ内でのコマンド実行
- コマンド出力のリアルタイムストリーミング
- 長時間実行されるコマンドの進捗報告
- 構造化された JSON 出力のサポート
- コマンドのキャンセルのサポート
- 接続およびコマンドのタイムアウト
- 包括的なエラー処理
前提条件
- Python 3.7+
- 対象システムへの SSH アクセス
- 対象システムに Docker がインストールされていること(Docker コマンドを使用する場合)
インストール
pip を使用する場合
pip install mcp-ssh-frr
ソースからインストールする場合
- リポジトリをクローンします:
git clone https://github.com/aweher/mcp-ssh-frr.git
cd mcp-ssh-frr
- 仮想環境を作成して有効化します:
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
- 依存関係をインストールします:
pip install -r requirements.txt
- パッケージを開発モードでインストールします:
pip install -e .
-
SSH を設定します:
-
SSH 秘密鍵を
./config/id_rsaに配置します -
環境変数を設定します:
export SSH_HOST="your-remote-host" export SSH_USER="your-username" # Defaults to root export SSH_PORT="22" # Optional, defaults to 22 -
your-remote-hostのauthorized_keysファイルに公開鍵を追加してください
-
使い方
サーバーの起動
python mcp_ssh_docker_server.py
利用可能なツール
1. SSH コマンドの実行(ssh_exec)
リモートシステム上で任意のコマンドを実行します:
{
"name": "ssh_exec",
"args": {
"command": "ls",
"args": ["-la", "/etc"],
"stream": false, # Set to true for real-time output
"structured_output": false # Set to true for JSON output
}
}
2. Docker コマンドの実行(ssh_exec_docker)
Docker コンテナ内でコマンドを実行します:
{
"name": "ssh_exec_docker",
"args": {
"container": "my-container",
"command": "vtysh",
"args": ["-c", "show ip bgp"],
"stream": false,
"structured_output": false
}
}
利用可能なコンテナを一覧表示します:
{
"name": "ssh_exec_docker",
"args": {
"list_containers": true,
"structured_output": false
}
}
出力形式
- テキスト出力(デフォルト):
$ command arg1 arg2
(exit code 0)
output line 1
output line 2
- 構造化 JSON 出力:
{
"command": "command arg1 arg2",
"exit_code": 0,
"stdout": "output line 1\noutput line 2",
"stderr": "",
"duration": 0.123,
"metadata": {
"container": "my-container" // For Docker commands
}
}
- 進捗状況の更新(ストリーミング時):
[progress] 45% - Bytes read: 1024
設定
タイムアウト
- SSH 接続タイムアウト:10 秒
- コマンド実行タイムアウト:30 秒
- ストリームの最大時間:300 秒(5 分)
バッファーサイズ
- ストリームバッファーサイズ:1024 バイト
エラー処理
サーバーはさまざまなエラー状況に対応します:
- 接続タイムアウト
- 認証失敗
- コマンド実行エラー
- Docker コンテナエラー
- コマンドのキャンセル
セキュリティ
- SSH 鍵ベースの認証を使用
- コマンドの引数を適切にエスケープ
- コマンドインジェクションの脆弱性なし
- 安全な接続処理
貢献
- リポジトリをフォークします
- 機能ブランチを作成します
- 変更をコミットします
- ブランチにプッシュします
- プルリクエストを作成します
ライセンス
GPLv3
作者
Ariel S. Weher <ariel[at]weher.net>
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。