Jig
Jig is an MCP (Model Context Protocol) server for Windows. It lets an AI agent such as Claude Code
read and operate desktop applications, and web pages in a browser you are already signed into, through
Microsoft UI Automation: it sees named controls and their state as text rather than guessing from pixels,
and it clicks, types, pastes, scrolls and works file dialogs. It comes with three safeguards the machine's
owner controls: an allowed-app list, a stop key, and an audit log.
At a glance
- What it is
- A local stdio MCP server (
Jig.Mcp.exe, 74 tools) built on the open-source FlaUI library over UI Automation. Ships with AI_GUIDE.md, a practical guide for the agent that uses it.
- Best for
- Operating Windows apps that have no API (engineering/CAD tools, line-of-business and legacy apps), UI-testing your own WPF/WinForms apps, and filling in web forms in your own signed-in browser.
- Not for
- macOS or Linux; apps that expose nothing to UI Automation (many games, custom-drawn canvases); unattended or headless runs (it needs a live, unlocked desktop); driving elevated (administrator) apps unless Jig is elevated too.
- It uses your real desktop
- Real mouse and keyboard, so you cannot work on the machine while it drives. For automation in an isolated Windows Sandbox that leaves your own input alone, see JigRig, a separate install.
- Requirements
- 64-bit Windows (developed and exercised on Windows 11) and the .NET 10 Desktop Runtime. The installer can fetch the runtime for your user only.
- Install
- One PowerShell line, per-user, no administrator prompt. About 0.6 MB.
- Network
- Jig's own code makes no network connections and sends no telemetry. It talks to its MCP client over stdio only.
- Status
- Pre-release (version 0.0.1-dev), an independent project. Hundreds of unit tests; no changelog or published license yet; distributed as a binary download from this site, with no source link published here.
Install
Run in PowerShell:
irm https://shakytext.com/jig/install.ps1 | iex
That installs the server to %USERPROFILE%\Jig\bin, verifies the download against its SHA-256
checksum, starts the installed server and confirms it lists its tools, and registers it with Claude Code as
jig (user scope) when the claude CLI is present. It is entirely per-user. If the
.NET 10 Desktop Runtime is missing it asks before installing it under %USERPROFILE%\Jig\dotnet,
using Microsoft's dotnet-install script. Re-run the same line to update.
Or take the files directly: Jig.zip ·
checksum · full README
Is it a good fit?
Choose Jig when
- the target is a Windows desktop app with no usable API
- you want an agent to work in the browser session you are already signed into, rather than in a separate browser that has to be logged in again
- you want state as small text summaries rather than screenshots (
describe_window)
- you need guardrails on what the agent may touch, a way to stop it instantly, and a record of what it did
Look elsewhere when
- the job is pure web automation in a browser the tool launches itself; browser-protocol tools (Playwright, for example) see the page DOM, which UI Automation does not
- you need it to run while you use the machine (use JigRig, or a VM)
- the app is custom-drawn and exposes no controls; Jig falls back to coordinate clicks, which are brittle
- you need a supported, versioned, licensed product today
What it can do (74 tools)
- Attach and launch: attach, detach, list_apps, launch_profile, list_profiles, close_window, dismiss_modal
- See: describe_window (a text account of what is on screen), read_tree, find_elements, read, get_element_info, get_focused_element, screenshot, screenshot_desktop, list_windows, get_window_info, get_foreground_window, list_monitors
- Act: click, teleport_click, real_click, double_click, right_click, middle_click, pixel_click, hover, drag, drag_path, mouse_down, mouse_up, mouse_move, scroll, scroll_into_view
- Text and keys: type (verified by read-back, never typed twice), paste (real Ctrl+V, verified, clipboard restored), clear, send_key, clipboard_read, clipboard_write
- Controls: select, list_options, set_toggle, invoke_menu, set_file_dialog_path
- Synchronise and verify: wait_for, wait_for_idle, wait_for_window, assert
- Windows and batching: move_window, set_window_state, batch
- Diagnostics and safety: get_version, get_log_path, read_logs, get_audit_log
Safety model: set it before first use at work
Jig can do anything you can do with the mouse and keyboard in the apps it can see. Its limits are
set by you, in %USERPROFILE%\.jig\policy.json, and there is deliberately no tool the agent can use to change them:
- Allowed apps.
{ "allowedProcesses": ["firefox", "notepad"] } makes Jig refuse to launch, attach to, read or click anything else, including a click aimed at an allowed app that would land on another window overlapping it. A policy file that cannot be read allows nothing.
- Stop key.
Ctrl+Alt+Shift+J stops all input at once, mid-text; press again to resume. Only you can resume.
- Audit log. On by default, in
%USERPROFILE%\.jig\audit: every call, the app it targeted, which window was in front before and after, and the outcome. Typed text is recorded as its length only. Each line carries the hash of the line before it, so an edited or removed line in the middle is detectable. This is tamper-evident, not tamper-proof.
Not covered by the allowed list: the read-only desktop-wide tools (list_windows, screenshot_desktop, clipboard_read, clipboard_write).
Input that goes to whichever window is in front is refused, with nothing sent, if the target app cannot be brought forward.
What the installer changes on your machine
- Creates
%USERPROFILE%\Jig (the server; plus dotnet only if you accept the runtime).
- Runs
claude mcp add --scope user jig, which edits your Claude Code user configuration.
- Removes the downloaded-from-internet mark from the installed files so Windows SmartScreen does not block the first launch.
- Jig later writes
%USERPROFILE%\.jig\audit and a diagnostic log under %TEMP%\EngWorkbench.
- No administrator rights, no services, no startup entries, no registry writes, and no PATH changes. Remove with
claude mcp remove --scope user jig and by deleting the folders.
Page last updated 2026-10-19. Jig is a separate install from JigRig,
which runs the same automation inside Windows Sandbox. The README has the settings
reference, the limits of each safeguard, and file locations.