MCP Server SSH Server について
MCP Server SSH Serverは、SSH経由でリモートにあるMCPツールへアクセスし、複数のMCPサーバーを単一のインターフェースに集約します。鍵認証と、任意で使えるHTTP鍵管理APIに対応します。
主な機能
- 01SSH経由のリモートMCPアクセス
- 02鍵ベースのクライアント認証
- 03複数のMCPサーバーの集約
- 04JSONによるサーバー設定
- 05任意のHTTP鍵管理API
- 06プロンプト、リソース、ツール、ログに対応
活用シーン
- 01リモートホスト上のMCPツールへのアクセス
- 02複数のMCPプロバイダーの統合
- 03HTTP経由でのクライアント鍵登録
- 04ローカルMCPツール群の設定
MCP 対応
設定済みのMCPサーバーをSSH経由でプロキシし、統合インターフェースからプロンプト、リソース、ツール、ログ機能を公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Server SSH サーバー
リモートにインストールされた MCP(Model Context Protocol)ツールにアクセスして操作するための、安全な SSH サーバーです。このサーバーを使うと、クライアントは統一されたセキュアなインターフェースを介して、複数の MCP ツールプロバイダーに接続できます。
特長
- 安全なリモートアクセス:SSH 経由で MCP ツールにリモートアクセスできます
- 鍵ベース認証:鍵ベースの認証に対応しています
- 鍵管理 API:SSH 鍵を管理するためのオプションの HTTP API
- サーバー集約:複数の MCP サーバーをプロキシし、統一されたインターフェースに統合します
- MCP のサポート:以下を含む MCP の機能に対応しています:
- プロンプト
- リソース
- ツール
- ロギング
- 動的な設定:シンプルな JSON 設定で、利用可能な MCP サーバーを設定できます
認証フロー
%%{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
インストール
uv で管理されている Python プロジェクトでは、次の方法で依存関係に追加します:
uv add m2m-mcp-server-ssh-server
# For key server functionality, include the optional dependency:
uv add m2m-mcp-server-ssh-server[key-server]
また、依存関係に pip を使用するプロジェクトでは、次の方法で追加します:
pip install m2m-mcp-server-ssh-server
# Or with key server functionality
pip install m2m-mcp-server-ssh-server[key-server]
ソースから直接インストールするには:
git clone https://github.com/Machine-To-Machine/m2m-mcp-server-ssh-server.git
cd m2m-mcp-server-ssh-server
pip install -e .
プロジェクト内でサーバーを実行するには:
uv run m2m-mcp-server-ssh-server
よくあるユースケース
1. ローカル開発環境
お好みの MCP ツールを使って、ローカルサーバーをすばやくセットアップします:
- 設定ファイル(
servers_config.json)を作成します:
{
"mcpServers": {
"HackerNews": {
"command": "uvx",
"args": ["mcp-hn"]
},
"major-league-baseball": {
"command": "uvx",
"args": ["mcp_mlb_statsapi"]
}
}
}
- クライアントが接続しやすいように、鍵管理 API を有効にしてサーバーを起動します:
uv run m2m-mcp-server-ssh-server --run-key-server
- クライアントを使って接続します:
uv run m2m-mcp-server-ssh-client --host localhost --port 8022 --use-key-server
2. リモートホスティング(クイックセットアップ)
MCP ツールをリモートから利用できるようにするには:
- サーバーにインストールします:
uv add m2m-mcp-server-ssh-server[key-server]
-
使用したい MCP ツールを指定して設定ファイルを作成します
-
すべてのインターフェースにバインドしてサーバーを起動します:
uv run m2m-mcp-server-ssh-server --host 0.0.0.0 --run-key-server --key-server-host 0.0.0.0
- クライアントマシンから接続します:
uv run m2m-mcp-server-ssh-client --host your-server.example.com --port 8022 --use-key-server
より詳しいデプロイ手順については、クラウドデプロイガイドを参照してください。
使用方法
コマンドラインオプション
--host:バインドする SSH サーバーのホストアドレス(デフォルト:127.0.0.1)--port:SSH サーバーがリッスンするポート(デフォルト:8022)--authorized-clients:認証済み鍵ファイルのパス(デフォルト:~/.ssh/authorized_keys)--server-key:サーバー秘密鍵ファイルのパス(デフォルト:~/.ssh/m2m_mcp_server_ssh_server)--passphrase:秘密鍵のパスフレーズ(任意)--servers-config:サーバー設定 JSON のパス(デフォルト:servers_config.json)--log-level:ログレベルを設定します(デフォルト:INFO)--run-key-server:HTTP 鍵管理サーバーを実行します--key-server-port:HTTP 鍵管理サーバーのポート(デフォルト:8000)--key-server-host:HTTP 鍵管理サーバーのホスト(デフォルト:127.0.0.1)--version:バージョン情報を表示して終了します
セキュリティに関する注意:すべてのインターフェース(0.0.0.0)にバインドすると、システムに到達できるすべてのマシンからサーバーにアクセスできるようになります。強力な認証を使用し、ファイアウォールなどの追加のセキュリティ対策も検討してください。
鍵管理サーバー
クライアント鍵の登録を簡単にするため、SSH サーバーとともに鍵管理 HTTP サーバーを任意で実行できます:
uv run m2m-mcp-server-ssh-server --run-key-server
次のサーバーが起動します:
- ポート 8022 の SSH サーバー
- ポート 8000 の鍵管理 HTTP サーバー(デフォルトでは localhost のみ)
鍵管理 API
鍵管理サーバーは、次のエンドポイントを提供します:
-
POST /register- クライアントの公開鍵を登録します- リクエストボディ:
{"client_pub_key": "ssh-rsa AAAA..."} - レスポンス:
{"status": "success"}またはエラーメッセージ
- リクエストボディ:
-
GET /server_pub_key- サーバーの公開鍵を取得します- レスポンス:
{"server_pub_key": "ssh-ed25519 AAAA..."}
- レスポンス:
-
GET /health- サーバーの健全性ステータスを確認します- レスポンス:
{"status": "healthy"}
- レスポンス:
クライアント鍵登録の例:
curl -X POST -H "Content-Type: application/json" \
-d '{"client_pub_key": "ssh-rsa AAAA..."}' \
http://localhost:8000/register
セキュリティに関する考慮事項
- セキュリティを強化するため、デフォルトでは localhost(127.0.0.1)にバインドされます
- キーが指定されていない場合、安全な権限でキーが自動生成されます
- デフォルトのキーの保存先は
~/.ssh/m2m_mcp_server_ssh_serverです - 秘密鍵の権限は 0o600(所有者のみ読み取り可能)です
- 公開鍵の権限は 0o644(全員が読み取り可能、所有者のみ書き込み可能)です
- キーサーバーは API エンドポイントにレート制限を適用します
- 入力検証により、悪意のある入力から保護します
依存関係
- anyio (>=4.5.0)
- asyncssh (>=2.20.0)
- mcp (>=1.1.3)
- pydantic (>=2.0.0)
- aiohttp (>=3.11.16) - オプション。キーサーバー機能に必要です
開発
開発環境のセットアップ
git clone https://github.com/Machine-To-Machine/m2m-mcp-server-ssh-server.git
cd m2m-mcp-server-ssh-server
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/
貢献
m2m-mcp-server-ssh-server の拡張と改善にご協力いただける方を歓迎します。新機能の追加、既存機能の強化、ドキュメントの改善など、皆様のご意見は貴重です。
プルリクエストを歓迎します。新しいアイデア、バグ修正、機能強化など、ぜひご貢献ください。
貢献ガイドライン
- リポジトリをフォークします
- 機能ブランチを作成します:
git checkout -b feature-name - 変更をコミットします:
git commit -am 'Add some feature' - ブランチにプッシュします:
git push origin feature-name - プルリクエストを送信します
ライセンス
MIT License - 詳細は LICENSE ファイルをご覧ください。
作者
- Machine To Machine
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。