TermSSH MCP
✨ TermSSH MCP を選ぶ理由
AIワークフロー向けのSSHツールのほとんどは、コマンド実行 → 出力取得 → 終了という仕組みに基づいています。
しかし、実際のタスクがインタラクティブな場合、これでは不十分です:
インストーラーが質問をしてくる
シェルが状態を保持する必要がある
デバッグに複数のステップが必要
デプロイにはアップロードとターミナル制御の両方が必要
エージェントが状況を観察し、反応し、継続する必要がある
TermSSH MCP は、そのギャップを埋めるために構築されました。
すべてを単一のコマンドとして扱うのではなく、MCPクライアントに本格的なオペレータースタイルのワークフローを提供します:
シェルを開く → 入力を書き込む → 出力を読み取る → コンテキストを保持する → ファイルをアップロードする → 作業を継続する
🧠 何が違うのか
ターミナルファースト
インタラクティブなターミナルセッションがコアモデルであり、後付けではありません。
エージェント対応
MCPクライアント、コーディングエージェント、自動化ループ向けに設計されています。
ステートフルなワークフロー
アクティブなセッションを再利用することで、マルチステップのタスクを自然かつ確実に実行できます。
アップロード機能内蔵
スクリプト、設定、ペイロード、生成された成果物をSFTP経由で転送します。
クロスプラットフォーム
LinuxおよびWindowsのSSHターゲットで動作します。
クリーンなツールインターフェース
ターミナル制御とリモートファイル転送に特化したMCPツールを提供します。
🚀 主な機能
インタラクティブなSSHターミナルセッション
インクリメンタルなターミナルの読み書きフロー
デフォルトで管理されたターミナルセッションの再利用
オプションによる強制的なマルチセッション作成
SFTP経由のローカルファイルアップロード
直接テキストおよびbase64コンテンツのアップロード
ターミナルのリサイズサポート
LinuxおよびWindowsのSSHターゲットサポート
AIツール向けのMCPネイティブインターフェース
🧰 ツールセット
upload-file
SFTPを使用して、MCPホストマシンからリモートSSHサーバーへローカルファイルをアップロードします。
パラメータ
localPath— ローカルのソースファイルパスremotePath— リモートホスト上の宛先パスcreateDirectories— 必要に応じて親ディレクトリを作成するoverwrite— 既存のリモートファイルを上書きするmode—0644などのオプションのPOSIXモード
upload-content
直接テキストまたはbase64コンテンツをリモートサーバーにアップロードします。
パラメータ
content— 生テキストまたはbase64ペイロードencoding—utf8またはbase64remotePath— リモートホスト上の宛先パスcreateDirectories— 必要に応じて親ディレクトリを作成するoverwrite— 既存のリモートファイルを上書きするmode—0644などのオプションのPOSIXモード
terminal-start
インタラクティブなリモートターミナルセッションを開始します。
パラメータ
cwd— シェル起動後のオプションの作業ディレクトリshell— オプションのシェルバイナリplatformHint—auto、linux、またはwindowselevated— 設定されている場合にsu昇格を試みるcols— ターミナルの幅rows— ターミナルの高さenv— オプションの環境変数multiSession— 既存のセッションを再利用せず、新しい管理セッションを強制的に作成する場合はtrueに設定
terminal-write
アクティブなターミナルセッションに入力を書き込みます。
パラメータ
sessionId— ターゲットセッションIDinput— 送信するテキストappendNewline— 必要に応じて自動的に改行を追加する
terminal-read
ターミナルセッションからバッファリングされた出力を読み取ります。
パラメータ
sessionId— ターゲットセッションIDsinceSequence— 指定されたシーケンス番号より新しい出力のみを返すmaxChars— 返される出力のサイズを制限するwaitForMs— オプションの短いポーリング遅延
terminal-resize
アクティブなターミナルセッションをリサイズします。
パラメータ
sessionId— ターゲットセッションIDcols— 新しい幅rows— 新しい高さ
terminal-close
ターミナルセッションをローカルで閉じます。
パラメータ
sessionId— ターゲットセッションID
🔄 一般的なワークフロー
flowchart LR
A[terminal-start] --> B[terminal-write]
B --> C[terminal-read]
C --> D{Need file?}
D -- Yes --> E[upload-file / upload-content]
D -- No --> F{Continue session?}
E --> F
F -- Yes --> B
F -- No --> G[terminal-close]これは特に以下の場合に有効です:
インタラクティブなパッケージインストール
リモートセットアップおよびプロビジョニング
成果物アップロードを伴うデプロイメント
複数のステップにわたるサービスデバッグ
コンテキストが重要なステートフルなシェルワークフロー
🛠 インストール
リポジトリのクローン
git clone https://github.com/rayss868/termssh-mcp.git
cd termssh-mcp
npm install
npm run buildグローバルインストール
npm install -g termssh-mcp⚙ 設定
必須のCLIパラメータ
host— リモートマシンのホスト名またはIPアドレスuser— SSHユーザー名
オプションのCLIパラメータ
port— SSHポート、デフォルトは22password— SSHパスワードkey— SSH秘密鍵へのパスsudoPassword— sudo指向のワークフロー用のオプションパスワードsuPassword—suベースの昇格用のオプションパスワードtimeout— SSH準備完了までのタイムアウト(ミリ秒)、デフォルトは60000maxChars— コマンド長の検証制限、デフォルトは1000。無制限モードにするにはnoneまたは0を使用
🧩 MCP設定例
{
"mcpServers": {
"termssh-mcp": {
"command": "npx",
"args": [
"-y",
"termssh-mcp",
"--",
"--host=1.2.3.4",
"--port=22",
"--user=root",
"--password=pass",
"--timeout=30000",
"--maxChars=none"
]
}
}
}SSH鍵の例
{
"mcpServers": {
"termssh-mcp": {
"command": "npx",
"args": [
"-y",
"termssh-mcp",
"--",
"--host=example.com",
"--user=root",
"--key=/path/to/private/key"
]
}
}
}🤖 Claude Codeの例
Claude Codeにサーバーを登録します:
claude mcp add --transport stdio termssh-mcp -- npx -y termssh-mcp -- --host=YOUR_HOST --user=YOUR_USER --password=YOUR_PASSWORDSSH鍵認証を使用する場合:
claude mcp add --transport stdio termssh-mcp -- npx -y termssh-mcp -- --host=example.com --user=root --key=/path/to/private/keyタイムアウトを延長する場合:
claude mcp add --transport stdio termssh-mcp -- npx -y termssh-mcp -- --host=192.168.1.100 --user=admin --password=your_password --timeout=120000 --maxChars=none🎯 最適な用途
開発者
AIコーディングツールからのリモートシェルアクセス
ステートフルなデバッグセッション
スクリプトおよび設定の配信
DevOps / インフラチーム
サービスの調査
デプロイメントサポート
マルチステップのリモート操作
エージェント開発者
ターミナルネイティブなMCPワークフロー
再利用可能なセッション
制御されたリモート自動化ループ
🏗 開発
プロジェクトのビルド:
npm run buildテストの実行:
npm testMCP Inspectorの使用:
npm run inspect📁 プロジェクト構造
src/index.ts— MCPサーバーのエントリポイントとツール登録src/ssh-connection-manager.ts— SSH接続とターミナルのライフサイクル管理src/upload.ts— アップロードヘルパーとインタラクティブセッションのメタデータヘルパーsrc/core.ts— 共有検証およびSSHユーティリティのプリミティブtest/upload-and-terminal.test.ts— アップロード/セッションのユニットテストtest/maxChars.test.ts— コマンド検証のテストtest/smoke.ssh.test.ts— 現在のエクスポートされた動作のスモークテスト
🗺 ロードマップのアイデア
より詳細なセッションメタデータの調査
リモートセッションの可観測性の向上
オプションのセッション永続化機能
Claude CodeおよびMCPツール向けのさらなる例
デプロイメント指向のワークフローテンプレート
🔐 セキュリティに関する注意
TermSSH MCP は、SSH経由でシステムへのリモートアクセスを提供します。
自身が所有している、または管理を明示的に許可されているインフラストラクチャでのみ使用してください。
📜 ライセンス
MITライセンスの下でリリースされています。
🤝 貢献
貢献を歓迎します。
貢献のガイドラインについては CONTRIBUTING.md を、期待される行動については CODE_OF_CONDUCT.md を参照してください。
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/rayss868/termssh-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server