Windows-MCPをClaudeに接続する方法 — PowerShellとRegistryを絞る安全策
Windows-MCPはClaudeにWindowsの画面操作・PowerShell・レジストリ編集を任せるMCPサーバーです。Claude CodeとClaude Desktopへの接続手順と、危険なツールを外す設定をまとめます。
Windows-MCPは、ClaudeがWindowsのデスクトップを直接操作できるようにするMCPサーバーです。アプリの起動、マウスとキーボードの入力、スクリーンショットの取得に加えて、PowerShellの実行やレジストリの読み書きまで含みます。開発元はCursorTouchで、Claudeのコネクタ一覧には「Anthropic verified」の表示付きで2026年7月に追加されました。
便利さと危険が同じ入口にあるサーバーです。接続は数分で終わりますが、繋ぐ前に「どのツールを外すか」を決めておくと事故の幅が大きく変わります。
Windows-MCPとは — Claudeに何を任せられるか
Windows-MCPは、LLMとWindows OSの間に立つオープンソースのMCPサーバーです。MITライセンスで、ファイル操作、アプリ操作、UI操作、QAテストなどをClaudeに任せる用途を想定しています。画像認識専用のモデルは前提にせず、画面上のUI要素の情報をテキストで返す設計なので、ビジョン対応でないモデルでも動かせます。
コネクタ一覧に載っているツールは18個です。
| 分類 | ツール |
|---|---|
| 画面の把握 | ツールScreenshot / Snapshot |
| 入力操作 | ツールClick / Type / Scroll / Move / Shortcut / MultiSelect / MultiEdit |
| アプリとウィンドウ | ツールApp / Process / Notification |
| データとシステム | ツールPowerShell / FileSystem / Clipboard / Registry / Scrape |
| 待機 | ツールWait |
GitHubのREADMEには、これに加えてWaitFor(テキストやウィンドウが現れるまで待つ)とDisplayInventory(ディスプレイ構成とDPIの取得)が載っています。README側が新しく、コネクタ一覧のツール表は少し古いバージョンに対応しています。実際に何個見えるかは、入れたバージョンで変わります。
対応OSはWindows 7、8、8.1、10、11です。READMEは「英語のWindows表示が望ましい」としており、他の言語ではAppツールを無効にするよう案内しています。日本語版Windowsで使う場合は、この点が最初の落とし穴になります。
接続前に必要なもの
前提は2つだけです。
- Python 3.13以降
- UV(Pythonのパッケージ管理ツール)
UVは pip install uv か、公式のインストールスクリプトで入れます。初回起動は依存パッケージの取得に1〜2分かかり、その間にサーバー側でタイムアウトすることがありますが、再起動すれば通ります。接続に失敗しても、最初の1回は慌てずにもう一度起動し直してください。
Claude Codeに接続する
Claude Codeなら、1行で登録できます。
claude mcp add --transport stdio windows-mcp -- \
uvx windows-mcp servePowerShellでは行末の \ が行継続として効かないので、1行にまとめて実行します。-- より前がClaude Code側のオプションで、後ろはサーバーの起動コマンドとして無加工で渡されます。全プロジェクトで使うなら --scope user を付けます。付けなければ、現在のプロジェクトだけに効くローカルスコープになります。
登録後はClaude Codeを再起動し、claude mcp list か、セッション内の /mcp で状態を確認します。
「Connection closed」が出るとき
Windowsで接続直後に「Connection closed」と出る場合は、uvx.exe のフルパスを指定します。
claude mcp add --transport stdio windows-mcp -- "C:/Users/<ユーザー名>/.local/bin/uvx.exe" windows-mcp serve<ユーザー名> は自分のWindowsユーザー名に置き換えます。パスはスラッシュ区切りにすると、引用符の中でもシェルの種類を問わず通ります。それでも繋がらないときの切り分けは、MCPサーバーに接続できないときの切り分け手順の4層(設定・起動・認証・ツール表示)で追えます。
WSLからClaude Codeを使う場合
Claude CodeをWSLで動かしていても、Windows-MCPはWindows側で動く必要があります。UI操作にWindowsのAPIを使うためです。Windows側にuvを入れたうえで、powershell.exe を経由して起動します。
claude mcp add windows-mcp --transport stdio -s user -- \
powershell.exe -Command \
"C:/Users/<ユーザー名>/.local/bin/uvx.exe windows-mcp serve"Claude Desktopに接続する
Claude Desktopでは、claude_desktop_config.json に次の設定を足します。PyPI経由で最新版を取る書き方が推奨です。
{
"mcpServers": {
"windows-mcp": {
"command": "uvx",
"args": ["windows-mcp", "serve"]
}
}
}保存したらClaude Desktopを完全に終了して開き直し、ツール一覧にwindows-mcpが出ることを確かめます。ウィンドウを閉じただけでは設定が反映されません。
Microsoft Store版だけは手順が違う
Microsoft Store版(MSIX)のClaude Desktopは、%APPDATA% を仮想化します。そのため次の2点が変わります。
- 設定ファイルの場所が
%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\の下になる - 「Claude Directory」からの自動インストールは、パス変数の解決先がずれて失敗する
さらに、サンドボックス内のElectronアプリはシステムのPATHを引き継ぎません。そのため command には uvx.exe のフルパスを書く必要があります。事前に uv tool install windows-mcp を実行し、生成された実行ファイルを指定する方法もあります。パスは where uvx や where windows-mcp で調べられます。
接続する前に外すツールを決める
ここが本題です。Windows-MCPのSECURITY.mdは、冒頭で「サンドボックスでも隔離環境でもなく、実際のWindowsを直接操作する」と明記しています。プレビューも取り消しもありません。PowerShell経由のファイル削除、clear=True 付きの入力による上書き、「削除」「はい」ボタンのクリックは、元に戻せない可能性があります。
同じ文書は、次の環境に入れないよう求めています。
- 本番のサーバーやワークステーション
- 取り戻せないデータを持つマシン
- 機密データベースやネットワークに繋がるマシン
- 医療・金融・行政など規制のある環境
- 共有マシン
推奨は、仮想マシンかWindows Sandbox、または初期化しても困らない検証機です。常用のPCで使うなら、専用の低権限ユーザーで動かし、バックアップを取り、Claudeの操作を見張りながら進めます。
サーバー側でツールを無効にする
既定では全ツールが有効です。--exclude-tools で個別に外せます。
claude mcp add --transport stdio windows-mcp -- \
uvx windows-mcp serve \
--exclude-tools "PowerShell,Registry,Process"逆に、使うものだけを許可する --tools もあります。画面を見て操作するだけなら、次の最小構成で足ります。
--tools "Screenshot,Snapshot,Click,Type,Scroll,Wait"環境変数の WINDOWS_MCP_EXCLUDE_TOOLS と WINDOWS_MCP_TOOLS でも同じ指定ができます。ツール名は、前掲の一覧どおりに大文字小文字を揃えます。
Claude Code側でも拒否ルールを置く
サーバー側の除外に加えて、Claude Codeの権限設定でも止められます。MCPツールは mcp__<サーバー名>__<ツール名> の形で指定します。サーバー名は登録時の windows-mcp です。
{
"permissions": {
"deny": [
"mcp__windows-mcp__PowerShell",
"mcp__windows-mcp__Registry"
]
}
}.claude/settings.json に置けば、プロジェクトの全員に同じ制限がかかります。サーバーの起動引数を書き換えられても、Claude Code側の拒否ルールは残ります。二重にしておく意味はそこにあります。
なお、権限ルールに括弧で引数条件を付ける書き方は、mcp__ のルールでは読み飛ばされます。「このレジストリキーだけ許可」のような細かい指定はできません。許すか止めるかのどちらかで決めます。
ツール別の危険度の目安
SECURITY.mdは、ツールごとにリスクを分類しています。ただしその表は Shell や Drag といった旧名称で書かれていて、READMEの現行名(PowerShell、Move)と一致しません。分類の考え方だけを借りる形になります。
| 危険度 | ツール | 理由 |
|---|---|---|
| 最も高い | ツールPowerShell | 理由任意のコマンドでシステム変更・削除・通信ができる |
| 高い | ツールClick / Type / Shortcut | 理由削除確認の承諾、テキストの上書き、Alt+F4などを実行できる |
| 中程度 | ツールApp | 理由アプリの起動と管理。データ自体は書き換えない |
| 低い | ツールScroll / Move | 理由表示位置やカーソルを動かすだけ |
| 読み取り中心 | ツールSnapshot / Wait / Scrape | 理由状態の取得。Scrapeは閲覧履歴の露出に注意 |
Registryは同表に載っていません。READMEの説明は「レジストリの値やキーの読み取り・書き込み・削除・一覧」なので、PowerShellと同じく書き込み系として扱うのが安全です。分類表に無いからといって低リスクとは言えません。
画面を読ませるときの注意
Screenshotは、Claudeが画面の状態を見るための基本ツールです。UIツリーの解析を省いて速く撮れる一方、画面に映ったものはすべてClaudeに渡ります。パスワードマネージャー、メール、顧客データのウィンドウは、開いたまま操作させないほうが安全です。
撮影範囲は region=[left, top, right, bottom] で絞れます。狙う領域が決まっているなら、トークンの節約にもなります。
高解像度ディスプレイでは、画像が大きくなりすぎる問題があります。1440pや4Kでは画像がClaude Desktopのツール結果の上限(1MB)を超えうるため、環境変数 WINDOWS_MCP_SCREENSHOT_SCALE で縮小できます。0.5にすると縦横が半分、ファイルサイズは4分の1になります。
{
"mcpServers": {
"windows-mcp": {
"command": "uvx",
"args": ["windows-mcp", "serve"],
"env": { "WINDOWS_MCP_SCREENSHOT_SCALE": "0.5" }
}
}
}Claude Codeでは、画像を返すツールにも MAX_MCP_OUTPUT_TOKENS の上限がかかります。Claude Code側の上限を上げるなら MAX_MCP_OUTPUT_TOKENS です。画像そのものを小さくするなら、前述の region 指定か WINDOWS_MCP_SCREENSHOT_SCALE が使えます。なお、ツール説明文の長さの上限は別の設定で、MCPツール説明文の文字数上限にまとまっています。
撮影のたびに撮影範囲の周りへオレンジ赤の光る枠が出ます。撮影確認のための表示で、撮った画像には写りません。邪魔なら WINDOWS_MCP_DISABLE_FLASH=1 で消せます。
ネットワーク越しに使う場合
既定はstdioで、Claudeと同じマシン上だけで動きます。別のマシンから使いたいときは、SSEかstreamable-httpで待ち受けます。
READMEはネットワーク公開時に認証とTLSを有効にするよう求めています。
--auth-keyで全リクエストにBearerトークンを要求する--ip-allowlistで接続元をCIDR範囲に絞る--ssl-certfileと--ssl-keyfileでHTTPSにする- 設定は
~/.windows-mcp/config.tomlにまとめられる(コマンドラインの指定が優先)
windows-mcp auth を実行すると、認証キーを生成して設定ファイルに書き込みます。ブラウザー向けのCORSは、既定では一切許可されません。
ローカルで使うだけなら、この節は不要です。--host 0.0.0.0 で公開する場合だけ、上の指定が要ります。
使い方の例と、つまずきやすい点
接続後は、通常の会話で頼みます。例えば次のような依頼です。
メモ帳を開いて、今日の作業ログを日付付きで
デスクトップの work フォルダに保存して。
削除や上書きは絶対にしないで。操作の粒度は、Claudeが Snapshot や Screenshot で画面を見て、App、Click、Type を順に呼ぶ形になると考えられます。動きが速いときでも、1手ごとに0.2〜0.9秒ほどかかると、コネクタ一覧は説明しています。GitHub側の記載は0.2〜0.5秒と少し違っていて、どちらも負荷やモデルの推論速度で変わる目安です。
つまずきやすい点をまとめます。
- 初回起動のタイムアウト: 依存の取得中に切れる。再起動すれば通る
- 日本語版Windows: Appツールが英語表示を前提にしている。無効にするか、パス指定の起動を使う
- WSL:
powershell.exe経由にしないと、Windowsのウィンドウを操作できない - Store版のClaude Desktop: 設定ファイルの場所が違い、PATHも引き継がれない
- ツールが増えすぎたとき: 使わないものを
--toolsで絞ると、Claudeに渡るツール一覧も短くなる
匿名の利用統計も初期状態で有効です。個人情報・ツール引数・出力は収集対象外です。止めるには ANONYMIZED_TELEMETRY を false にします。
似た用途のコネクタとの使い分け
画面を直接操作するのではなく、クラウド上でブラウザーを動かしたいなら、Browserbase MCPサーバーのほうが向きます。手元のマシンに触れずに済むからです。Windows-MCPが向くのは、ローカルにしかないデスクトップアプリやファイルを動かす作業です。
データ分析のように、操作対象がクラウドサービスのAPIで済む場合は、Tableauコネクタのような公式コネクタのほうが、権限の範囲が限られます。Windows-MCPは、そのユーザーが実行できることをほぼ全部実行できる点で、権限の性質が違います。
| 用途 | Windows-MCP | クラウドのコネクタ |
|---|---|---|
| ローカルのデスクトップアプリを動かす | Windows-MCP向く | クラウドのコネクタ不可 |
| 権限をサービス単位で絞る | Windows-MCP難しい | クラウドのコネクタ向く |
| 検証機・VMでの実験 | Windows-MCP向く | クラウドのコネクタどちらでも |
| 業務PCでの常用 | Windows-MCP慎重に判断 | クラウドのコネクタ向く |
コネクタ一覧のページにも、信頼できる開発元のコネクタだけを使うよう注意書きがあります。Anthropicはツールの中身を管理せず、動作や変更を保証できないという趣旨です。Windows-MCPはオープンソースなので、ソースを読んでから入れられます。
まとめ
Windows-MCPは、claude mcp add の1行かJSON設定で入ります。手間はほとんどありません。本当の作業は、繋ぐ前に「PowerShell」「Registry」「Process」を外すかどうかを決めることです。
まず仮想マシンかWindows Sandboxで試し、画面操作だけの構成から始めるのが無理のない進め方です。PowerShellとRegistryは、必要になった作業の間だけ有効にする使い方が合います。サーバー側の --exclude-tools とClaude Codeの deny ルールを両方置いておけば、片方が外れても止まります。