A Windows control server built using nut.js and Model Context Protocol (MCP), providing programmatic control over Windows system operations including mouse, keyboard, window management, and screen capture functionality.
Windows control server for the Model Context Protocol, providing programmatic control over system operations including mouse, keyboard, window management, and screen capture functionality.
Note: This project currently supports Windows only.
MCPControl bridges the gap between AI models and your desktop, enabling secure, programmatic control of:
Install Build Tools (including VC++ workload)
# Run as Administrator - may take a few minutes to complete winget install Microsoft.VisualStudio.2022.BuildTools --override "--wait --passive --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended"
Install Python (if not already installed)
# Install Python (required for node-gyp) winget install Python.Python.3.12
Install Node.js
# Install latest LTS version winget install OpenJS.NodeJS
npm install -g mcp-control
MCPControl works best in a virtual machine at 1280x720 resolution for optimal click accuracy.
Configure your Claude client to connect to MCPControl via SSE transport:
For connecting to an MCPControl server running on a VM or remote machine:
{ "mcpServers": { "MCPControl": { "transport": "sse", "url": "http://192.168.1.100:3232/mcp" } } }
Replace 192.168.1.100:3232
with your server's IP address and port.
To launch MCPControl locally with SSE transport:
{ "mcpServers": { "MCPControl": { "command": "mcp-control", "args": ["--sse"] } } }
First, start the MCPControl server on your VM or local machine:
mcp-control --sse
The server will display:
npm install -g mcp-control
mcp-control --sse
192.168.1.100
){ "mcpServers": { "MCPControl": { "transport": "sse", "url": "http://192.168.1.100:3232/mcp" } } }
MCPControl supports several command-line flags for advanced configurations:
# Run with SSE transport on default port (3232) mcp-control --sse # Run with SSE on custom port mcp-control --sse --port 3000 # Run with HTTPS/TLS (required for production deployments) mcp-control --sse --https --cert /path/to/cert.pem --key /path/to/key.pem # Run with HTTPS on custom port mcp-control --sse --https --port 8443 --cert /path/to/cert.pem --key /path/to/key.pem
--sse
- Enable SSE (Server-Sent Events) transport for network access--port [number]
- Specify custom port (default: 3232)--https
- Enable HTTPS/TLS (required for remote deployments per MCP spec)--cert [path]
- Path to TLS certificate file (required with --https)--key [path]
- Path to TLS private key file (required with --https)According to the MCP specification, HTTPS is mandatory for all HTTP-based transports in production environments. When deploying MCPControl for remote access, always use the --https
flag with valid TLS certificates.
THIS SOFTWARE IS EXPERIMENTAL AND POTENTIALLY DANGEROUS
By using this software, you acknowledge and accept that:
USE AT YOUR OWN RISK
🪟 Window Management
List all windows
Get active window info
Focus, resize & reposition
🖱️ Mouse Control
Precision movement
Click & drag operations
Scrolling & position tracking
⌨️ Keyboard Control
Text input & key combos
Key press/release control
Hold key functionality
📸 Screen Operations
High-quality screenshots
Screen size detection
Active window capture
MCPControl supports multiple automation providers for different use cases:
You can configure the automation provider using environment variables:
# Use a specific provider for all operations export AUTOMATION_PROVIDER=autohotkey # Configure AutoHotkey executable path (if not in PATH) export AUTOHOTKEY_PATH="C:\Program Files\AutoHotkey\v2\AutoHotkey.exe"
Or use modular configuration for specific operations:
# Mix and match providers for different operations export AUTOMATION_KEYBOARD_PROVIDER=autohotkey export AUTOMATION_MOUSE_PROVIDER=keysender export AUTOMATION_SCREEN_PROVIDER=keysender export AUTOMATION_CLIPBOARD_PROVIDER=powershell
See provider-specific documentation:
If you're interested in contributing or building from source, please see CONTRIBUTING.md for detailed instructions.
To build this project for development, you'll need:
npm install -g node-gyp
npm install -g cmake-js
The keysender dependency relies on Windows-specific native modules that require these build tools.
/src
/handlers
- Request handlers and tool management/tools
- Core functionality implementations/types
- TypeScript type definitionsindex.ts
- Main application entry pointmain
- Main development branch with the latest features and changesrelease
- Stable release branch that mirrors the latest stable tag (currently v0.2.0)You can install specific versions of MCPControl using npm:
# Install the latest stable release (from release branch) npm install mcp-control # Install a specific version npm install mcp-control@0.1.22
See CONTRIBUTING.md
This project is licensed under the MIT License - see the LICENSE file for details.
Discover shared experiences
Shared threads will appear here, showcasing real-world applications and insights from the community. Check back soon for updates!