mcpField
P
powershell-mcp

powershell-mcp

ローカル
github.com/IMRRD開発ツール11 日前に更新

powershell-mcp について

powershell-mcpは、Windowsをローカルまたはリモートで管理するエージェントや運用担当者向けのMCPサーバーです。非表示のPowerShellプロセスで実行し、サイズ制限付きの構造化結果を返すほか、サービス、システム、SSH、WinRM、SFTP操作を提供します。

主な機能

  1. 01非表示のPowerShell実行
  2. 02ネイティブプログラムの直接実行
  3. 03構造化出力と厳格なタイムアウト
  4. 04Windowsサービスとシステムの管理
  5. 05SSH、WinRM、SFTP操作
  6. 06オプションの出力ログ管理

活用シーン

  1. 01コンソール画面を表示せずWindowsコマンドを実行
  2. 02Windowsサービスの確認や制御
  3. 03SSHまたはWinRMホストでコマンドを実行
  4. 04SFTPによるファイル転送

MCP 対応

PowerShell、プログラム実行、Windows管理、SSH、WinRM、SFTP、任意の出力ログ操作をMCPクライアントに提供します。呼び出し結果には状態、所要時間、出力制限を含む構造化データが含まれます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"imrrd-powershell": {
"command": "npx",
"args": [
"-y",
"@imrrd/powershell-mcp"
]
}
}
}
起動コマンドnpx -y @imrrd/powershell-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@imrrd/powershell-mcp0.8.0

ツール

10

掲載時のツール一覧 · 1 日前に更新

パラメーター型必須説明
cwdstringいいえ作業ディレクトリ。
scriptstringはい実行する PowerShell スクリプトまたはコマンド。
timeoutMsintegerいいえハードタイムアウト(ミリ秒、デフォルトは 60000)。

詳細

翻訳後に原文が更新されています。最新の内容は原文をご確認ください。

powershell-mcp

AI エージェントに Windows PowerShell への実用的で非侵入型のアクセスを提供するModel Context Protocolサーバーです。

エージェントが Windows コマンドを実行できるようにするツールの多くは、呼び出しのたびに表示されるコンソールウィンドウを起動します。そのためフォーカスが奪われ、入力中の作業が中断されます。powershell-mcp はすべての処理を非表示のプロセス(windowsHide: true / CreateWindow なし)で実行し、構造化された出力を取得して、厳格なタイムアウトを適用します。また、サービスやシステム管理に特化したツールを提供します。キーボードを使う人の隣で、無人で実行するために作られています。

理由

  • ポップアップウィンドウが表示されません。 コマンドは非表示で実行されるため、フォアグラウンドのアプリはフォーカスを維持できます。
  • 構造化され、安全です。 すべての呼び出しは { stdout, stderr, exit_code, duration, timed_out } を返します。プロセスツリーの強制終了を伴う厳格なタイムアウトを設定しています。暴走したコマンドがコンテキストをあふれさせないよう、出力には上限があります。
  • Windows を本格的に管理できます。 生のシェルだけでなく、サービスやシステム情報を扱う専用ツールを備えています。Windows サーバーやバックアップシステムの管理に便利です。
  • 複数のシェルに対応します。 pwsh(PowerShell 7 以降)を優先し、利用できない場合は powershell.exe にフォールバックします。PWSH_MCP_EXE で上書きできます。

ツール

ツール説明
run_powershell任意の PowerShell スクリプト/コマンドを実行します(非表示)。{ script, cwd?, timeoutMs? }
run_programネイティブ実行可能ファイルを直接実行し(シェルなし)、クリーンな stdout/stderr と終了コードを取得します。隠しシェルでは出力が失われる gh/git/docker/node などのコンソールバイナリに使用します。{ program, args?, cwd?, timeoutMs? }
list_servicesサービスを一覧表示します。任意で filter ワイルドカードを指定できます。
get_service名前を指定して、1 つのサービスの詳細な状態を取得します。
control_serviceサービスの start/stop/restart/status を実行します。
system_infoOS、CPU、メモリ、ドライブごとのディスク概要を取得します。
ssh_execSSH 経由でリモートホスト上のコマンドを実行します。完全にプロセス内で動作するため(ssh.exe も WSL も不要)、ヘッドレス環境で動作します。{ host, username, command, port?, privateKeyPath?, passphrase?, password?, timeoutMs? }
winrm_execPowerShell リモート処理(WinRM/Invoke-Command)経由でリモートのWindowsホスト上のコマンドを実行します。ターゲットに SSH サーバーやエージェントは不要です。{ computerName, command, username?, password?, useSsl?, authentication?, timeoutMs? }
sftp_uploadSFTP 経由でローカルファイルをリモートホストにアップロードします。プロセス内で動作するため(ssh2、scp.exe/WSL なし)、ヘッドレス環境で実行できます。{ localPath, remotePath, host, username, port?, privateKeyPath?, passphrase?, password?, timeoutMs? }
sftp_downloadSFTP 経由でリモートファイルをこのホストにダウンロードします。パラメーターは sftp_upload と同じです。

