Skip to main content
Glama
SebastianBaltes

Computer Use MCP Server

README.md
# Computer Use MCP Server for Claude Code

An MCP (Model Context Protocol) server that gives Claude Code the ability to see and interact with your Linux desktop — take screenshots, click, type, scroll, drag, and more.

Built on top of `xdotool`, `scrot`, and ImageMagick. Designed to run as a stdio MCP server inside Claude Code.

## Features

- **Screenshots** — full desktop capture, automatically scaled to fit API constraints
- **Mouse control** — left/right/middle/double/triple click, drag, move, scroll
- **Keyboard input** — type text, press key combinations, hold keys
- **Screen zoom** — capture a region at full (unscaled) resolution for reading small text
- **Display info** — query resolution, scale factor, and coordinate space

All coordinates use a scaled coordinate space that maps to the actual screen resolution. The server handles the conversion transparently.

## Prerequisites

- Linux with X11 (Wayland is not supported)
- Python >= 3.10
- System packages:

  ```bash
  sudo apt install xdotool scrot imagemagick x11-utils
  ```

  > **Note:** `xdpyinfo` is part of the `x11-utils` package on Debian/Ubuntu — there is no standalone `xdpyinfo` package.

## Installation

```bash
git clone https://github.com/SebastianBaltes/claude_code_computer_use_mcp.git
cd claude_code_computer_use_mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
```

## Claude Code Configuration

The easiest way is to use the Claude Code CLI:

```bash
claude mcp add computer-use --scope user -- /path/to/claude_code_computer_use_mcp/.venv/bin/python -m computer_use_mcp.server
```

Replace `/path/to/` with your actual clone path. Then restart Claude Code — the `computer_*` tools will be available automatically.

Alternatively, add the server manually to `~/.claude.json` under `mcpServers`:

```json
{
  "mcpServers": {
    "computer-use": {
      "type": "stdio",
      "command": "/path/to/claude_code_computer_use_mcp/.venv/bin/python",
      "args": ["-m", "computer_use_mcp.server"],
      "env": {}
    }
  }
}
```

> **Note:** The valid `--scope` values are `local`, `user`, `project`, `dynamic`, `enterprise`, `claudeai`, and `managed`. Use `user` for a personal installation available across all projects.

## Available Tools

| Tool | Description |
|---|---|
| `computer_screenshot` | Capture the full desktop |
| `computer_left_click` | Left-click (with optional modifier key) |
| `computer_right_click` | Right-click |
| `computer_double_click` | Double-click |
| `computer_triple_click` | Triple-click (select line) |
| `computer_middle_click` | Middle-click |
| `computer_mouse_move` | Move cursor without clicking |
| `computer_left_click_drag` | Click and drag |
| `computer_type` | Type a text string |
| `computer_key` | Press a key or key combo (e.g. `ctrl+s`) |
| `computer_scroll` | Scroll in any direction |
| `computer_hold_key` | Hold a key for N seconds |
| `computer_wait` | Pause for N seconds |
| `computer_cursor_position` | Get current cursor position |
| `computer_zoom` | Capture a screen region at full resolution |
| `computer_display_info` | Get display resolution and scale info |

## How It Works

The server detects the screen resolution via `xdpyinfo` and calculates a scale factor to keep screenshots within Anthropic's API image constraints (max 1568px long edge, max 1.15M total pixels). All coordinates passed by Claude are in this scaled space and get converted to actual screen coordinates before executing actions.

## License

MIT

TDQS

A4/5.0

Scored across 16 tools

Disambiguation5/5

Each tool targets a distinct action (click, double-click, triple-click, drag, scroll, key press, type, etc.) with clear descriptions, avoiding overlap. The only potential confusion among click variants is resolved by explicit naming.

Naming Consistency5/5

All tools follow the 'computer_<action>_<target>' pattern (e.g., computer_left_click_drag, computer_mouse_move). No mixing of naming conventions.

Tool Count5/5

16 tools is well-scoped for a computer control server, covering essential mouse, keyboard, screenshot, and zoom operations without being excessive or sparse.

Completeness4/5

Covers core GUI automation operations thoroughly, but lacks clipboard access or system-level actions (e.g., opening applications). Minor gap for advanced workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues