🚀 SSH/SFTP MCP Server
このSSH/SFTP MCPサーバーは、ClaudeのようなAIアシスタントがリモートサーバーでSSHコマンドを実行し、SFTPファイル操作を行うことを可能にするModel Context Protocol (MCP)サーバーです。
🚀 クイックスタート
Claude Desktopの設定
Claude Desktopの設定ファイルに以下を追加します。
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Linux:
~/.config/Claude/claude_desktop_config.json
オプション1: CLI引数 (推奨)
コマンドライン引数を使用してサーバーを直接設定します。
{
"mcpServers": {
"ssh": {
"command": "npx",
"args": [
"ssh-client-mcp",
"--host", "192.168.1.100",
"--user", "admin",
"--password", "your-password"
]
}
}
}
秘密鍵認証を使用する場合:
{
"mcpServers": {
"ssh": {
"command": "npx",
"args": [
"ssh-client-mcp",
"--host", "192.168.1.100",
"--user", "admin",
"--key", "~/.ssh/id_rsa"
]
}
}
}
秘密鍵とパスフレーズを使用する場合:
{
"mcpServers": {
"ssh": {
"command": "npx",
"args": [
"ssh-client-mcp",
"--host", "192.168.1.100",
"--user", "admin",
"--key", "~/.ssh/id_rsa",
"--passphrase", "your-key-passphrase"
]
}
}
}
利用可能なCLI引数:
| 引数 |
省略形 |
説明 |
--host |
-h |
サーバーのホスト名またはIPアドレス |
--port |
-p |
SSHポート (デフォルト: 22) |
--user |
-u |
SSHユーザー名 |
--password |
|
SSHパスワード |
--key |
-k |
秘密鍵ファイルのパス |
--passphrase |
|
秘密鍵のパスフレーズ |
--id |
|
サーバーID (デフォルト: "cli") |
--name |
|
サーバーの表示名 |
オプション2: 設定ファイル
作業ディレクトリにservers.jsonファイルを作成します。
{
"servers": [
{
"id": "my-server",
"name": "My Server",
"host": "192.168.1.100",
"port": 22,
"username": "admin",
"password": "your-password"
}
],
"defaultServer": "my-server"
}
オプション3: 環境変数
SSH_SERVER_DEV_HOST=192.168.1.100
SSH_SERVER_DEV_PORT=22
SSH_SERVER_DEV_USERNAME=admin
SSH_SERVER_DEV_PASSWORD=your-password
SSH_SERVER_DEV_NAME=Development Server
その後、Claude Desktopを再起動してMCPサーバーを読み込みます。
✨ 主な機能
- サーバー構成管理 - 設定ファイルまたは環境変数でサーバーを定義します。
- 接続テスト - セッションを確立する前にサーバーの接続性をテストします。
- SSHコマンド実行 - 必要に応じてsudoサポート付きでリモートでコマンドを実行します。
- SFTPファイル操作 - ファイル/ディレクトリのアップロード、ダウンロード、一覧表示、作成、削除を行います。
- セッション管理 - アイドルセッションの自動クリーンアップ、接続プーリングを行います。
- 複数の認証方法 - パスワードと秘密鍵認証をサポートします。
📦 インストール
npxを使用する (推奨)
npx ssh-client-mcp
npmを使用する
npm install -g ssh-client-mcp
ソースから
git clone https://github.com/veithly/ssh-client-mcp.git
cd ssh-client-mcp
npm install
npm run build
💻 使用例
🔍 設定済みサーバーの一覧表示
Tool: ssh_list_servers
Arguments: {}
🔌 接続テスト
Tool: ssh_test_connection
Arguments: {
"serverId": "my-server"
}
🖥️ サーバーへの接続
Tool: ssh_connect_by_id
Arguments: {
"serverId": "my-server"
}
🚀 コマンドの実行
Tool: ssh_exec
Arguments: {
"sessionId": "<session-id>",
"command": "ls -la /home"
}
📤 ファイルのアップロード
Tool: sftp_upload
Arguments: {
"sessionId": "<session-id>",
"localPath": "/local/path/file.txt",
"remotePath": "/remote/path/file.txt"
}
📥 ファイルのダウンロード
Tool: sftp_download
Arguments: {
"sessionId": "<session-id>",
"remotePath": "/remote/path/file.txt",
"localPath": "/local/path/file.txt"
}
📚 ドキュメント
利用可能なツール (合計18個)
サーバー管理
| ツール |
説明 |
ssh_list_servers |
すべての設定済みサーバーを一覧表示します。 |
ssh_get_server |
特定のサーバーの詳細を取得します。 |
ssh_test_connection |
サーバーへの接続をテストします。 |
ssh_test_all_connections |
すべての設定済みサーバーの接続をテストします。 |
ssh_connect_by_id |
設定ファイルのサーバーIDを使用して接続します。 |
接続管理
| ツール |
説明 |
ssh_connect |
資格情報を使用してSSH接続を確立します。 |
ssh_disconnect |
SSHセッションを閉じます。 |
ssh_list_sessions |
すべてのアクティブなSSHセッションを一覧表示します。 |
コマンド実行
| ツール |
説明 |
ssh_exec |
リモートサーバーでコマンドを実行します。 |
ssh_sudo_exec |
sudo権限でコマンドを実行します。 |
ファイル操作 (SFTP)
| ツール |
説明 |
sftp_upload |
ローカルファイルをリモートサーバーにアップロードします。 |
sftp_download |
リモートサーバーからファイルをダウンロードします。 |
sftp_ls |
リモートディレクトリの内容を一覧表示します。 |
sftp_mkdir |
リモートサーバーにディレクトリを作成します。 |
sftp_rm |
ファイルまたはディレクトリを削除します。 |
sftp_stat |
ファイル/ディレクトリの情報を取得します。 |
sftp_read |
リモートファイルの内容を読み取ります。 |
sftp_write |
リモートファイルに内容を書き込みます。 |
設定オプション
環境変数
| 変数 |
説明 |
デフォルト |
SESSION_TIMEOUT |
セッションのタイムアウト時間 (ミリ秒) |
1800000 (30分) |
MAX_SESSIONS |
最大同時セッション数 |
100 |
SSH_CONNECTION_TIMEOUT |
接続のタイムアウト時間 (ミリ秒) |
30000 |
SSH_DEFAULT_SERVER |
デフォルトのサーバーID |
- |
サーバー設定フィールド
| フィールド |
タイプ |
必須 |
説明 |
id |
文字列 |
はい |
一意のサーバー識別子 |
name |
文字列 |
はい |
表示名 |
host |
文字列 |
はい |
ホスト名またはIPアドレス |
port |
数値 |
いいえ |
SSHポート (デフォルト: 22) |
username |
文字列 |
はい |
SSHユーザー名 |
password |
文字列 |
いいえ* |
SSHパスワード |
privateKeyPath |
文字列 |
いいえ* |
秘密鍵ファイルのパス |
passphrase |
文字列 |
いいえ |
秘密鍵のパスフレーズ |
description |
文字列 |
いいえ |
サーバーの説明 |
tags |
文字列配列 |
いいえ |
フィルタリング用のタグ |
*passwordまたはprivateKeyPathのいずれかを指定する必要があります。
🔧 技術詳細
開発
git clone https://github.com/veithly/ssh-client-mcp.git
cd ssh-client-mcp
npm install
npm run build
npm run dev
npm run clean
プロジェクト構造
ssh-client-mcp/
├── src/
│ ├── index.ts # MCPサーバーのエントリーポイント
│ ├── types.ts # 型定義
│ ├── SessionManager.ts # SSHセッションのライフサイクル管理
│ ├── SSHExecutor.ts # コマンド実行
│ ├── SFTPOperations.ts # SFTPファイル操作
│ ├── ConnectionTester.ts # 接続テスト
│ ├── config/
│ │ ├── ConfigManager.ts # 設定管理
│ │ ├── types.ts # 設定型定義
│ │ └── index.ts # 設定エクスポート
│ └── tools/
│ ├── connection.ts # 接続ツール
│ ├── command.ts # コマンドツール
│ ├── file.ts # ファイルツール
│ ├── server.ts # サーバー管理ツール
│ └── index.ts # ツールエクスポート
├── servers.example.json # サーバー設定の例
├── .env.example # 環境設定の例
├── package.json
├── tsconfig.json
└── README.md
📄 ライセンス
MIT © 2024
謝辞
Claude AI用に作成されました。