mcpField
S
Ssh

Ssh

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

Ssh について

SshはRust製のSSHクライアントMCPサーバーです。MCP経由でLLMにリモートSSHセッションを管理させたいユーザー向けで、セッション維持、リモートコマンド実行、ポート転送に対応します。

主な機能

  1. 01SSHサーバーへの接続とセッション管理
  2. 02リモートホストでのコマンド実行
  3. 03SSHポート転送の設定
  4. 04アクティブなセッションの一覧表示と切断

活用シーン

  1. 01MCP経由でのSSH接続
  2. 02リモートホストでのコマンド実行
  3. 03ローカルポートからリモートサービスへの転送

MCP 対応

SSH接続、コマンド実行、セッション管理、ポート転送をMCPクライアントに公開します。DockerまたはCargoでインストールできます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"ssh-mcp-mingyang91": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ssh-mcp-stdio"
]
}
}
}
起動コマンドdocker run -i --rm ssh-mcp-stdio

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

パッケージ
ocissh-mcp-stdio

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

SSH-MCP Server

Crates.io Version Docker Image Version

Model Context Protocol(MCP)と統合したSSHクライアントサーバーのRust実装です。LLMがSSHサーバーに接続し、SSHの機能を利用できます。

軽量かつ効率的:

  • 🚀 ssh-mcp:バイナリサイズはわずか4.3MB、メモリ使用量は1.8MB
  • 🔄 ssh-mcp-stdio:バイナリサイズはわずか1.5MB、メモリ使用量は2.3MB
  • 🐳 docker:最終イメージサイズはわずか27.5MB

特徴

  • SSHクライアント統合:MCPコマンドを使ってSSHサーバーに接続します
  • SSHコマンドの実行:リモートSSHサーバーでコマンドを実行します
  • ポートフォワーディング:SSHトンネルとポートフォワーディングを設定します(port_forward 機能によりデフォルトで有効です)
  • セッション管理:複数のSSHセッションを追跡、管理します
  • MCPプロトコルのサポート:AI/LLMとの互換性を実現するため、poem-mcpserverを使用して構築されています
  • ステートフル接続:複数のコマンドにわたってSSHセッションを維持します

インストールと統合

インストール方法は2つあります。

オプション1:Dockerを使用する(推奨)

Rustツールチェーンは不要です。Dockerだけで使用できます!

# Pull the pre-built image from Docker Hub
docker pull mingyang91/ssh-mcp

# Run the server
docker run -p 8000:8000 mingyang91/ssh-mcp

または、イメージを自分でビルドします。

# Build the Docker image
docker build -t ssh-mcp .

# Run the server
docker run -p 8000:8000 ssh-mcp
オプション2:Cargoを使用してインストールする

前提条件:

  • Rust 1.70.0以降
  • Cargoパッケージマネージャー
cargo install ssh-mcp

mcpServersとの統合

SSH-MCPをmcpServersで使用するには、mcpServersのJSON設定に以下の設定を追加します。

Cargo経由でインストールした場合:
{
  "mcpServers": {
    "ssh": {
      "command": "ssh-mcp-stdio", 
      "args": []
    }
  }
}
Dockerを使用する場合:
{
  "mcpServers": {
    "ssh": {
      "command": "docker",
      "args": ["run", "--entrypoint", "ssh-mcp-stdio", "-i", "--rm", "ssh-mcp"]
    }
  }
}

これによりSSHハンドラーが登録され、LLMがMCPサーバーを通じてSSH接続を管理できるようになります。

使用方法

SSHサーバーへの接続
パスワード認証を使用する場合
{
  "command": "ssh_connect",
  "params": {
    "address": "example.com:22",
    "username": "user",
    "password": "password"
  }
}
鍵認証を使用する場合
{
  "command": "ssh_connect",
  "params": {
    "address": "example.com:22",
    "username": "user",
    "key_path": "/path/to/private_key"
  }
}
SSHエージェント認証を使用する場合
{
  "command": "ssh_connect",
  "params": {
    "address": "example.com:22",
    "username": "user"
  }
}

応答:

{
  "session_id": "c8a3b2e1-4f5d-6e7c-8a9b-0c1d2e3f4a5b",
  "message": "Successfully connected to [email protected]:22",
  "authenticated": true
}

接続に失敗した場合:

{
  "error": "Failed to connect: Connection refused"
}
コマンドの実行
{
  "command": "ssh_execute",
  "params": {
    "session_id": "c8a3b2e1-4f5d-6e7c-8a9b-0c1d2e3f4a5b",
    "command": "ls -la"
  }
}

応答:

{
  "stdout": "total 32\ndrwxr-xr-x  5 user group 4096 Jan 1 12:00 .\ndrwxr-xr-x 25 user group 4096 Jan 1 12:00 ..\n-rw-r--r--  1 user group  142 Jan 1 12:00 file.txt\n",
  "stderr": "",
  "exit_code": 0
}
ポートフォワーディングの設定

注:ポートフォワーディングは port_forward 機能によりデフォルトで有効です。

{
  "command": "ssh_forward",
  "params": {
    "session_id": "c8a3b2e1-4f5d-6e7c-8a9b-0c1d2e3f4a5b",
    "local_port": 8080,
    "remote_address": "internal-server",
    "remote_port": 80
  }
}

応答:

{
  "local_address": "127.0.0.1:8080",
  "remote_address": "internal-server:80",
  "active": true
}
セッションの切断
{
  "command": "ssh_disconnect",
  "params": {
    "session_id": "c8a3b2e1-4f5d-6e7c-8a9b-0c1d2e3f4a5b"
  }
}

応答:

"Session c8a3b2e1-4f5d-6e7c-8a9b-0c1d2e3f4a5b disconnected successfully"
すべてのアクティブなセッションの一覧表示
{
  "command": "ssh_list_sessions"
}

応答:

[
  "c8a3b2e1-4f5d-6e7c-8a9b-0c1d2e3f4a5b",
  "d9b4c3a2-5e6f-7g8h-9i0j-1k2l3m4n5o6p"
]

設定

サーバーは、以下の環境変数を使って設定できます。

変数説明デフォルト
MCP_PORTMCPサーバーのポート8000
RUST_LOGログレベルinfo

機能の設定

このプロジェクトではCargoの機能を使って、一部の機能を有効または無効にします。

機能説明デフォルト
port_forwardSSHポートフォワーディングのサポートを有効にします有効

ポートフォワーディングを無効にしてビルドするには:

cargo build --release --no-default-features

コントリビューション

コントリビューションを歓迎します!お気軽にプルリクエストを送信してください。

CI/CDパイプライン

このプロジェクトでは、継続的インテグレーションとデプロイにGitHub Actionsを使用しています。

  • すべてのPRとmainへのコミットは自動的にテストされます
  • タグ付きリリース(v で始まるもの)は、自動的にcrates.ioに公開されます
  • Dockerイメージは自動的にビルドされ、Docker Hubにプッシュされます
    • mainブランチにはlatestタグが付与されます
    • セマンティックバージョニングによるリリース(v1.0.0、v1.0など)にはバージョンタグが付与されます
  • 新しいリリースを作成する際は、Cargo.tomlのバージョンがタグと一致していることを確認してください(例:v0.1.0)
  • GitHubリポジトリの設定で、CARGO_REGISTRY_TOKEN、DOCKERHUB_USERNAME、DOCKERHUB_TOKEN のシークレットを設定する必要があります

ライセンス

このプロジェクトはMITライセンスの下で公開されています。詳細はLICENSEファイルをご覧ください。

コメント

MCP は初めてですか?

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

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