holdmybeer-gg avatar

bad-ass-mcp

holdmybeer-gg/bad-ass-mcp

Desktop GUI automation on macOS, Windows and Linux through accessibility trees, not screenshots.

GitHub stars
8
tools
16
transport
STDIO
last updated
Nov 12, 2026

Tools

16 tools

Public tool metadata for what this MCP can expose to an agent.

list_windowsList all visible application windows

List all visible application windows

No parameter schema in public metadata yet.

get_treeFull accessibility tree for a window as nested JSON

Full accessibility tree for a window as nested JSON

No parameter schema in public metadata yet.

find_elementsFind elements by role and/or name

Find elements by role and/or name

No parameter schema in public metadata yet.

clickClick / invoke an element (foreground-independent); button="right", clicks=2; falls back to a real click at the element's center

Click / invoke an element (foreground-independent); button="right", clicks=2; falls back to a real click at the element's center

No parameter schema in public metadata yet.

click_atClick at absolute screen coordinates — fallback for webview/canvas UI; takes button and clicks

Click at absolute screen coordinates — fallback for webview/canvas UI; takes button and clicks

No parameter schema in public metadata yet.

dragDrag-and-drop with real pointer events, between coordinates or element handles

Drag-and-drop with real pointer events, between coordinates or element handles

No parameter schema in public metadata yet.

type_textType text into a field (SetValue → EditableText → key injection)

Type text into a field (SetValue → EditableText → key injection)

No parameter schema in public metadata yet.

select_optionSelect an option in a combo box or list (a11y items → SetValue → keystrokes), verified by reading the value back

Select an option in a combo box or list (a11y items → SetValue → keystrokes), verified by reading the value back

No parameter schema in public metadata yet.

get_valueGet the current value or text of an element

Get the current value or text of an element

No parameter schema in public metadata yet.

wait_for_windowWait until a window matching a pattern appears

Wait until a window matching a pattern appears

No parameter schema in public metadata yet.

wait_for_elementWait until an element exists and optionally has a given state

Wait until an element exists and optionally has a given state

No parameter schema in public metadata yet.

screenshotCapture a PNG (write to output_path or return base64)

Capture a PNG (write to output_path or return base64)

No parameter schema in public metadata yet.

start_recordingStart recording the screen (or a specific window)

Start recording the screen (or a specific window)

No parameter schema in public metadata yet.

stop_recordingStop recording and export as GIF (short clips) or MP4 (long sessions, no re-encode)

Stop recording and export as GIF (short clips) or MP4 (long sessions, no re-encode)

No parameter schema in public metadata yet.

learn_layoutResolve semantic names → live handle IDs (one call per session)

Resolve semantic names → live handle IDs (one call per session)

No parameter schema in public metadata yet.

run_sequenceExecute a list of actions server-side — no per-action round-trips

Execute a list of actions server-side — no per-action round-trips

No parameter schema in public metadata yet.

Sponsors

Readme

bad-ass-mcp

Every other tool needs a browser or a vision model. This one reads what the OS already knows.

A cross-platform MCP server for desktop GUI automation — driven by accessibility APIs, not screenshots.

Works with Claude, Codex, Gemini, Ollama, or any OpenAI-compatible client that supports MCP.

bad-ass-mcp recording itself interacting with MarkTheCrab bad-ass-mcp recording itself interacting with MarkTheCrab

Why

Most AI desktop automation tools work by taking screenshots and asking a vision model "what do you see?" That's slow, expensive, and fragile.

Every major OS exposes a structured accessibility tree — the same one used by screen readers — that describes every button, text field, combo box, and menu in every running application. bad-ass-mcp speaks that language directly.

  • macOS: AXUIElement via PyObjC
  • Linux: AT-SPI2 via gi.repository.Atspi
  • Windows: UI Automation via comtypes

View the full README on GitHub

Details

Repository
github.com/holdmybeer-gg/bad-ass-mcp
Website
bam.holdmybeer.gg
Category
Automation & Workflows
Package
bad-ass-mcp
Transport
STDIO
Registry
MCP registry, active

Related Automation & Workflows MCP servers

View all
1baixianger avatarCamoufox Mcpbaixianger/camoufox-mcpAnti-detection browser automation with Camoufox - stealth Firefox for web scraping7stars
2peturgeorgievv-factory avatarPostFastpeturgeorgievv-factory/postfast-mcpSchedule posts on 11 social networks, answer comments and read analytics, hosted or local7stars
3carboneio avatarCarbone MCPcarboneio/carbone-mcpAutomate enterprise-grade documents from templates, merge and 100+ conversions: PDF, Office, HTML.6stars
4antbotlab avatarMac Use Mcpantbotlab/mac-use-mcpZero-dependency macOS desktop automation for AI agents. 18 tools via MCP. macOS 13+.5stars
5flowzap-xyz avatarFlowzapflowzap-xyz/flowzap-mcpCreate workflow, sequence, architecture, and mind map diagrams via AI assistants.5stars
6wyre-technology avatarAction1wyre-technology/action1-mcpAction1 MCP server — endpoint inventory, patch visibility, and policy automation via REST API.4stars