Skip to content
MCP Shelf

Windows-MCP

View on GitHub

Mouse, keyboard, apps, files and PowerShell on a Windows PC, driven by your assistant.

  • Needs your setup first
  • ★ 10.4K GitHub stars
  • 23.1K downloads a week
  • Last commit 26 Oct 2026

At a glance

Windows-MCP reads the Windows accessibility tree to find buttons, fields and menus, then clicks, types, scrolls and switches windows like a person at the keyboard. It also reaches past the screen: PowerShell, the file system, the clipboard, running processes and the registry.

That reach is the reason to set it up with care. It runs as your user with no sandbox, so turn off the tools you do not need (PowerShell and Registry are the obvious ones) and keep it on a machine where a wrong click is cheap.

Made by
CursorTouch
Licence
MIT
Latest version
0.8.8 (10 Oct 2026)
PyPI package
windows-mcp
GitHub stars
10.4K
Downloads
23.1K a week
Last commit
26 Oct 2026
Tools
21
Runs on
Your computer

Our check: It needs something our Linux test machine does not have (an account, a desktop app, a Mac or a running service), so on 27 Oct 2026 we read its tools from the source code instead of running this config. windows-mcp on PyPI links back to CursorTouch/Windows-MCP. Version 0.8 needs the serve subcommand, which the shared database config left out.

What's in the pod: its tools

We found 21 tools in its source code on 27 Oct 2026. 7 only read. The rest can change things, so keep your app's "ask before each tool call" setting on for them.

How we tested it: Read from the source of Windows-MCP 0.8.8. It installs only on Windows (it depends on pywin32), so our Linux machine could not start it.

Runs commands1 tool · Can start programs or run code.

ToolWhat it is for
ProcessLists running processes or ends one by PID or name.

Changes things13 tools · Can create, edit, send or delete.

ToolWhat it is for
AppLaunches an app by its Start menu name or executable path, and moves, resizes or switches between windows.
ClickClicks at screen coordinates or on an element from the last snapshot, with the left, right or middle button.
ClipboardReads or replaces what is on the Windows clipboard.
FileSystemReads, writes, copies, moves, deletes, lists and searches files and folders.
MoveMoves the pointer, or drags from one point to another.
MultiEditFills several input fields in one call.
MultiSelectSelects several items (files, checkboxes, list rows) in one call, holding Ctrl if asked.
NotificationShows a Windows toast notification under a registered app ID.
PowerShellRuns a PowerShell command and returns the output.
RegistryReads, writes, deletes and lists Windows Registry keys and values.
ScrollScrolls a window or a region up, down, left or right.
ShortcutPresses a key combination such as Ctrl+C or Alt+Tab.
TypeTypes text at a spot or into a labelled field, optionally clearing it first and pressing Enter after.

Only reads7 tools · Looks things up and changes nothing.

ToolWhat it is for
ControlStatusSays whether the assistant or the person currently has control of the desktop, and how long until the assistant may act again.
DisplayInventoryReports the monitors, their layout, work areas and scaling.
ScrapeFetches a web page and returns a summary of it, or reads the page open in the active browser tab.
ScreenshotA faster capture that returns an image plus the cursor position and window list, without walking the accessibility tree.
SnapshotCaptures the desktop state: open and focused windows, every clickable element with coordinates, and scrollable areas. Optionally adds a screenshot.
WaitPauses for a set number of seconds.
WaitForWaits until some text, a window or an element appears on screen.

Grouped and described by us. The README on GitHub lists the inputs each tool takes.

Set it up

Pick your app for the exact snippet and where it goes.

Where it goes: claude_desktop_config.json (Settings → Developer → Edit Config)

Claude Desktop
{
  "mcpServers": {
    "windows-mcp": {
      "command": "uvx",
      "args": [
        "windows-mcp",
        "serve"
      ]
    }
  }
}

