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.
| Tool | What it is for |
|---|---|
Process | Lists running processes or ends one by PID or name. |
Changes things13 tools · Can create, edit, send or delete.
| Tool | What it is for |
|---|---|
App | Launches an app by its Start menu name or executable path, and moves, resizes or switches between windows. |
Click | Clicks at screen coordinates or on an element from the last snapshot, with the left, right or middle button. |
Clipboard | Reads or replaces what is on the Windows clipboard. |
FileSystem | Reads, writes, copies, moves, deletes, lists and searches files and folders. |
Move | Moves the pointer, or drags from one point to another. |
MultiEdit | Fills several input fields in one call. |
MultiSelect | Selects several items (files, checkboxes, list rows) in one call, holding Ctrl if asked. |
Notification | Shows a Windows toast notification under a registered app ID. |
PowerShell | Runs a PowerShell command and returns the output. |
Registry | Reads, writes, deletes and lists Windows Registry keys and values. |
Scroll | Scrolls a window or a region up, down, left or right. |
Shortcut | Presses a key combination such as Ctrl+C or Alt+Tab. |
Type | Types 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.
| Tool | What it is for |
|---|---|
ControlStatus | Says whether the assistant or the person currently has control of the desktop, and how long until the assistant may act again. |
DisplayInventory | Reports the monitors, their layout, work areas and scaling. |
Scrape | Fetches a web page and returns a summary of it, or reads the page open in the active browser tab. |
Screenshot | A faster capture that returns an image plus the cursor position and window list, without walking the accessibility tree. |
Snapshot | Captures the desktop state: open and focused windows, every clickable element with coordinates, and scrollable areas. Optionally adds a screenshot. |
Wait | Pauses for a set number of seconds. |
WaitFor | Waits 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)
{
"mcpServers": {
"windows-mcp": {
"command": "uvx",
"args": [
"windows-mcp",
"serve"
]
}
}
}Where it goes: Your terminal, in the project folder
claude mcp add-json windows-mcp '{"command":"uvx","args":["windows-mcp","serve"]}'Where it goes: ~/.cursor/mcp.json, or .cursor/mcp.json in a project
{
"mcpServers": {
"windows-mcp": {
"command": "uvx",
"args": [
"windows-mcp",
"serve"
]
}
}
}Where it goes: .vscode/mcp.json in your project
{
"servers": {
"windows-mcp": {
"type": "stdio",
"command": "uvx",
"args": [
"windows-mcp",
"serve"
]
}
}
}Where it goes: ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"windows-mcp": {
"command": "uvx",
"args": [
"windows-mcp",
"serve"
]
}
}
}Where it goes: 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.
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.
| Setting | What it does |
|---|---|
--exclude-toolsCommand line flag | Starts the server without the tools you list. The obvious first candidates are PowerShell and Registry.--exclude-tools PowerShell,Registry |
--toolsCommand line flag | The opposite: only the tools you list are switched on.--tools Snapshot,Screenshot,Click,Type |
--control-policyCommand line flag | How 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 variable | Shrinks 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 variable | Apps whose windows it should not inspect, for programs that make the accessibility scan slow or hang.Code.exe,Cursor.exe |
ANONYMIZED_TELEMETRYEnvironment variable | Set to false to stop the anonymous usage reporting it sends by default.false |
--transportCommand line flag | Runs 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.tomlConfig | 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)
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.
| Server | Tools | Runs on | Licence | Stars |
|---|---|---|---|---|
| Windows-MCP | 21 | Your computer | MIT | 10.4K |
| Mobile MCP | 34 | Your computer | Apache-2.0 | 10K |
| Container Use | 15 | Your computer | – | 4.1K |
| 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.
Something wrong on this page? Tell us.
