computer-control-mcp
v1.4.1
Published
MCP server that allows Claude to control your computer via screenshots and input automation
Maintainers
Readme
computer-control-mcp
An MCP (Model Context Protocol) server that allows Claude to control your computer via screenshots and input automation.
Features
- Multi-monitor support - Capture specific screens or all screens combined
- Screenshots - Clean + grid overlay for coordinate reference
- Mouse control - Click, double-click, right-click, drag, scroll
- Keyboard control - Type text, press keys, keyboard shortcuts
- Screen info - Get dimensions, positions, and mouse position
Installation
Using npx (recommended)
npx computer-control-mcpGlobal install
npm install -g computer-control-mcp
computer-control-mcpConfiguration
Claude Code
Add to your MCP settings via /mcp command or edit your config:
{
"mcpServers": {
"computer-control": {
"command": "npx",
"args": ["computer-control-mcp"]
}
}
}Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"computer-control": {
"command": "npx",
"args": ["computer-control-mcp"]
}
}
}macOS Permissions Required
The server needs these permissions in System Settings → Privacy & Security:
- Screen Recording - Enable for Terminal/your IDE
- Accessibility - Enable for Terminal/your IDE
Available Tools
| Tool | Description |
|------|-------------|
| get_screens | List all connected monitors with positions and sizes |
| take_screenshot | Returns clean + grid images (optional: specific screen) |
| take_screenshot_clean | Returns only clean screenshot |
| take_screenshot_grid | Returns only grid overlay screenshot |
| click | Click at x, y coordinates |
| double_click | Double-click at x, y |
| right_click | Right-click at x, y |
| move_mouse | Move cursor to x, y |
| drag | Drag from one position to another |
| type_text | Type text at cursor position |
| press_key | Press a single key |
| hotkey | Press a keyboard shortcut |
| scroll | Scroll up/down |
| get_mouse_position | Get current cursor position |
Multi-Monitor Usage
First, call
get_screensto see all connected monitors:{ "screens": [ {"index": 0, "x": 0, "y": 0, "width": 1920, "height": 1080, "is_primary": true}, {"index": 1, "x": 1920, "y": 0, "width": 2560, "height": 1440, "is_primary": false} ] }Take screenshots of specific screens using
screen_index:take_screenshot(screen_index=0) // Main screen only take_screenshot(screen_index=1) // Second screen only take_screenshot() // All screens combinedCoordinates are absolute across all screens:
- Screen 0: coordinates as-is (0,0 to 1920,1080)
- Screen 1: add x offset (1920+x, y) for clicks
Grid Overlay
The grid overlay divides the screen into zones labeled A1, A2, B1, B2, etc., with pixel coordinates shown on the edges. This helps Claude estimate click positions more accurately.
Safety
- Move mouse to top-left corner rapidly to abort operations (fail-safe)
- Be careful with automated clicking/typing in sensitive applications
License
MIT
