mcpField
M
MCP Server SSH Client

MCP Server SSH Client

ローカル
github.com/Machine-To-Machine開発ツール1069 週間前に更新

MCP Server SSH Client について

MCP Server SSH Clientは、リモートマシン上のMCPサーバーに接続するコマンドラインクライアントです。SSH経由でMCPリクエストを転送し、ローカルプロキシを介して機能を利用できます。鍵認証に対応しています。

主な機能

  1. 01SSHによるリモートMCPサーバー接続
  2. 02リモート機能のローカルプロキシ
  3. 03MCPプロトコルリクエストの転送
  4. 04SSH鍵認証

活用シーン

  1. 01リモートマシン上のツールへのアクセス
  2. 02ローカルMCPホストからリモートサーバーへの接続
  3. 03MCP Inspectorによるリモートツールのテスト

MCP 対応

SSH経由でリモートMCPサーバーに接続し、そのツール、プロンプト、リソースをローカルプロキシ経由で公開します。MCPリクエストと応答はSSH接続を通じて転送されます。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

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

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

詳細

MCP サーバー SSH クライアント

PyPI version Python Versions License: MIT

SSH 経由でリモートの MCP サーバーに接続する、Model Context Protocol サーバー(リモート SSH クライアント)です。このクライアントを使うと、リモートサーバー上でホストされている MCP ツールにアクセスして利用でき、MCP 通信のためのセキュアなチャネルを提供します。

README の画像

機能

  • SSH 経由で任意の MCP サーバーに接続
  • セキュアな SSH チャネルを通じて、すべての MCP プロトコルコマンドをプロキシ
  • 鍵ベースの認証をサポート
  • ツール、プロンプト、リソースなど、MCP の各種機能をサポート

インストール

uv で管理されている Python プロジェクトでは、次のように依存関係に追加します。

uv add m2m-mcp-server-ssh-client

依存関係の管理に pip を使用するプロジェクトでは、次のようにします。

pip install m2m-mcp-server-ssh-client

ソースから直接インストールするには、次のようにします。

git clone https://github.com/Machine-To-Machine/m2m-mcp-server-ssh-client.git
cd m2m-mcp-server-ssh-client
pip install -e .

プロジェクト内でサーバーを実行するには、次のようにします。

uv run m2m-mcp-server-ssh-client

よくあるユースケース

1. デモサーバーですぐに試す

さまざまな MCP ツールを設定済みで、すぐに使える公開デモサーバーを提供しています。(オープンな分散型レジストリを公開するまで、このサーバーを利用できます。)

このデモサーバーには、HackerNews、MLB Stats API、Formula 1 API のツールなど、複数の MCP サーバーが含まれており、試してみることができます。

Claude

Claude をこのサーバーに接続するには、次の内容を Claude Desktop の設定に追加します。

"mcpServers": {
  "remote-mcp-tools": {
    "command": "uvx",
    "args": [
      "m2m-mcp-server-ssh-client", 
      "--host", "mcp-beta.machinetomachine.ai", 
      "--port", "8022", 
      "--use-key-server"
    ]
  }
}
コマンドライン
# Connect to the M2M public demo server with automatic key exchange
uv run m2m-mcp-server-ssh-client --host mcp-beta.machinetomachine.ai --use-key-server
2. ローカル開発でのテスト

独自の SSH サーバーの設定方法については、m2m-mcp-server-ssh-serverを参照してください。

独自の MCP ツールを使ってローカルでテストするには、次のようにします。

# Connect to a local MCP SSH server
uv run m2m-mcp-server-ssh-client

上記のコマンドは、ポート 8022 で待ち受けているローカル SSH サーバーへの接続を試みます。

ローカルでテストする際は、鍵サーバーを使用すると鍵交換を簡略化できます。

# Use the key server for automatic key management (if server has --run-key-server enabled)
uv run m2m-mcp-server-ssh-client --use-key-server

上記のコマンドは、ポート 8000 で実行中の鍵サーバーを使用しようとします。

3. リモートサーバーへの接続

ホストしている独自の MCP サーバーに接続するには、次のようにします。

# Using existing SSH keys
uv run m2m-mcp-server-ssh-client --host your-server.example.com --client-key ~/.ssh/your_key --known-hosts ~/.ssh/known_hosts

リモートサーバーで鍵サーバーを実行し、クライアントで設定すると、鍵交換を簡略化できます。

AI プラットフォームでの使用

Claude Desktop との連携

次の内容を Claude Desktop の設定に追加します。

