---
title: "Windows-MCP: Let an AI Assistant Operate Windows 10 and 11"
url: "https://mcpshelf.co/servers/windows-mcp"
description: "Windows-MCP lets Claude and other clients click, type, open apps, run PowerShell and read the screen on Windows. The uvx config and the safety switches."
updated: "2026-10-27"
site: "MCP Shelf"
---

# Windows-MCP

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

## 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 |
| GitHub | https://github.com/CursorTouch/Windows-MCP |
| Licence | MIT |
| PyPI package | [windows-mcp](https://pypi.org/project/windows-mcp/) 0.8.8 (10 Oct 2026) |
| GitHub stars | 10.4K |
| Downloads | 23.1K a week |
| Last commit | 26 Oct 2026 |
| Tools | 21 |
| Runs on | Your computer |
| Install check | Needs your setup first |
| Category | [Agent helpers and desktop control](https://mcpshelf.co/categories/agents-and-automation) |

**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.

## Tools

We listed 21 tools on 27 Oct 2026. 7 only read; the rest can change things or run commands.

| Tool | Kind | What it is for |
| --- | --- | --- |
| `App` | changes | Launches an app by its Start menu name or executable path, and moves, resizes or switches between windows. |
| `Clipboard` | changes | Reads or replaces what is on the Windows clipboard. |
| `ControlStatus` | reads | Says whether the assistant or the person currently has control of the desktop, and how long until the assistant may act again. |
| `DisplayInventory` | reads | Reports the monitors, their layout, work areas and scaling. |
| `FileSystem` | changes | Reads, writes, copies, moves, deletes, lists and searches files and folders. |
| `Click` | changes | Clicks at screen coordinates or on an element from the last snapshot, with the left, right or middle button. |
| `Type` | changes | Types text at a spot or into a labelled field, optionally clearing it first and pressing Enter after. |
| `Scroll` | changes | Scrolls a window or a region up, down, left or right. |
| `Move` | changes | Moves the pointer, or drags from one point to another. |
| `Shortcut` | changes | Presses a key combination such as Ctrl+C or Alt+Tab. |
| `Wait` | reads | Pauses for a set number of seconds. |
| `WaitFor` | reads | Waits until some text, a window or an element appears on screen. |
| `MultiSelect` | changes | Selects several items (files, checkboxes, list rows) in one call, holding Ctrl if asked. |
| `MultiEdit` | changes | Fills several input fields in one call. |
| `Notification` | changes | Shows a Windows toast notification under a registered app ID. |
| `Process` | runs | Lists running processes or ends one by PID or name. |
| `Registry` | changes | Reads, writes, deletes and lists Windows Registry keys and values. |
| `Scrape` | reads | Fetches a web page and returns a summary of it, or reads the page open in the active browser tab. |
| `PowerShell` | changes | Runs a PowerShell command and returns the output. |
| `Snapshot` | reads | Captures the desktop state: open and focused windows, every clickable element with coordinates, and scrollable areas. Optionally adds a screenshot. |
| `Screenshot` | reads | A faster capture that returns an image plus the cursor position and window list, without walking the accessibility tree. |

## Set it up

### Claude Desktop

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

```json
{
  "mcpServers": {
    "windows-mcp": {
      "command": "uvx",
      "args": [
        "windows-mcp",
        "serve"
      ]
    }
  }
}
```

### Claude Code

Where: Your terminal, in the project folder

```bash
claude mcp add-json windows-mcp '{"command":"uvx","args":["windows-mcp","serve"]}'
```

### Cursor

Where: ~/.cursor/mcp.json, or .cursor/mcp.json in a project

```json
{
  "mcpServers": {
    "windows-mcp": {
      "command": "uvx",
      "args": [
        "windows-mcp",
        "serve"
      ]
    }
  }
}
```

### VS Code

Where: .vscode/mcp.json in your project

```json
{
  "servers": {
    "windows-mcp": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "windows-mcp",
        "serve"
      ]
    }
  }
}
```

### Windsurf

Where: ~/.codeium/windsurf/mcp_config.json

```json
{
  "mcpServers": {
    "windows-mcp": {
      "command": "uvx",
      "args": [
        "windows-mcp",
        "serve"
      ]
    }
  }
}
```

### ChatGPT

Where: Not supported

ChatGPT only connects to remote servers by URL. This one runs on your computer, so use Claude, Cursor or VS Code.

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.

## Settings

| Setting | Kind | Required | What it does |
| --- | --- | --- | --- |
| `--exclude-tools` | flag | no | Starts the server without the tools you list. The obvious first candidates are PowerShell and Registry. Example: `--exclude-tools PowerShell,Registry` |
| `--tools` | flag | no | The opposite: only the tools you list are switched on. Example: `--tools Snapshot,Screenshot,Click,Type` |
| `--control-policy` | flag | no | How strictly the assistant waits for you to stop using the mouse and keyboard before it acts: relaxed (default), balanced or strict. Example: `--control-policy strict` |
| `WINDOWS_MCP_SCREENSHOT_SCALE` | env | no | Shrinks screenshots before they are sent, which helps on 1440p and 4K screens where images get too big for the client. Example: `0.5` |
| `WINDOWS_MCP_EXCLUDE_PROCESSES` | env | no | Apps whose windows it should not inspect, for programs that make the accessibility scan slow or hang. Example: `Code.exe,Cursor.exe` |
| `ANONYMIZED_TELEMETRY` | env | no | Set to false to stop the anonymous usage reporting it sends by default. Example: `false` |
| `--transport` | flag | no | Runs it over SSE or streamable HTTP instead of stdio, so another machine can connect. Pair it with --auth-key and an IP allowlist. Example: `--transport streamable-http --host localhost --port 8000` |
| `~/.windows-mcp/config.toml` | config | no | Keeps 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)

## Good for

- Automating desktop apps that have no API
- Repetitive form filling and file shuffling on a Windows PC
- Letting an agent check what is actually on screen before it acts

## 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.

## Similar servers

| Server | Tools | Runs on | Stars |
| --- | --- | --- | --- |
| [Mobile MCP](https://mcpshelf.co/servers/mobile-mcp) | 34 | Your computer | 10K |
| [Container Use](https://mcpshelf.co/servers/container-use) | 15 | Your computer | 4.1K |
| [Sequential Thinking](https://mcpshelf.co/servers/sequential-thinking) | 1 | Your 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 GitHub: https://github.com/CursorTouch/Windows-MCP

---

From [MCP Shelf](https://mcpshelf.co/): A short shelf of MCP servers that are worth installing. Index for agents: https://mcpshelf.co/llms.txt

