Skip to main content
Glama

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

PyPIバージョン Pythonのバージョン ライセンス: MIT

SSH経由でリモートMCPサーバーに接続するモデルコンテキストプロトコルサーバー(リモートSSHクライアント)。このクライアントは、リモートサーバーでホストされているMCPツールへのアクセスと利用を可能にし、MCP通信のための安全なチャネルを提供します。

特徴

  • SSH経由で任意のMCPサーバーに接続します

  • すべてのMCPプロトコルコマンドを安全なSSHチャネル経由でプロキシする

  • キーベースの認証のサポート

  • ツール、プロンプト、リソースを含む MCP 機能のサポート

Related MCP server: SSH MCP Server

インストール

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 デスクトップ設定に以下を追加するだけです。

"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 デスクトップの設定に以下を追加します:

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

MCP検査官

デバッグや利用可能なツールの調査:

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 : 既知のホストファイルへのパス(デフォルト: "~/.ssh/known_hosts")

  • --passphrase : 秘密鍵のパスフレーズ(デフォルト: なし)

  • --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 クライアントは、動的なキー交換と検証のためにキー サーバーを使用できます。

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デスクトップ用の設定

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クライアントは、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)

  • ピダンティック (>=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 インスペクタを使用してクライアントをデバッグできます。

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 ファイルを参照してください。

著者

  • マシンツーマシン

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Machine-To-Machine/m2m-mcp-server-ssh-client'

If you have feedback or need assistance with the MCP directory API, please join our Discord server