ネイティブプログラム: Windows PowerShell は、ネイティブコマンドの stdout をコンソールに出力するため、非表示で実行すると出力が失われます。gh/git/docker などのコンソールバイナリには run_program(直接実行)を使用し、PowerShell/コマンドレットのロジックには run_powershell を使用してください。

動作例

実際の呼び出しと実際の出力を紹介します。ヘッドレスで、コンソールウィンドウを表示せず、構造化された結果を返します。

# ssh_exec — run a command on a Linux box, in-process (no ssh.exe, no WSL)
> ssh_exec  host=192.168.0.5  username=isak  command="uptime; systemctl is-active app"
$ ssh [email protected]  (exit=0, 818ms)
 2 days, 23:53,  load average: 0.00, 0.01, 0.04
active

# sftp_upload — deploy a file, in-process (no scp.exe)
> sftp_upload  localPath=C:\deploy\app.py  remotePath=/home/isak/app.py  host=192.168.0.5 ...
sftp upload: C:\deploy\app.py → [email protected]:/home/isak/app.py
OK (9129 bytes, 714ms)

リモート操作

powershell-mcp はローカルマシン以外も管理します。Windows 標準の ssh.exe は、ウィンドウのないバックグラウンドプロセスから実行すると取得可能な出力を生成しません。また、すべてのサーバーに WSL を導入する方法は拡張性に欠けるため、リモート実行機能を組み込んでいます。

  • ssh_exec は純粋な JavaScript の ssh2 クライアント(外部バイナリ不要)を使用するため、ヘッドレス環境で動作します。ターゲットに必要なのは SSH サーバーだけです。Linux ホストに最適です。
  • winrm_exec はネイティブの PowerShell リモート処理を使用するため、Windows 環境では WinRM を有効にするだけで利用できます。サーバーごとのインストールは不要です。

テレメトリー(匿名、オプトアウト方式)

起動時にサーバーは一度だけ ping(ホスト ID、バージョン、OS、タイムスタンプ)を送信し、ツールごとの呼び出し回数を30分ごと(および終了時)に送信します。これにより、重要なツールを優先できます。コマンドの内容、引数、出力、パスは一切送信されません。

  • 完全に無効にするには、POWERSHELL_MCP_NO_TELEMETRY=1 を設定します。
  • エンドポイントを上書きするには、POWERSHELL_MCP_TELEMETRY_URL を設定します。

collector/ にあるコレクターは、別途デプロイするスタンドアロンの Node.js サービスです(JSONL 追記、systemd ユニット、nginx スニペット、deploy.sh)。

インストール

正式な npm パッケージは @imrrd/powershell-mcp です。

MCP クライアントから npm 経由で直接実行します。

{
  "mcpServers": {
    "powershell": {
      "command": "npx",
      "args": ["-y", "@imrrd/powershell-mcp@latest"]
    }
  }
}

または、CLI をグローバルにインストールします。

npm install -g @imrrd/powershell-mcp

移行について: powershell-mcp は非推奨であり、旧バージョン向けの修正リリースは提供されません。削除して、@imrrd/[email protected] 以降をインストールしてください。

ソースから開発する場合:

npm install
npm run build

正式なパッケージベースのクライアント設定については、examples/claude_desktop_config.json を参照してください。

開発

npm run dev        # run from source (tsx)
npm test           # unit + (where a shell is present) integration tests
npm run typecheck

CI では windows-latest と ubuntu-latest の両方でビルドとテストを実行します。

セキュリティに関する注意事項

  • winrm_exec は、呼び出し元が指定した接続情報を stdin 経由でローカルの PowerShell 子プロセスに送信します。認証情報がプロセス引数や環境変数に含まれることはありません。
  • control_service と多くのコマンドを実行するには、MCP ホストプロセスに十分な権限が必要です。
  • サーバーは渡されたスクリプトをそのまま実行します。信頼できる環境でのみ、制御下にあるホスト(Claude など)を介して実行してください。今後のリリースでは、任意で設定できる許可/拒否ポリシーと確認による制御を追加する予定です。

ライセンス

MIT © IMR Research & Development (UK)

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。