mcpField
M
MCP Server SSH Server

MCP Server SSH Server

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

MCP Server SSH Server について

MCP Server SSH Serverは、SSH経由でリモートにあるMCPツールへアクセスし、複数のMCPサーバーを単一のインターフェースに集約します。鍵認証と、任意で使えるHTTP鍵管理APIに対応します。

主な機能

  1. 01SSH経由のリモートMCPアクセス
  2. 02鍵ベースのクライアント認証
  3. 03複数のMCPサーバーの集約
  4. 04JSONによるサーバー設定
  5. 05任意のHTTP鍵管理API
  6. 06プロンプト、リソース、ツール、ログに対応

活用シーン

  1. 01リモートホスト上のMCPツールへのアクセス
  2. 02複数のMCPプロバイダーの統合
  3. 03HTTP経由でのクライアント鍵登録
  4. 04ローカルMCPツール群の設定

MCP 対応

設定済みのMCPサーバーをSSH経由でプロキシし、統合インターフェースからプロンプト、リソース、ツール、ログ機能を公開します。

設定

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

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

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

リポジトリ

ツール

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

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

詳細

MCP Server SSH サーバー

PyPI version Python Versions License: MIT

リモートにインストールされた 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 ツールを使って、ローカルサーバーをすばやくセットアップします:

  1. 設定ファイル(servers_config.json)を作成します:
{
  "mcpServers": {
    "HackerNews": {
      "command": "uvx",
      "args": ["mcp-hn"]
    },
    "major-league-baseball": {
      "command": "uvx",
      "args": ["mcp_mlb_statsapi"]
    }
  }
}
  1. クライアントが接続しやすいように、鍵管理 API を有効にしてサーバーを起動します:
uv run m2m-mcp-server-ssh-server --run-key-server
  1. クライアントを使って接続します:
uv run m2m-mcp-server-ssh-client --host localhost --port 8022 --use-key-server
2. リモートホスティング(クイックセットアップ)

MCP ツールをリモートから利用できるようにするには:

  1. サーバーにインストールします:
uv add m2m-mcp-server-ssh-server[key-server]
  1. 使用したい MCP ツールを指定して設定ファイルを作成します

  2. すべてのインターフェースにバインドしてサーバーを起動します:

uv run m2m-mcp-server-ssh-server --host 0.0.0.0 --run-key-server --key-server-host 0.0.0.0
  1. クライアントマシンから接続します:
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

鍵管理サーバーは、次のエンドポイントを提供します:

  1. POST /register - クライアントの公開鍵を登録します

    • リクエストボディ:{"client_pub_key": "ssh-rsa AAAA..."}
    • レスポンス:{"status": "success"}またはエラーメッセージ
  2. GET /server_pub_key - サーバーの公開鍵を取得します

    • レスポンス:{"server_pub_key": "ssh-ed25519 AAAA..."}
  3. 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 の拡張と改善にご協力いただける方を歓迎します。新機能の追加、既存機能の強化、ドキュメントの改善など、皆様のご意見は貴重です。

プルリクエストを歓迎します。新しいアイデア、バグ修正、機能強化など、ぜひご貢献ください。

貢献ガイドライン
  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 つのサーバーを複数のクライアントで再利用できます。