Windows-MCP

by cursortouch

6.4k stars
1.8k downloads
Not rated
GitHub

About

A lightweight MCP server for interacting with the Windows Operating System.

Details

Author
cursortouch
GitHub stars
6,350
Downloads
1,805
Categories
Productivity, File Management, Other

- Seamless Windows integration with native UI interaction
- Works with any LLM (vision not required)
- Rich toolset for keyboard, mouse, and window automation
- Lightweight and open-source under MIT license
- Customizable and extendable toolset
- Real-time interaction (0.2–0.5 second latency)
- DOM Mode for browser automation (Chrome, Edge, Firefox)

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Windows-MCP
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install Python 3.13+ and the uv package manager. Run uvx windows-mcp serve to start the server via stdio or use --transport sse for HTTP. For automatic startup at login, run windows-mcp install. Configuration instructions are provided for Claude Desktop, Perplexity Desktop, Gemini CLI, Qwen Code, Codex CLI, and Claude Code.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "windows-mcp": {
            "Windows-MCP": {
                "command": "uvx",
                "args": [
                    "windows-mcp",
                    "serve"
                ]
            }
        }
    }
}

McpServers

{
    "Windows-MCP": {
        "command": "uvx",
        "args": [
            "windows-mcp",
            "serve"
        ]
    }
}
**Windows-MCP**is a lightweight, open-source project that enables seamless integration between AI agents and the Windows operating system. Acting as an MCP server bridges the gap between LLMs and the Windows operating system, allowing agents to perform tasks such as**file navigation, application control, UI interaction, QA testing,**and more. mcp-name: io.github.CursorTouch/Windows-MCP - Windows-MCP reached`2M+ Users`in[Claude Desktop Extensiosn. - Try out](https://claude.ai/directory)[🪟Windows-Use, an agent built using Windows-MCP. - Windows-MCP is now available on](https://pypi.org/project/windows-use/)[PyPI(thus supports`uvx windows-mcp`) - Windows-MCP is added to](https://pypi.org/project/windows-mcp/)[MCP Registry - Windows 7 - Windows 8, 8.1 - Windows 10 - Windows 11 ](https://github.com/modelcontextprotocol/registry)[https://github.com/user-attachments/assets/d0e7ed1d-6189-4de6-838a-5ef8e1cad54e ](https://github.com/user-attachments/assets/d0e7ed1d-6189-4de6-838a-5ef8e1cad54e)[https://github.com/user-attachments/assets/d2b372dc-8d00-4d71-9677-4c64f5987485 - **Seamless Windows Integration** Interacts natively with Windows UI elements, opens apps, controls windows, simulates user input, and more. **Use Any LLM (Vision Optional)**Unlike many automation tools, Windows-MCP doesn't rely on any traditional computer vision techniques or specific fine-tuned models; it works with any LLMs, reducing complexity and setup time. **Rich Toolset for UI Automation** Includes tools for basic keyboard, mouse operation and capturing window/UI state. **Lightweight & Open-Source** Minimal dependencies and easy setup with full source code available under MIT license. **Customizable & Extendable** Easily adapt or extend tools to suit your unique automation or AI integration needs. **Real-Time Interaction** Typical latency between actions (e.g., from one mouse click to the next) ranges from**0.2 to 0.5 secs**, and may slightly vary based on the number of active applications and system load, also the inferencing speed of the llm. **DOM Mode for Browser Automation** Special`use_dom=True`mode for State-Tool that focuses exclusively on web page content, filtering out browser UI elements for cleaner, more efficient web automation. Supports Chrome, Edge, and Firefox (Firefox uses an IAccessible2 fallback since it doesn't expose`RootWebArea`via UIA). **Note:**When you install this MCP server for the first time it may take a minute or two because of installing the dependencies in`pyproject.toml`. In the first run the server may timeout ignore it and restart it. - Python 3.13+ - UV (Package Manager) from Astra, install with`pip install uv`or`curl -LsSf https://astral.sh/uv/install.sh | sh` - `English`as the default language in Windows preferred else disable the`App-Tool`in the MCP Server for Windows with other languages. ``` `uvx windows-mcp serve uvx windows-mcp serve --transport sse --host localhost --port 8000 uvx windows-mcp serve --transport streamable-http --host localhost --port 8000` ``` Install it as a background task that starts now and at every login: ``` `windows-mcp install # Or choose the HTTP transport and bind address explicitly windows-mcp install --transport sse --host 127.0.0.1 --port 8000` ``` This creates a per-user Scheduled Task named`windows-mcp-server`and a wrapper script at`~/.windows-mcp/start-server.cmd`. Use`windows-mcp uninstall`to remove it. Logs are written to`~/.windows-mcp/server.log`and`~/.windows-mcp/server.error.log`. **Option A: Install from PyPI (Recommended)** Use`uvx`to run the latest version directly from PyPI. Add this to your`claude_desktop_config.json`: ``` `{ "mcpServers": { "windows-mcp": { "command": "uvx", "args": ](https://github.com/user-attachments/assets/d2b372dc-8d00-4d71-9677-4c64f5987485)[ "windows-mcp", "serve" ] } } }` ``` ``` `git clone https://github.com/CursorTouch/Windows-MCP.git cd Windows-MCP` ``` - Add this to your`claude_desktop_config.json`: ``` `{ "mcpServers": { "windows-mcp": { "command": "uv", "args": [ "--directory", "<path to the windows-mcp directory>", "run", "windows-mcp", "serve" ] } } }` ``` - Fully restart Claude Desktop and verify the server appears in the MCP tools list. The MSIX-packaged Claude Desktop (Microsoft Store version) virtualizes`%APPDATA%`. This causes two main issues: - The config file is located at:`%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude_desktop_config.json`(not`%APPDATA%\Claude\`). - Automatic installation from the "Claude Directory" will fail because the`${__dirname}`variable resolves to the incorrect (non-virtualized) path. **To configure Windows-MCP on the Windows Store version of Claude:** You must manually edit the configuration file. Note that Electron apps in the MSIX sandbox do not inherit the system`PATH`, so you must use the**full absolute path**to`uvx.exe`(or`uv.exe`). **Option A: Using pre-installed executable** - In a terminal, run`uv tool install windows-mcp`. - Use the generated executable in your config: ``` `{ "mcpServers": { "windows-mcp": { "command": "C:\\Users\\<user>\\.local\\bin\\windows-mcp.exe", "args": ["serve"] } } }` ``` ``` `{ "mcpServers": { "windows-mcp": { "command": "C:\\Users\\<user>\\.local\\bin\\uvx.exe", "args": ["windows-mcp", "serve"] } } }` ``` ``` `{ "mcpServers": { "windows-mcp": { "command": "C:\\Users\\<user>\\.local\\bin\\uv.exe", "args": [ "--directory", "C:\\path\\to\\Windows-MCP", "run", "windows-mcp", "serve" ] } } }` ``` Replace`<user>`with your Windows username. To find the correct paths, run`where uvx`,`where windows-mcp`, or`where uv`. Fully quit Claude Desktop (Tray → Quit) and reopen after saving the config. For additional Claude Desktop integration troubleshooting, see the[MCP documentation. - Install](https://modelcontextprotocol.io/quickstart/server#claude-for-desktop-integration-issues)[Perplexity Desktop. - Open Perplexity Desktop and go to`Settings -> Connectors -> Add Connector -> Advanced`. - Enter the name as`Windows-MCP`, then paste one of the following configs. **Option A: Install from PyPI (Recommended)** ``` `{ "command": "uvx", "args": ](https://apps.microsoft.com/detail/xp8jnqfbqh6pvf)[ "windows-mcp", "serve" ] }` ``` ``` `{ "command": "uv", "args": [ "--directory", "<path to the windows-mcp directory>", "run", "windows-mcp", "serve" ] }` ``` - Click`Save`, then restart Perplexity Desktop if needed. For additional Claude Desktop integration troubleshooting, see the[Perplexity MCP Support. The documentation includes helpful tips for checking logs and resolving common issues. - Open`%USERPROFILE%/.gemini/settings.json`. - Add the`windows-mcp`config and save it. ``` `{ "theme": "Default", ... "mcpServers": { "windows-mcp": { "command": "uvx", "args": ](https://www.perplexity.ai/help-center/en/articles/11502712-local-and-remote-mcps-for-perplexity)[ "windows-mcp", "serve" ] } } }` ``` *Note: To run from source, replace the command with`uv`and args with`["--directory", "<path>", "run", "windows-mcp", "serve"]`.* ``` `npm install -g @qwen-code/qwen-code@latest` ``` - Open`%USERPROFILE%/.qwen/settings.json`. - Add the`windows-mcp`config and save it. ``` `{ "mcpServers": { "windows-mcp": { "command": "uvx", "args": [ "windows-mcp", "serve" ] } } }` ``` *Note: To run from source, replace the command with`uv`and args with`["--directory", "<path>", "run", "windows-mcp", "serve"]`.* - Open`%USERPROFILE%/.codex/config.toml`. - Add the`windows-mcp`config and save it. ``` `[mcp_servers.windows-mcp] command="uvx" args=[ "windows-mcp", "serve" ]` ``` *Note: To run from source, replace the command with`uv`and args with`["--directory", "<path>", "run", "windows-mcp", "serve"]`.* Add the published stdio server from a Windows terminal: ``` `autohand mcp add windows-mcp uvx windows-mcp serve` ``` Add`--scope project`after`add`to keep the server configuration in the current project. See[Autohand Codefor current installation and CLI details. ``` `npm install -g @anthropic-ai/claude-code` ``` **Option A: Install from PyPI (Recommended)** Use`uvx`to run the latest version directly from PyPI. ``` `claude mcp add --transport stdio windows-mcp -- uvx windows-mcp serve` ``` ``` `git clone https://github.com/CursorTouch/Windows-MCP.git cd Windows-MCP` ``` - Run the following command in your terminal: ``` `claude mcp add --transport stdio windows-mcp -- uv --directory "<path>" run windows-mcp serve` ``` *Note: To make the server available across all projects, add`--scope user`to the command.* **Note:**On Windows, if you encounter "Connection closed" errors, use the full path to`uvx.exe`: ``` `claude mcp add --transport stdio windows-mcp -- C:\Users\<user>\.local\bin\uvx.exe windows-mcp serve` ``` To verify the server is registered, run`claude mcp list`. Inside Claude Code, use`/mcp`to check server status. If you run Claude Code from WSL, the MCP server must still execute on the Windows side (it needs Windows APIs for UI automation). Use`powershell.exe`as the command to bridge WSL and Windows: - Install`uv`on**Windows**(from a PowerShell terminal): ``` `irm https://astral.sh/uv/install.ps1 | iex` ``` - From your**WSL terminal**, register the server: ``` `claude mcp add windows-mcp --transport stdio -s user -- powershell.exe -Command "C:\Users\<user>\.local\bin\uvx.exe windows-mcp serve"` ``` Replace`<user>`with your Windows username. The`-s user`flag makes the server available across all projects. - Restart Claude Code and verify with`/mcp`. Windows-MCP runs directly on your Windows machine and exposes its tools to the connected MCP client. ``` `# Runs with stdio transport (default) uvx windows-mcp serve # Or with SSE/Streamable HTTP for network access uvx windows-mcp serve --transport sse --host localhost --port 8000 uvx windows-mcp serve --transport streamable-http --host localhost --port 8000` ``` Optional environment variables can be set to customize behavior — see](https://github.com/autohandai/code-cli/)[Environment Variablesbelow. For network access, enable authentication and TLS:](#-environment-variables)
No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.