WinCtl 1.0.0
Full Windows desktop control for Claude and other MCP clients — 40 tools spanning screen capture, UI Automation, synthetic input, window and process management, files, clipboard and shell.
Install
Claude Desktop — download winctl.mcpb below and double-click it.
Claude Code
claude mcp add winctl -- npx -y @sitharaj88/winctlRequires Windows 10 (1809+) or 11 and Node.js 20+. No compiler needed — every native dependency ships prebuilt.
What makes it reliable
- UI Automation first.
uia_snapshotreads an application's accessibility tree, so Claude acts on "the Save button" rather than coordinates that go stale when a window moves. - Correct coordinates. Per-monitor DPI awareness is set before any UI call, and bounds come from the DWM frame rather than
GetWindowRect. Without this, every coordinate on a scaled display is silently wrong. - Input that arrives. Typing is paced and falls back to the clipboard for long text — batched Unicode key events get dropped by the target application.
- Handles that can't betray you. Window ids are fingerprinted against pid and class, because Windows recycles
HWNDs and a stale one can retarget a different app.
Safety
Capabilities are gated by permission tier, and tools in a disabled tier are never registered — the model cannot see or attempt them.
| Profile | Tools exposed |
|---|---|
readonly |
19 — observation only |
standard (default) |
36 — adds interaction and file access |
full |
40 — adds process control and shell |
Path containment resolves symlinks before checking, and System32, WinSxS, Boot and the Startup folder stay refused in every profile. Destructive actions prompt for confirmation, and every call is written to a local audit log with sensitive arguments redacted. An unrecognised profile fails closed to readonly.
See PRIVACY.md — WinCtl has no backend, no telemetry and makes no network calls of its own.
Verified
Tested against a live Windows 11 desktop: 22 MCP protocol checks, 9 interactive checks driving Notepad end to end, and the full suite again from this packed bundle after extraction.
winctl.mcpb SHA-256 3aa78414368125896e16e522f8ed1c842cfd4c7eec5ba41fb6deee344a7d7a91