Windows Sandbox MCP

io.github.fmuecke由 GitHub 帳號 fmuecke 發布v1.0.0更新於 Nov 7, 2026

Run risky commands in a disposable, offline Windows Sandbox (Windows only, needs a one-time setup).

已驗證STDIO僅桌面開發者工具安全與監控

概覽

AI 產生的概覽

在一次性、離線的 Windows 沙箱客體中執行高風險命令,與主機其他部分隔離,僅限 Windows。

可以做什麼
  • 啟動全新的沙箱客體,可選擇將輸入資料夾以唯讀方式對應、輸出資料夾以可寫方式對應
  • 以來賓中的 system 或 user 身分(皆為提高權限)執行命令,並從輸出資料夾讀取結果
  • 查看執行狀態、沙箱 ID 與已對應的資料夾
  • 停止並捨棄客體;中斷連線、閒置逾時或代理程式結束時也會自動停止
適用情境
適合需要執行不受信任或可能具破壞性的命令、指令碼或下載內容,又不希望影響主機時使用,前提是結果可透過對應的輸入與輸出資料夾交換。
執行需求
Windows 11 24H2 或更新版本並啟用 Windows 沙箱;需要一次系統管理員安裝與初始化;涉及兩個帳戶:執行代理程式的互動使用者帳戶,以及執行 MCP 代理程序的獨立代理帳戶。發行版為自包含,無需 .NET。
安裝前請注意
代理程式以互動使用者權限執行,因此程式必須放在僅系統管理員或該使用者可寫入的資料夾中,setup 與 serve 會拒絕不安全的位置。命令在客體中以提高權限執行,客體沒有網路存取。同一時間僅允許一個工作階段連線,停止、中斷或閒置逾時後客體即被捨棄。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Windows Sandbox MCP,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Windows Sandbox MCP

MCP server that lets a restricted agent run risky commands in a fresh, offline Windows Sandbox guest, without access to anything else on the host. Design and validated wsb.exe behaviour: SPEC.md. Reporting vulnerabilities: SECURITY.md.

wsb-mcp is the name of the executable, the project and the solution.

Agent host ──stdio──> wsb-mcp proxy ──named pipe──> wsb-mcp serve ──> wsb.exe           (agent account)        (ACL: agent only)  (your account)

Tools

ToolPurpose
sandbox_startStart a guest; optionally map inputPath read-only at C:\SandboxIn and outputPath writable at C:\SandboxOut.
sandbox_execRun a command (runAs system or user, both elevated). Returns the guest exit code only; redirect output to files in C:\SandboxOut.
sandbox_statusRunning state, id, mapped folders.
sandbox_stopStop and discard the guest.

The guest is also stopped when the agent disconnects, after the idle timeout, and when the broker exits.

Build and test

powershell
dotnet builddotnet run --project tests/WsbMcp.Tests          # all tests, optional name filter as argumentpwsh -NoProfile -File tests/WindowsSandboxTest.Tests.ps1   # psm1 tests

The tests use a fake wsb.exe and do not need Windows Sandbox.

Installation

Two accounts are involved:

  • You: the interactive user, who runs the broker.
  • The agent: for example AgentSandbox, which runs Claude Code and the proxy.

Requirements: Windows 11 24H2 or later, with Windows Sandbox enabled. To enable it, run this as admin and reboot:

powershell
Enable-WindowsOptionalFeature -Online -FeatureName Containers-DisposableClientVM -All

The release build is self-contained, so no .NET is needed.

Quick start

  1. Install the program (admin; installs below C:\Program Files):
    powershell
    winget install fmuecke.WsbMcp --scope machine
  2. Set up the broker. Run this as you, in a normal terminal, not elevated:
    powershell
    wsb-mcp setup --agent AgentSandbox --root C:\AgentSandbox
    • --root is the folder below which the agent may map folders into the sandbox.
    • setup checks the prerequisites, writes the config, and registers a logon task that starts the broker hidden in your desktop session.
    • It then starts the broker and prints the next step.
  3. Connect Claude Code. As the agent, in Claude Code:
    /plugin marketplace add fmuecke/windows-sandbox-mcp/plugin install wsb-mcp@windows-sandbox-mcp
    The plugin adds the four tools plus a skill that teaches Claude how to use them. Without plugins, use this instead: claude mcp add --scope user wsb -- wsb-mcp proxy.

Check everything with wsb-mcp diag, run as you or as the agent. If the broker isn't running, the tools say so and tell you what to run. Once it's running, the next call works without restarting Claude Code.

Commands

CommandRun asPurpose
wsb-mcp setup --agent <account> --root <dir> [--pipe <name>] [--no-autostart] [--force]you (not elevated)One-time setup: config, logon task, start.
wsb-mcp start / wsb-mcp stopyouStart the broker now / stop it (and its guest) gracefully.
wsb-mcp diagyou or the agentCheck each link of the chain, with a fix for each failure.
wsb-mcp uninstall [--keep-config]youStop, then remove the logon task, config and log.
wsb-mcp serve [--config <path>]youRun the broker in the foreground; Ctrl+C stops it.
wsb-mcp proxy [--pipe <name>]the agent's MCP hoststdio bridge to the broker; you never run this yourself.

