Skip to content

Releases: sitharaj88/winctl

WinCtl 1.0.2

Choose a tag to compare

@sitharaj88 sitharaj88 released this 02 Aug 05:22

Performance and documentation release.

Faster startup

sharp, systeminformation and clipboardy are now loaded on first use rather than at import. None of them is needed to answer tools/list, but the connector is spawned fresh every session, so that cost was paid on every launch.

Median startup: 2261ms → 1237ms. A session that never takes a screenshot never pays for sharp at all.

This also widens the margin against MCP client connect timeouts — the failure mode that broke the npx install path in 1.0.0.

Corrected install instructions

The npm page shipped the README from the published tarball, so it kept recommending npx -y @sitharaj88/winctl — which resolves this package's prebuilt native binaries on every launch (~18s) and times out before the handshake completes.

Install globally instead:

npm install -g @sitharaj88/winctl
claude mcp add winctl -- winctl

For Claude Desktop, download winctl.mcpb below and double-click it.

winctl.mcpb  SHA-256  4556a00621ed232482523d23852190eb9ac344d8d27e5109c2eb5142a35a3335

WinCtl 1.0.1

Choose a tag to compare

@sitharaj88 sitharaj88 released this 02 Aug 04:59

Bug-fix release. Anyone on 1.0.0 should upgrade — the documented npx install did not work.

Fixed

Server exited before the client's first request. The stdio entry point hooked beforeExit and called process.exit(0) from it. That event fires whenever Node's event loop goes briefly idle — which for an MCP server simply means no request has arrived yet — so the process killed itself in the gap between starting up and the first message, and clients reported Connection closed.

Launching node dist/index.js directly usually still worked, because the initialize request arrived quickly enough to win the race. Anything that added startup latency lost it every time, including npx -y @sitharaj88/winctl — the install command in the README.

Cleanup now runs from an exit handler (covering stdin closing naturally) plus the signal handlers.

Install

claude mcp add winctl -- npx -y @sitharaj88/winctl

Or download winctl.mcpb below and double-click it in Claude Desktop.

winctl.mcpb  SHA-256  a020b606dfcb42c48b15938908adfa27499c52bfdd2f538a0ca5b09f97b4fd3e

WinCtl 1.0.0

Choose a tag to compare

@sitharaj88 sitharaj88 released this 02 Aug 04:25

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/winctl

Requires 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_snapshot reads 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