Windows-MCP
An MCP server for driving Windows: the agent opens apps, clicks and types, reads window and UI state, and works with files and PowerShell
High risk
We rate an entry high when the tool writes to external systems, handles money, production databases or secrets, or runs arbitrary commands. The CLI installs it only with your consent.
Why this level
- Gives the agent direct control of the Windows desktop: clicks, input, opening apps and file operations
- Runs PowerShell commands and accesses the registry, and remote transports expose it over the network
Install
In your terminal, with SkillFoxx CLI
npx skillfoxx add mcp/windows-mcpDetects the agents on your machine, checks the risk and pins the version.
Other ways to install
This entry is high risk, so there is no one-click install. Review the code and add the config by hand.
Run in a terminal
claude mcp add --transport stdio Windows-MCP -- uvx windows-mcp==0.8.5Or add to the file .mcp.json, in the project
{
"mcpServers": {
"Windows-MCP": {
"command": "uvx",
"args": [
"windows-mcp==0.8.5"
]
}
}
}If the file already exists, add the server inside the mcpServers key.
Add to the file ~/.cursor/mcp.json, for all projects
{
"mcpServers": {
"Windows-MCP": {
"command": "uvx",
"args": [
"windows-mcp==0.8.5"
]
}
}
}If the file already exists, add the server inside the mcpServers key. For a single project, put the same block into .cursor/mcp.json.
Run in a terminal
code --add-mcp '{"name":"Windows-MCP","type":"stdio","command":"uvx","args":["windows-mcp==0.8.5"]}'Or add to the file .vscode/mcp.json, in the project
{
"servers": {
"Windows-MCP": {
"type": "stdio",
"command": "uvx",
"args": [
"windows-mcp==0.8.5"
]
}
}
}If the file already exists, add the server inside the servers key.
Run in a terminal
codex mcp add Windows-MCP -- uvx windows-mcp==0.8.5Or add to the file ~/.codex/config.toml, for all projects
[mcp_servers.Windows-MCP]
command = "uvx"
args = ["windows-mcp==0.8.5"]If the file already exists, append the block to the end.
Run in a terminal
gemini mcp add -s user Windows-MCP uvx windows-mcp==0.8.5Or add to the file ~/.gemini/settings.json, for all projects
{
"mcpServers": {
"Windows-MCP": {
"command": "uvx",
"args": [
"windows-mcp==0.8.5"
]
}
}
}If the file already exists, add the server inside the mcpServers key.
Add to the file ~/.config/devin/mcp_config.json, for all projects
{
"mcpServers": {
"Windows-MCP": {
"command": "uvx",
"args": [
"windows-mcp==0.8.5"
]
}
}
}If the file already exists, add the server inside the mcpServers key. Legacy Cascade keeps the MCP config in ~/.codeium/windsurf/mcp_config.json.
Formerly Windsurf.
Add to the file cline_mcp_settings.json, for all projects
{
"mcpServers": {
"Windows-MCP": {
"command": "uvx",
"args": [
"windows-mcp==0.8.5"
]
}
}
}If the file already exists, add the server inside the mcpServers key. Open the settings file in Cline: MCP Servers tab, Configure MCP Servers.
Add to the file .roo/mcp.json, in the project
{
"mcpServers": {
"Windows-MCP": {
"command": "uvx",
"args": [
"windows-mcp==0.8.5"
]
}
}
}If the file already exists, add the server inside the mcpServers key.
A fork of Roo Code, same .roo folders.
Add to the file opencode.json, in the project
{
"mcp": {
"Windows-MCP": {
"type": "local",
"command": [
"uvx",
"windows-mcp==0.8.5"
]
}
}
}If the file already exists, add the server inside the mcp key.
Add to the file ~/.config/zed/settings.json, for all projects
{
"context_servers": {
"Windows-MCP": {
"command": "uvx",
"args": [
"windows-mcp==0.8.5"
]
}
}
}If the file already exists, add the server inside the context_servers key.
Add to the file .codeassistant/mcp.json, in the project
{
"mcpServers": {
"Windows-MCP": {
"command": "uvx",
"args": [
"windows-mcp==0.8.5"
]
}
}
}If the file already exists, add the server inside the mcpServers key.
Install uv, then add the MCP server to the client config: command uvx, args windows-mcp and serve. For HTTP transport run uvx windows-mcp serve --transport streamable-http --host localhost --port 8000.
Other ways from the author
{
"mcpServers": {
"windows-mcp": {
"command": "uvx",
"args": ["windows-mcp", "serve"]
}
}
}Requires uv installed. For HTTP transport add --transport streamable-http and a bind address.
This is third-party code. Review the repository files before installing.
What it does
The server links a language model to the Windows desktop and gives the agent tools to control the system. It captures a screenshot with cursor position and a window list, builds a UI element tree through UI Automation, emulates keyboard and mouse, opens and switches applications, works with files, clipboard, processes, the registry and notifications, and runs PowerShell commands. A dedicated browser mode keeps only web page content and drops the browser's own UI, supporting Chrome, Edge and Firefox. The server does not rely on computer vision and works with any model. It runs over stdio for a local client or over HTTP and SSE for remote access, where an auth key, an IP allowlist, TLS and OAuth can be enabled.
Who it is for. For engineers and QA who need an agent to drive Windows applications and UI and run scenarios.
Good fit when
- You want an agent to open Windows apps, click and type for the user
- You want to capture window and UI element state for checks or automation
- You want to automate a browser scenario or run a manual QA test
Not a fit when
- The target system is not Windows, the server uses Windows APIs for UI control
- You cannot grant the agent direct access to the desktop and shell commands
Example request
Open the calculator, add the numbers in it and send a screenshot of the resultLimitations
It runs only on Windows, with stated support from Windows 7 to 11, and needs Python 3.13+ and the uv package manager. English as the system language is preferred, otherwise the App tool is recommended to be disabled. The first run can take a minute or two while dependencies install and may time out, after which the server is restarted. For remote HTTP access you configure protection yourself: an auth key, an IP allowlist, TLS and OAuth are set through flags or environment variables.
How to disable. Remove the windows-mcp entry from the MCP client config and restart it. If you installed it as a background task via windows-mcp install, remove it with windows-mcp uninstall. Uninstall the package with uv tool uninstall windows-mcp.
MCP
- Transport
- stdio, http, sse
- Authentication
- not required
| Environment variables | |
|---|---|
| WINDOWS_MCP_AUTH_KEY secret | Bearer token required on all HTTP requests for remote access, an alternative to the --auth-key flag. |
| WINDOWS_MCP_IP_ALLOWLIST | Comma-separated list of allowed client IPs or CIDR ranges. |
| WINDOWS_MCP_OAUTH_CLIENT_SECRET secret | OAuth client secret for HTTP transports, set together with WINDOWS_MCP_OAUTH_CLIENT_ID. |
| WINDOWS_MCP_SCREENSHOT_SCALE | Screenshot scale factor from 0.1 to 1.0, helps fit the result size limit on high-resolution displays. |
Security check
- Gives the agent direct control of the Windows desktop: clicks, input, opening apps and file operations
- Runs PowerShell commands and accesses the registry, and remote transports expose it over the network
README in short
The README describes Windows-MCP as an MCP server that links agents to Windows and provides tools for file navigation, application control, UI interaction and QA testing. Install goes through uv and uvx windows-mcp serve, with stdio, streamable-http and sse transports available, plus a background task install via windows-mcp install. It details setup in Claude Desktop, Perplexity, Claude Code and through WSL. Separate sections cover remote access security, choosing which tools are enabled and environment variables. The package is on PyPI and in the MCP registry, MIT licensed.
FAQ
Do I need a separate computer vision model?
No. The server builds a UI element tree through UI Automation and works with any language model, vision is optional.
Can I expose it over the network?
Yes, there are HTTP and SSE transports, but you configure protection yourself: an auth key, an IP allowlist, TLS and OAuth are set through flags or environment variables.
Related
An MCP server with n8n node and template knowledge: the agent picks nodes, validates configs and, with API access, creates workflows in your n8n
Zapier's official MCP plugin: the agent gets actions across thousands of apps through your Zapier account
Awesome Claude Skills by Composio
Awesome Claude Skills
A curated list of Claude skills and plugins, plus Composio's own automation skills for 78 SaaS apps
A plugin and CLI catalog for agents: generates command-line interfaces for GUI apps like GIMP and Blender and installs ready ones via CLI-Hub