🚀 スーパーWindows CLI MCPサーバー
コマンドラインインターフェイス(MCP)を介してWindows環境に無制限のシステムアクセスを提供する、Windows CLI MCPサーバーの拡張フォークです。
ベースとなっているもの: win-cli-mcp-server by SimonB97。
⚠️ 重要なセキュリティ警告 ⚠️
このサーバーは、Windows上でSYSTEMレベルの特権で実行するように設計されています。これにより、すべてのファイル、プロセス、および構成設定を含む、オペレーティングシステム全体に対する完全かつ無制限のアクセスが可能になります。
- SYSTEMレベルのアクセスを付与する意味を完全に理解していない限り、このサーバーをインストールまたは実行しないでください。
- ネットワークアクセスを完全に制御できる、非常に信頼できる環境でのみ、このサーバーを使用してください。
- ネットワークセキュリティは最も重要です。 アプリケーションレベルの制限は設計上最小限であるため、ファイアウォール、ネットワークセグメンテーション、および厳格なアクセス制御リスト(ACL)に大きく依存して、このサーバーを実行するマシンを保護してください。
- 設定を慎重に確認してください。
config.json の allowedPaths、blockedCommands、およびその他のセキュリティ設定に注意を払ってください。誤った設定により、システムが簡単に暴露される可能性があります。
このソフトウェアを責任を持って、自己責任で使用してください。メンテナは、誤使用またはセキュリティ侵害に対して一切の責任を負いません。
✨ 主な機能
- Windowsシェル環境(PowerShell、CMD、Git Bash - 設定可能)への完全なアクセス。
- 無制限のコマンド実行(
config.json で設定可能)。
- 完全なファイルシステムアクセス(
config.json で設定可能)。
- NSSMを介したSYSTEMレベルのサービスインストールによる永続性と自動回復。
- NSSMによる自動サービス回復機能。
- ネットワークバインディング制御(意図されていますが、主にネットワーク/ファイアウォールレベルで管理されます)。
- 強化されたプライバシーのためにPowerShellのテレメトリが無効化されています。
- パフォーマンス向上のためのプロセス再利用(シェル用)。
- 長時間実行される操作のための拡張タイムアウト(設定可能)。
📦 インストール
前提条件
始める前に、以下がインストールされていることを確認してください。
- Node.js: バージョン18.0.0以上。nodejs.org からダウンロードしてください。(npmを含みます)
- NSSM (Non-Sucking Service Manager): 信頼性の高いサービスインストールに必要です。最新バージョンを nssm.cc からダウンロードしてください。
NSSMを使用したインストール(推奨)
この方法では、サーバーをSYSTEM特権で実行される永続的なWindowsサービスとしてインストールし、自動的に起動します。
-
クローンまたはダウンロード
- このリポジトリをクローンします:
git clone <repository-url>
- または、ソースコードの
.zip ファイルをダウンロードし、適切な場所(例: C:\Servers\SuperWinCLIServer)に解凍します。ユーザープロファイルフォルダは避けてください。
-
NSSMを配置
- nssm.cc からNSSMをダウンロードします。
- zipファイルを解凍します。
- 適切なアーキテクチャフォルダ(
win32 または win64)から nssm.exe ファイルをこのプロジェクトのルートディレクトリ(install-service.ps1 と同じフォルダ)にコピーします。
-
依存関係のインストールとビルド
- プロジェクトのルートディレクトリでターミナル(PowerShellまたはCMD)を開きます。
- 次のコマンドを実行します:
npm install
- このコマンドは、必要なNode.jsパッケージをインストールし、自動的に
npm run build を実行してTypeScriptコードを dist フォルダにコンパイルします。
-
config.json を設定
- コピー:
config.sample.json のコピーを作成し、プロジェクトのルートディレクトリに config.json という名前で保存します。
- 編集:
config.json を開き、設定を慎重に確認して変更します:
security.allowedPaths: 重要! サンプルパスから、サーバーがアクセスする必要のある実際のディレクトリに変更してください。セキュリティ上、できるだけ具体的に指定してください。わからない場合は、プロジェクトディレクトリ自体から始めてください(例: "C:\\Servers\\SuperWinCLIServer" - ダブルバックスラッシュ \\ を忘れないでください)。サービスはSYSTEMとして実行されるため、パスはそのアカウントに対して有効でなければなりません。
security.blockedCommands / blockedArguments: デフォルトのリストを確認してください。セキュリティポリシーに基づいて、コマンド/引数を追加または削除してください。
shells: シェル(PowerShell、CMD、Git Bash)を有効/無効にし、command パスを確認してください(特にGit Bashの場合)。
ssh: SSH実行機能を使用する場合は、設定してください(デフォルトでは無効になっています)。
config.json ファイルを保存します。
-
インストールスクリプトを実行
- 管理者としてPowerShellを開きます。
- プロジェクトのルートディレクトリに移動します (
cd C:\Servers\SuperWinCLIServer)。
- インストールスクリプトを実行します:
.\install-service.ps1
- このスクリプトは、NSSMを使用して
MCPServer サービスをインストールし、node.exe dist/index.js を LocalSystem として自動的に起動するように構成します。
-
サービスの状態を確認
- 同じ管理者権限のPowerShellウィンドウで、次のコマンドを実行します:
Get-Service MCPServer
- 状態は
Running である必要があります。Stopped の場合は、NSSMのログまたはWindowsイベントビューアー(アプリケーションとシステムのログ)を確認してエラーを調べてください。
📚 ドキュメント
config.json の詳細
security:
maxCommandLength: コマンド文字列に許可される最大文字数。
blockedCommands: ブロックするコマンド名(拡張子なし)の配列(大文字小文字を区別しません)。
blockedArguments: ブロックする正確な引数の配列(大文字小文字を区別しません)。
allowedPaths: 重要な設定です。 絶対パスの配列。restrictWorkingDirectory が true の場合、コマンドの作業ディレクトリがこれらのパスのいずれかで始まる場合にのみ、コマンドを実行できます。パスは、正規化後に大文字小文字を区別せずに比較されます。ダブルバックスラッシュを使用してください(例: "C:\\Tools\\Scripts")。
restrictWorkingDirectory: ブール値。true の場合、作業ディレクトリに対して allowedPaths チェックを適用します。true にすることを強くお勧めします。
logCommands: ブール値。true の場合、実行されたコマンドとその出力(切り捨てられたもの)がメモリに保存されます(最大 maxHistorySize)。
maxHistorySize: メモリ内の履歴に保持する最大コマンド数。
commandTimeout: 実行中のコマンドが自動的に終了されるまでの秒数。
enableInjectionProtection: ブール値。true の場合、コマンド内のシェル演算子(&, |, ; など、シェルごとに定義されています)をブロックしようとします。
shells: 利用可能なローカルシェル(powershell、cmd、gitbash)を構成します。
enabled: ブール値。このシェルの使用を許可するかどうか。
command: シェル実行可能ファイルへのパス。
args: ユーザーのコマンドの前にシェルに渡されるデフォルト引数の配列。
blockedOperators: この特定のシェルのコマンド内でブロックする文字列/文字の配列(enableInjectionProtection が true の場合に使用されます)。
ssh: SSHを介したリモートコマンド実行を構成します。
enabled: ブール値。ssh_execute および ssh_disconnect ツールを有効にするかどうか。
connections: 名前付き接続構成(ホスト、ポート、ユーザー名、パスワード/秘密鍵パス)を含むオブジェクト。
- 設定のマージ:
config.json が読み込まれると、security または shells セクションが含まれている場合、そのセクション全体がそのセクションのデフォルト設定を置き換えます。security または shells 内の個々のフィールドはマージされません。ssh セクションはより細かくマージされます。カスタマイズする場合は、config.json にこれらのセクションに必要なすべてのフィールドが含まれていることを確認してください。
サービス管理(NSSM)
install-service.ps1 を使用してインストールした後は、標準のWindowsツールまたはプロジェクトディレクトリの管理者権限のPowerShell/CMDからNSSMコマンドを使用して、サービスを管理できます。
- 起動:
Start-Service MCPServer または .\nssm.exe start MCPServer
- 停止:
Stop-Service MCPServer または .\nssm.exe stop MCPServer
- 再起動:
Restart-Service MCPServer または .\nssm.exe restart MCPServer
- 状態:
Get-Service MCPServer または .\nssm.exe status MCPServer
- 設定の編集(高度な設定):
.\nssm.exe edit MCPServer(NSSMのGUIエディターが開きます)
- 設定の表示:
.\nssm.exe dump MCPServer
アンインストール(NSSM)
- 管理者としてPowerShellを開きます。
- プロジェクトのルートディレクトリに移動します。
- アンインストールスクリプトを実行します:
.\uninstall-service.ps1
- これにより、NSSMを使用して
MCPServer サービスが停止され、削除されます。
代替実行(手動/デバッグ)
テストまたはデバッグの目的で、サービスとしてインストールせずにサーバーを直接実行することができます。
npm install を実行したことを確認してください。
config.json が存在し、設定されていることを確認してください。
- プロジェクトのルートで通常のターミナル(PowerShell/CMD)を開きます。
- 次のコマンドを実行します:
npm run start
- サーバーはフォアグラウンドで実行されます。
Ctrl + C を押して停止します。
📄 ライセンス
このプロジェクトはMITライセンスの下でライセンスされています - 詳細については LICENSE ファイルを参照してください。