Add "--exclude-tools", "PowerShell,Registry" after serve to start without its two most powerful tools. Set "ANONYMIZED_TELEMETRY": "false" in env to switch off its usage reporting.

New to this? See the setup guides for Claude Code, Cursor, Claude Desktop and ChatGPT.

Settings

Names are exactly as the project spells them. Required ones are marked.

SettingWhat it does
--exclude-toolsCommand line flagStarts the server without the tools you list. The obvious first candidates are PowerShell and Registry.--exclude-tools PowerShell,Registry
--toolsCommand line flagThe opposite: only the tools you list are switched on.--tools Snapshot,Screenshot,Click,Type
--control-policyCommand line flagHow strictly the assistant waits for you to stop using the mouse and keyboard before it acts: relaxed (default), balanced or strict.--control-policy strict
WINDOWS_MCP_SCREENSHOT_SCALEEnvironment variableShrinks screenshots before they are sent, which helps on 1440p and 4K screens where images get too big for the client.0.5
WINDOWS_MCP_EXCLUDE_PROCESSESEnvironment variableApps whose windows it should not inspect, for programs that make the accessibility scan slow or hang.Code.exe,Cursor.exe
ANONYMIZED_TELEMETRYEnvironment variableSet to false to stop the anonymous usage reporting it sends by default.false
--transportCommand line flagRuns it over SSE or streamable HTTP instead of stdio, so another machine can connect. Pair it with --auth-key and an IP allowlist.--transport streamable-http --host localhost --port 8000
~/.windows-mcp/config.tomlConfigKeeps the same options in a file instead of on the command line. Command-line flags win when both are set.

What it can touch

It can read

  • Everything visible on screen and the structure of open windows
  • Files and folders your Windows account can open
  • The clipboard, running processes and the registry
  • Web pages it is asked to scrape

It can change

  • Any app it clicks or types into
  • Files it writes, moves or deletes
  • Registry values
  • Processes it ends
  • Whatever a PowerShell command does

Safer setup: Start it with --exclude-tools PowerShell,Registry, use --control-policy strict so it waits until you stop using the computer, and try it in a Windows virtual machine before your main PC.

Before you start

  • Windows 10 or 11
  • Python 3.14 or newer and uv (for uvx)

If it does not work

The first start times out
uvx is still downloading dependencies the first time. Wait a minute and restart the client; later starts are quick.
Claude Desktop from the Microsoft Store does not see the server
The Store version keeps its config under %LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude, and it does not inherit PATH, so use the full path to uvx.exe as the command.
Screenshots fail or are rejected as too large
Set WINDOWS_MCP_SCREENSHOT_SCALE to 0.5, or switch WINDOWS_MCP_SCREENSHOT_BACKEND to mss or pillow if the default capture method fails on your graphics card.
Snapshot hangs on one app
Some apps answer accessibility queries very slowly. Name them in WINDOWS_MCP_EXCLUDE_PROCESSES.
Running Claude Code inside WSL
The server has to run on the Windows side. Register it with powershell.exe -Command and the Windows path to uvx.exe, as the project README shows.

Peas in a pod: similar servers

How Windows-MCP lines up against other agent helpers and desktop control servers on the shelf.

ServerToolsRuns onLicenceStars
Windows-MCP21Your computerMIT10.4K
Mobile MCP34Your computerApache-2.010K
Container Use15Your computer–4.1K
Sequential Thinking1Your computer–91.6K

Questions

Does it need a vision model?

No. It reads the accessibility tree, so any model can use it from text alone. Screenshots are optional.

Can it play games?

The project says no: games rarely expose accessibility information, and it is built for normal desktop apps.

Does it work on macOS or Linux?

No, it uses Windows-only APIs. For a Mac, look at Peekaboo instead.

What licence is it under?

MIT.

Full docs on GitHubCursorTouch/Windows-MCP

Something wrong on this page? Tell us.

More in Agent helpers and desktop control