servo-mcp

Desktop MCP server for AI agents

Give Claude Code the ability to see your screen, click buttons, and verify its work. macOS & Windows. 100% local. Native binaries for speed.

1. Install

npm install -g servo-mcp

2. Setup Claude Code

npx servo-mcp --setup

Restart Claude Code after setup.

Native Performance

Servo uses pre-built native binaries — Swift on macOS, C# on Windows. No Python, no PowerShell, no interpreters. Just fast, reliable automation.

macOS

Swift + CoreGraphics + Accessibility APIs

Windows

C# + Win32 + UI Automation

Verify Setup

After restarting Claude Code, run /mcp to see the list of connected MCP servers.

You should see servo in the list. Try: "take a screenshot" or "list the UI elements"

macOS Permissions

Grant your terminal app (Terminal, iTerm, VS Code) these permissions in System Settings → Privacy & Security:

  • Accessibility — clicking, typing, UI elements
  • Screen Recording — screenshots

Child processes inherit permissions from the parent terminal.

Troubleshooting

servo not in /mcp list?

  • • Make sure you ran npx servo-mcp --setup
  • • Restart Claude Code completely
  • • Run claude --mcp-debug to see connection errors

npx not found?

Install Node.js from nodejs.org (includes npm and npx)

Manual config (last resort)

Edit ~/.claude.json directly and add the config below.

~/.claude.json

~/.claude.json
{
  "mcpServers": {
    "servo": {
      "command": "npx",
      "args": ["servo-mcp"]
    }
  }
}

Available Tools

Coordinate-based

screenshotCapture screen
clickClick at x,y
type_textType text
key_pressPress keys (Cmd+S)
scrollScroll page
move_mouseMove cursor
focus_appFocus window
open_appLaunch app
list_windowsList windows

Accessibility-based (NEW)

list_ui_elementsGet UI elements
click_elementClick by name
get_element_textRead element text
focus_elementFocus input field

Click buttons by name instead of coordinates. Faster and more reliable than vision.

Open source (MIT) • GitHub npm