Labsco
MCP SERVER

ScreenHand

by manushi4

Let an assistant click real buttons through the OS accessibility API — no screenshot, no model call per action.

Desktop & OS Automation
Summary
A button press is an exact element target by role and name, not a coordinate guess.

That is what survives a layout shift, and it is why a click does not need a screenshot or an LLM call in the loop. Browser work goes through the DevTools Protocol in the background, so Chrome does not need focus — which also means you can keep using your machine while it works.

What it is

A desktop automation MCP server for macOS and Windows. It drives native applications through the accessibility API, and Chrome through the DevTools Protocol in the background.

What you get
  • 111 tools across desktop control, browser automation and fallback execution
  • Native UI: ui_tree, ui_find, ui_press, ui_set_value, menu_click, click, type_text, key, drag, scroll
  • Seeing the screen when you need to: screenshot, screenshot_file, ocr, click_text
  • App handling: apps, windows, focus, launch, and applescript on macOS
  • Browser over CDP without stealing focus: browser_tabs, browser_open, browser_navigate, browser_js, browser_dom, browser_click, browser_type, browser_wait, browser_page_info
  • Human-like input and anti-detection: browser_fill_form, browser_human_click, browser_stealth
  • Automatic fallback from accessibility API to CDP to OCR to coordinates: execution_plan, click_with_fallback, type_with_fallback
  • Prebuilt app references, playbooks and UI maps that load when the matching app or site is detected
Requirements

macOS or Windows. Add it with claude mcp add screenhand -- npx -y screenhand, or run npx -y screenhand from any MCP client. On macOS, enable your terminal under System Settings > Privacy & Security > Accessibility. Browser tools need Chrome started with --remote-debugging-port=9222. Version 0.5.3.

Setup effort

One command — npx -y screenhand