MCP server by hassekf
MCP Computer Use Full
A full-featured replacement for Claude Code's built-in computer-use MCP plugin.
Claude Code ships with a built-in computer-use plugin, but it comes with significant limitations — many tools require explicit permission grants per application, some actions are restricted, and the overall experience can feel constrained. This server removes those barriers by implementing every computer control primitive from scratch using macOS native APIs (JXA/AppleScript + CoreGraphics), giving Claude unrestricted, full access to your desktop.
macOS only — This server uses
osascript,screencapture, and CoreGraphics APIs that are exclusive to macOS.
What's different from the built-in plugin?
| Feature | Built-in computer-use | This server |
| ----------------- | --------------------------- | ------------------------------------------------ |
| Screenshot | Requires app-level grants | Works immediately (uses screencapture) |
| Mouse clicks | Limited, permission prompts | Full left/right/double click at any coordinate |
| Drag & drop | Not available | Native click-drag support |
| Scroll | Basic | Horizontal + vertical, at any position |
| Keyboard combos | Limited | Full key map (F1-F12, modifiers, all characters) |
| Type text | Basic | AppleScript keystroke — works in any focused app |
| Open apps | Requires approval per app | Direct activate — any app, instantly |
| Cursor position | Not available | Get current mouse coordinates |
| Region screenshot | Not available | Capture a specific rectangle of the screen |
| Permission hassle | Per-app, per-action grants | Zero — one-time Accessibility grant only |
In short: this is the unthrottled version. If you want Claude to truly operate your Mac like a human would, this is it.
Prerequisites
-
macOS (Ventura 13+ recommended)
-
Node.js 18+
-
Accessibility permissions — The terminal you run Claude Code from (Terminal.app, iTerm2, Warp, etc.) must be granted Accessibility access:
System Settings → Privacy & Security → Accessibility → enable your terminal app
Without this, mouse/keyboard events will silently fail.
Installation
1. Clone and install dependencies
git clone https://github.com/hassekf/mcp-computer-use-full.git
cd mcp-computer-use-full
npm install
2. Register as a global MCP server in Claude Code
claude mcp add -s user computer-use-full -- node /absolute/path/to/mcp-computer-use-full/server.mjs
Replace /absolute/path/to/ with the actual path where you cloned the repo.
3. Restart Claude Code
MCP servers are loaded at startup. After adding, restart your Claude Code session.
4. Verify
In a new Claude Code session, the tools will show up as mcp__computer-use-full__*:
mcp__computer-use-full__screenshot
mcp__computer-use-full__left_click
mcp__computer-use-full__right_click
mcp__computer-use-full__double_click
mcp__computer-use-full__mouse_move
mcp__computer-use-full__left_click_drag
mcp__computer-use-full__scroll
mcp__computer-use-full__key
mcp__computer-use-full__type
mcp__computer-use-full__open_application
mcp__computer-use-full__cursor_position
Tools Reference
screenshot
Capture the entire screen or a specific region. Returns a base64 PNG image.
region (optional): { x, y, w, h } — omit for full screen
left_click / right_click
Click at exact pixel coordinates.
x: number, y: number
double_click
Double-click at coordinates (for selecting words, opening files, etc.).
x: number, y: number
mouse_move
Move the cursor without clicking.
x: number, y: number
left_click_drag
Click-and-drag from one point to another (for resizing windows, moving objects, etc.).
startX, startY, endX, endY: number
scroll
Scroll at a specific position. Supports both axes.
x, y: number
deltaY: number — positive = down, negative = up
deltaX: number — positive = right, negative = left (default: 0)
key
Press any key combination. Uses + to combine modifiers.
combo: string
Examples:
"return"— press Enter"command+a"— select all"command+shift+s"— save as"ctrl+c"— copy (control-based)"alt+tab"— switch apps
Supported modifiers: command / cmd, shift, option / alt, control / ctrl
type
Type arbitrary text into the currently focused application.
text: string
open_application
Open or bring an application to the foreground.
app: string — e.g. "Google Chrome", "Safari", "Finder"
cursor_position
Get the current mouse cursor coordinates. Returns { x, y }.
No parameters.
How it works
All automation goes through macOS native APIs:
- Mouse & keyboard — JXA (JavaScript for Automation) scripts executed via
osascript, using CoreGraphics low-level event functions (CGEventCreateMouseEvent,CGEventCreateKeyboardEvent,CGEventPost). - Text typing — AppleScript
keystrokevia System Events. - Screenshots — The native
screencaptureCLI tool, with optional-Rregion flag. - App control — AppleScript
tell application "X" to activate.
Everything runs synchronously with a 10-second timeout per operation.
Alternative: project-scoped installation
If you only want this server for a specific project instead of globally:
# From your project directory:
claude mcp add computer-use-full -- node /absolute/path/to/mcp-computer-use-full/server.mjs
Without -s user, it registers in the local project scope only.
Disabling the built-in plugin
If you want to avoid conflicts with the built-in computer-use plugin, you can disable it in Claude Code settings:
{
"enabledPlugins": {
"computer-use@claude-plugins-official": false
}
}
Both can coexist without issues though — tool names are namespaced differently (mcp__computer-use__* vs mcp__computer-use-full__*).
Security considerations
This server gives Claude full control over your mouse, keyboard, and screen. It can:
- Click anywhere on your screen
- Type anything into any application
- Take screenshots of everything visible
- Open any application
Only use this in trusted environments. Do not run this on a machine with sensitive information visible on screen unless you are actively monitoring the session.
License
MIT