mcpField
M
MCP SSH Docker Server

MCP SSH Docker Server

ローカル
github.com/aweher開発ツール078 週間前に更新

MCP SSH Docker Server について

MCP SSH Docker Serverは、SSH経由でリモートシステム上のコマンドを実行し、Dockerコンテナ内でもコマンドを実行するMCPインターフェースを提供します。出力や進捗の取得、実行のキャンセルが必要なクライアント向けです。

主な機能

  1. 01SSH経由でリモートシステムのコマンドを実行
  2. 02Dockerコンテナ内でコマンドを実行
  3. 03コマンド出力と進捗のストリーミング
  4. 04構造化JSON形式の結果を返却
  5. 05コマンドのキャンセルとタイムアウト設定

活用シーン

  1. 01リモートホストでコマンドを実行
  2. 02Dockerコンテナ内でコマンドを実行
  3. 03長時間実行するコマンドの出力を取得
  4. 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
ソースからインストールする場合
  1. リポジトリをクローンします:
git clone https://github.com/aweher/mcp-ssh-frr.git
cd mcp-ssh-frr
  1. 仮想環境を作成して有効化します:
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
  1. 依存関係をインストールします:
pip install -r requirements.txt
  1. パッケージを開発モードでインストールします:
pip install -e .
  1. 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
    }
}
出力形式
  1. テキスト出力(デフォルト):
$ command arg1 arg2
(exit code 0)

output line 1
output line 2
  1. 構造化 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
    }
}
  1. 進捗状況の更新(ストリーミング時):
[progress] 45% - Bytes read: 1024

設定

タイムアウト
  • SSH 接続タイムアウト:10 秒
  • コマンド実行タイムアウト:30 秒
  • ストリームの最大時間:300 秒(5 分)
バッファーサイズ
  • ストリームバッファーサイズ:1024 バイト

エラー処理

サーバーはさまざまなエラー状況に対応します:

  • 接続タイムアウト
  • 認証失敗
  • コマンド実行エラー
  • Docker コンテナエラー
  • コマンドのキャンセル

セキュリティ

  • SSH 鍵ベースの認証を使用
  • コマンドの引数を適切にエスケープ
  • コマンドインジェクションの脆弱性なし
  • 安全な接続処理

貢献

  1. リポジトリをフォークします
  2. 機能ブランチを作成します
  3. 変更をコミットします
  4. ブランチにプッシュします
  5. プルリクエストを作成します

ライセンス

GPLv3

作者

Ariel S. Weher <ariel[at]weher.net>

コメント

MCP は初めてですか?

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

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