スーパー Windows CLI MCP サーバー
コマンドライン インターフェイス (MCP) を介して Windows 環境への無制限のシステム アクセスを提供する Windows CLI MCP サーバーの拡張フォークです。
SimonB97 によるwin-cli-mcp-server をベースにしています。
⚠️重大なセキュリティ警告⚠️
このサーバーは、Windows上でSYSTEMレベルの権限で実行されるように設計されています。これにより、すべてのファイル、プロセス、構成設定を含むオペレーティングシステム全体への完全かつ無制限のアクセスが許可されます。
- システム レベルのアクセスを許可することの影響を完全に理解していない限り、このサーバーをインストールまたは実行しないでください。
- このサーバーは、ネットワーク アクセスを完全に制御できる信頼性の高い環境でのみ使用してください。
- **ネットワーク セキュリティが最も重要です:**アプリケーション レベルの制限は設計上最小限に抑えられているため、このサーバーを実行しているマシンを保護するには、ファイアウォール、ネットワーク セグメンテーション、および厳格なアクセス制御リスト (ACL) に大きく依存します。
- 設定をよく確認してください:
config.json
内のallowedPaths
、blockedCommands
、その他のセキュリティ設定に特に注意してください。設定ミスがあると、システムが簡単に危険にさらされる可能性があります。
このソフトウェアは自己責任でご使用ください。メンテナーは、本ソフトウェアの使用に起因する誤用やセキュリティ侵害について一切の責任を負いません。
特徴
- Windows シェル環境への完全なアクセス (PowerShell、CMD、Git Bash - 構成可能)。
- 制限のないコマンド実行 (
config.json
で構成可能)。 - 完全なファイル システム アクセス (
config.json
経由で構成可能)。 - 永続性と自動回復のために NSSM を介したシステム レベルのサービスのインストール。
- 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イベントビューアー(アプリケーションログとシステムログ)でエラーを確認してください。
- 同じ管理PowerShellウィンドウで、
設定( config.json
)の詳細
security
:maxCommandLength
: コマンド文字列で許可される最大文字数。blockedCommands
: ブロックするコマンド名 (拡張子なし) の配列 (大文字と小文字は区別されません)。blockedArguments
: ブロックする正確な引数の配列 (大文字と小文字は区別されません)。allowedPaths
:**重要な設定です。**絶対パスの配列です。restrictWorkingDirectoryrestrictWorkingDirectory
true の場合、コマンドは作業ディレクトリがこれらのパスのいずれかで始まる場合にのみ実行されます。パスは正規化後、大文字と小文字を区別せずに比較されます。二重のバックスラッシュを使用してください(例:"C:\\Tools\\Scripts"
)。restrictWorkingDirectory
: ブール値。true の場合、作業ディレクトリに対してallowedPaths
チェックを強制します。truetrue
ままにすることを強くお勧めします。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
そのセクションのデフォルト設定を置き換えます。security またはshells
内の個々のフィールドはマージされません。ssh セクションはより細かくマージされます。ssh
セクションをカスタマイズする場合は、config.json
に必要なすべてのフィールドが含まれていることを確認してください。
サービス管理(NSSM)
install-service.ps1
経由でインストールすると、プロジェクト ディレクトリ内の管理 PowerShell/CMDから標準の Windows ツールまたは 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ファイルを参照してください。
This server cannot be installed
SYSTEM レベルの権限で Windows 環境への無制限のシステム アクセスを提供し、ファイル、プロセス、構成設定を完全に制御できるコマンド ライン インターフェイス サーバーです。