SGAT MCP Server
Provides semantic GUI automation for Android devices via adb and uiautomator2, exposing MCP tools to find elements, tap, input text, navigate back, wait for elements, and assert UI state using accessibility-tree-based matching.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SGAT MCP Servertap the Login button on Android and wait for the welcome screen"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
semantic-gui-agent-testing
Semantic GUI automation for LLM agents. Drive real Android and Windows UIs through a single platform-neutral API — no hard-coded coordinates, no model calls for element localization.
Elements are located by meaning (text, content-desc, resource-id/AutomationId, natural-language description) against the accessibility tree dumped from the device, with an injectable OCR provider as a last-resort visual fallback.
Why
LLM-driven GUI agents usually fail on three things: brittle coordinate scripts, expensive screenshot-per-step vision loops, and flaky waits. This framework addresses all three:
Problem | Approach |
Brittle coordinates | Semantic matching over the accessibility tree, deterministic and re-runnable |
Vision-loop cost | Localization is pure Python — zero model calls; OCR is only a fallback |
Flaky waits | Polling state waits, declarative assertions, per-step error-isolated batches |
Related MCP server: waydroid-mcp
Components
Executors —
AndroidExecutor(adb + uiautomator2) andWindowsExecutor(UI Automation via pywinauto) behind one abstractGUIExecutor.Semantic matcher — deterministic scoring across text / content-desc / resource-id / description surfaces, with ambiguity flagging.
Incremental UI updates — Merkle-hash caching so unchanged screens are detected without re-processing.
Visual fallback — pluggable OCR provider, used only when the tree fails.
MCP server — expose the executors to any MCP-capable agent over stdio (newline-delimited JSON-RPC 2.0, no SDK dependency).
Batch + waits + assertions — execution optimizations for agent loops.
Sessions — per-agent isolation of executor instances and caches.
Install
Python 3.10+.
pip install -e . # core (no device deps)
pip install -e ".[android]" # + uiautomator2
pip install -e ".[windows]" # + pywinauto (Windows only)
pip install -e ".[dev]" # + pytestQuickstart (no device needed)
from sgat.models import SemanticTarget
from sgat.registry import default_registry
with default_registry().create("stub") as executor:
result = executor.tap(SemanticTarget(id="ok", text="OK"))
print(result.success, result.detail) # True: matched via textSmoke-test the MCP server against the in-memory stub:
python -m sgat.mcp.server --executor stubMCP tools
Tool | Purpose |
| Locate an element semantically, return best match + candidates |
| Locate and tap the element center |
| Type text, optionally into a located element |
| Platform back navigation |
| Poll until an element appears |
| Assert existence / text / enabled / clickable |
Point an MCP client at a real device:
python -m sgat.mcp.server --executor android --serial <serial>
python -m sgat.mcp.server --executor windows --window-title "Notepad"Status
Unit tested: 16 tests, CI on Ubuntu + Windows, Python 3.10/3.12.
Real-device benchmarks: not yet measured.
benchmarks/run_benchmarks.pyis the harness; run it against your devices and record results in docs/benchmarks.md. No numbers are published here until they come from real runs.
Documentation
AGENTS.md — implementation task brief for AI coding agents
docs/architecture.md — design and data flow
docs/deployment.md — Windows / Android / WSL2 setup
docs/selection-rationale.md — technology choices and why
docs/benchmarks.md — metrics definition and result template
License
This server cannot be deployed
Maintenance
Related MCP Connectors
Control real Android and iOS devices with LLM agents — tap, swipe, type, automate flows.
Automate 1,000+ services from any MCP-compatible AI agent: build Applets, run actions and queries.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Agent-driven search: build, import, tune, search, and score result quality — all over MCP.
Related MCP Servers
- AlicenseAqualityCmaintenanceAllows AI clients to see and control Windows 10/11 desktops via MCP, with screenshots, UI Automation, Chrome CDP, keyboard/mouse, and terminal using semantic element targeting.30503 npmMIT
- FlicenseNot gradedqualityBmaintenanceEnables agents to interact with Android via text-based UI trees instead of screenshots, supporting taps, swipes, input, macro recording, and device control through an MCP server and CLI.1-
- AlicenseNot gradedqualityAmaintenanceEnables MCP-compatible AI platforms to see the screen and operate any desktop software through real mouse clicks, text input, key presses, and scripted scenario execution.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to access and act on web, desktop, and mobile interfaces via semantic accessibility trees, using MCP tools for querying, navigating, and executing deterministic UI actions without relying on screenshots or pixel coordinates.11 npmApache 2.0