"mcpServers": {
  "remote-mcp-tools": {
    "command": "uvx",
    "args": [
      "m2m-mcp-server-ssh-client", 
      "--host", "mcp-beta.machinetomachine.ai", 
      "--port", "8022", 
      "--use-key-server"
    ]
  }
}
MCP Inspector

デバッグや利用可能なツールの確認には、次のようにします。

npx @modelcontextprotocol/inspector -- uvx m2m-mcp-server-ssh-client --host mcp-beta.machinetomachine.ai --port 8022 --use-key-server

使い方

コマンドラインオプション
  • --host:リモート SSH サーバーのホスト(デフォルト:"localhost")
  • --port:リモート SSH サーバーのポート(デフォルト:8022)
  • --username:SSH ユーザー名(デフォルト:"mcp")
  • --client-key:クライアントの秘密鍵ファイル(デフォルト:"~/.ssh/m2m_mcp_server_ssh_client")
  • --known-hosts:known hosts ファイルのパス(デフォルト:"~/.ssh/known_hosts")
  • --passphrase:秘密鍵のパスフレーズ(デフォルト:None)
  • --disable-host-key-checking:サーバー署名の検証をスキップ(デフォルト:False)
  • --log-level:ログレベルを設定(デフォルト:INFO)

詳細な例

リモートサーバーへの基本接続

ポート 8022 で実行中のリモート MCP サーバー(SSH サーバー)に接続します。

uvx m2m-mcp-server-ssh-client --host mcp.example.com
カスタム SSH 鍵の使用

認証に特定の SSH 鍵を指定します。

uvx m2m-mcp-server-ssh-client --host mcp.example.com --client-key ~/.ssh/mcp_custom_key

鍵がパスフレーズで保護されている場合は、次のようにします。

uvx m2m-mcp-server-ssh-client --host mcp.example.com --client-key ~/.ssh/mcp_custom_key --passphrase "your-passphrase"
トラブルシューティング用のデバッグモード

接続の問題を調査するため、詳細なログを有効にします。

uvx m2m-mcp-server-ssh-client --host mcp.example.com --log-level DEBUG
キーサーバーとの統合

MCP SSH Client は、動的なキー交換と検証にキーサーバーを使用できます。

uvx m2m-mcp-server-ssh-client --host mcp.example.com --use-key-server

キーサーバーを使用する場合:

  1. クライアントはサーバーの公開鍵を http://host:key-server-port/server_pub_key から取得します
  2. クライアントは公開鍵を http://host:key-server-port/register でサーバーに登録します
  3. SSH 接続用の一時的な known_hosts ファイルが作成されます

この機能は --known-hosts および --disable-host-key-checking とは併用できません。

ホスト鍵のチェックを無効にする

⚠️ セキュリティ警告:--disable-host-key-checking を使用すると、中間者攻撃に対して接続が脆弱になります。このオプションは、信頼できるネットワーク内、または開発/テスト目的でのみ使用してください。

uvx m2m-mcp-server-ssh-client --host localhost --disable-host-key-checking
Claude Desktop の設定

Claude の設定に追加します。

"mcpServers": {
  "remote-servers": {
    "command": "uvx",
    "args": [
      "m2m-mcp-server-ssh-client", 
      "--host", "example.com", 
      "--port", "8022", 
      "--username", "mcp"
    ]
  }
}

特定の鍵を使用する、より安全な設定の場合:

"mcpServers": {
  "remote-servers": {
    "command": "uvx",
    "args": [
      "m2m-mcp-server-ssh-client",
      "--host", "mcp-server.example.com",
      "--port", "8022",
      "--username", "claude-mcp",
      "--client-key", "~/.ssh/claude_mcp_key",
      "--known-hosts", "~/.ssh/mcp_remote_server"
    ]
  }
}

動作の仕組み

MCP Server SSH Client は、MCP ツール用の MCP Server SSH Server(m2m-mcp-server-ssh-server)を実行しているリモートサーバーに SSH 接続を確立します。その後、次の処理を行います。

  1. リモート MCP サーバーの機能をミラーリングするローカルプロキシサーバーを作成します
  2. すべての MCP リクエストを SSH 接続経由でリモートサーバーに転送します
  3. リモートサーバーからの応答をローカルクライアントに返します

これにより、リモートマシン上で動作するツールを、ローカルにインストールされているかのように使用できます。

認証フロー
%%{init: {'theme':'default', 'themeVariables': { 'primaryColor': '#5D8AA8', 'primaryTextColor': '#fff', 'primaryBorderColor': '#1F456E', 'lineColor': '#5D8AA8', 'secondaryColor': '#006400', 'tertiaryColor': '#fff' }}}%%