The config is %LOCALAPPDATA%\wsb-mcp\config.json. setup writes the first three keys; the others are optional:

json
{  "agentAccount": "AgentSandbox",  "allowedRoot": "C:\\AgentSandbox",  "pipeName": "wsb-mcp",  "idleTimeoutMinutes": 30,  "maxExecTimeoutSeconds": 1800,  "startupTimeoutSeconds": 120,  "logPath": "%LOCALAPPDATA%\\wsb-mcp\\broker.log"}

Unknown keys are rejected. wsbPath overrides wsb.exe, for tests.

Why the location matters

The broker runs with your rights. If anyone else could replace its exe, they could run code as you. So serve and setup refuse to run if anyone other than SYSTEM, Administrators, TrustedInstaller or you could do one of the following:

  • change the exe;
  • add files next to it;
  • rename or re-permission any folder on its path.

The winget install below C:\Program Files passes by default. The broker also refuses a config or log inside allowedRoot.

Agent accounts with managed Claude Code settings

If C:\Program Files\ClaudeCode\managed-settings.json restricts MCP servers, admin changes are needed:

  • strictKnownMarketplaces: add this repository's marketplace, for /plugin marketplace add.
  • allowedMcpServers: add { "serverCommand": ["wsb-mcp", "proxy"] }, the command the plugin runs.
  • strictPluginOnlyCustomization containing "mcp": only the plugin route works. Alternatively, define the server centrally in C:\Program Files\ClaudeCode\managed-mcp.json:
    json
    { "mcpServers": { "wsb": { "command": "wsb-mcp", "args": ["proxy"] } } }

Symptom of a blocking policy: /mcp shows "No MCP servers configured".

Without winget

Download the zip for your architecture from the Releases page. CI builds and tests it from its tag, and GitHub signs its build provenance. Verify the zip, and extract it into a folder only admins (or you) can write:

powershell
$zip = "$env:USERPROFILE\Downloads\wsb-mcp-<version>-win-x64.zip"gh attestation verify $zip --repo fmuecke/windows-sandbox-mcp$dir = "$env:ProgramFiles\wsb-mcp"            # as adminExpand-Archive $zip -DestinationPath $dir -Force

Then run & "$dir\wsb-mcp.exe" setup ... as in step 2. For the Claude side, setup prints the full exe path to use. SHA256SUMS.txt only detects a damaged download. It does not prove who built the zip; the attestation does.

From source: build a reviewed commit in a clone the agent cannot modify, for example with dotnet publish src/WsbMcp -c Release -r win-x64 -o $dir. That needs the .NET 10 SDK and NuGet access. Never build in a checkout the agent can write, such as one below C:\AgentSandbox.

Verify against the real sandbox

As the agent account, with the broker running:

powershell
pwsh -NoProfile -File tests\smoke\real-smoke.ps1 -ProxyExe (Get-Command wsb-mcp).Source -HoldForCtrlC

It runs 22 checks (19 without -HoldForCtrlC):

  • folder rules
  • read-only input
  • no network
  • exit codes
  • runAs: user
  • timeout
  • stop on disconnect

At the end it asks you to stop the broker (wsb-mcp stop) and checks that the tools then return the offline hint. Afterwards wsb list must show no sandbox.

Update

Windows locks the exe while the broker runs, so stop it first:

powershell
wsb-mcp stopwinget upgrade fmuecke.WsbMcp     # adminwsb-mcp start

Troubleshooting

Start with wsb-mcp diag. Common cases:

SymptomCause / fix
Tool error "The wsb-mcp broker is not reachable"The broker isn't running (wsb-mcp start), was never set up (wsb-mcp setup), or another session is connected (one at a time).
/mcp: "No MCP servers configured"A managed policy blocks the server. See "Agent accounts with managed Claude Code settings".
setup / serve: "not in a safe location" / "refusing to serve"The exe is in a folder others can write to. Install with winget or below C:\Program Files.
The broker log shows client.rejectedThe connecting account is not agentAccount, or it connected anonymously.
serve: "The stop event … already exists"A broker is already running, or another process created the event. Run wsb-mcp stop, or sign out and back in.
Rule 4 rejects a folder you think is fineThe agent lacks list (input) or create-file (output) rights on that exact folder. Check with icacls.
runAs: user fails with "No user session"The broker isn't running in your interactive desktop session. Use the logon task, not a service.

Uninstall

powershell
wsb-mcp uninstall                 # as you: task, config, logwinget uninstall fmuecke.WsbMcp   # admin

In Claude Code, as the agent: /plugin uninstall wsb-mcp (or claude mcp remove wsb).

License

MIT - Florian Mücke, 2026

來源:README.md,提交 768b6a1

工具

0
SourceWeft 曾在隔離沙箱中以無憑證方式啟動該軟體包一次,以列出其工具,但未能完成:該軟體包類型無法在沙箱中執行。

版本歷史

1
  1. v1.0.0最新Nov 7, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分