sequenceDiagram
    participant Host as MCP Host<br>(Claude/Cursor)
    participant Client as MCP SSH Client
    participant KeySrv as Key Server<br>(HTTP API)
    participant SSHSrv as MCP SSH Server
    participant MCP as MCP Servers

    Note over Client,SSHSrv: Initial Key Exchange & Authentication
    
    Client->>Client: Generate SSH key pair<br>if does not exist
    Client->>KeySrv: GET /server_pub_key
    KeySrv->>Client: Return server's public key
    Client->>Client: Store server key in<br>temporary known_hosts
    Client->>KeySrv: POST /register<br>{client_pub_key: "ssh-ed25519 AAAA..."}
    KeySrv->>SSHSrv: Store client public key<br>in authorized keys
    KeySrv->>Client: {status: "success"}
    
    Note over Client,SSHSrv: Secure SSH Connection
    
    Client->>SSHSrv: SSH handshake with<br>client key authentication
    SSHSrv->>SSHSrv: Verify client key<br>against authorized keys
    SSHSrv->>Client: Authentication successful
    
    Note over Client,SSHSrv: MCP Communication
    
    Host->>Client: JSONRPC request
    Client->>SSHSrv: Forward request<br>over SSH tunnel
    SSHSrv->>MCP: Route request to<br>appropriate MCP server
    MCP->>SSHSrv: Process and return results
    SSHSrv->>Client: Send response over SSH
    Client->>Host: Return JSONRPC response
    
    Note over Client,SSHSrv: Session Management
    
    alt Session Termination
        Host->>Client: Close connection
        Client->>SSHSrv: Terminate SSH session
        SSHSrv->>SSHSrv: Clean up resources
    end

セキュリティに関する考慮事項

  • 本番環境では必ずホスト鍵の検証を使用してください
  • セキュリティを強化するため、パスフレーズで保護された SSH 鍵を使用してください
  • MCP 接続専用の SSH 鍵の使用を検討してください
  • SSH 鍵ファイルに適切なアクセス権限(600)を設定してください
  • リモートサーバーでは、専用の権限を制限したユーザーを使用してください

よくある問題のトラブルシューティング

接続拒否
Error running MCP SSH client: [Errno 111] Connection refused

解決策:ホストとポートが正しいこと、および SSH サービスが実行中であることを確認してください。

認証の失敗
Error running MCP SSH client: Authentication failed

解決策:鍵ファイルのパスを確認してください。リモートサーバーに公開鍵が登録されていることを確認してください。

ホスト鍵の検証失敗
Error running MCP SSH client: Host key verification failed

解決策:ホスト鍵を known_hosts ファイルに追加するか、--disable-host-key-checking を使用してください(テスト目的のみ)。

依存関係

  • anyio (>=4.5.0)
  • asyncssh (>=2.20.0)
  • mcp (>=1.1.3)
  • pydantic (>=2.0.0)

開発

開発環境のセットアップ
git clone https://github.com/Machine-To-Machine/m2m-mcp-server-ssh-client.git
cd m2m-mcp-server-ssh-client
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
uv pip install -e ".[dev]"
コード品質
# Run linting
uv run ruff check .

# Run formatting check
uv run ruff format --check .

# Run security checks
uv run bandit -r src/

デバッグ

MCP inspector を使用してクライアントをデバッグできます。

npx @modelcontextprotocol/inspector uvx m2m-mcp-server-ssh-client --host example.com

高度なデバッグには、次のワークフローを使用してください。

  1. --log-level DEBUG を指定してクライアントを起動します
  2. SSH 接続パラメーターとハンドシェイクのプロセスを確認します
  3. カスタムキーを使用している場合は、パスとアクセス権限が正しいことを確認します
  4. まず ssh -v を直接使用して、基本的な接続性をテストします

コントリビューション

m2m-mcp-server-ssh-client の拡張と改善に役立つコントリビューションを歓迎します。新機能の追加、既存機能の強化、ドキュメントの改善など、皆さまからのご意見は貴重です。

プルリクエストを歓迎します!新しいアイデア、バグ修正、機能強化をぜひお寄せください。

コントリビューションガイドライン
  1. リポジトリをフォークします
  2. 機能ブランチを作成します:git checkout -b feature-name
  3. 変更をコミットします:git commit -am 'Add some feature'
  4. ブランチにプッシュします:git push origin feature-name
  5. プルリクエストを送信します

ライセンス

MIT License - 詳細は LICENSE ファイルを参照してください。

作者

  • Machine To Machine

コメント

MCP は初めてですか?

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

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