ats-mcp
Enables automated testing of Android applications on physical devices, simulators, emulators, and Genymotion Cloud through mobile channel automation.
Provides automated testing capabilities for iOS applications on physical devices and simulators through mobile channel automation.
Allows automated interaction with SAP GUI applications through dedicated SAP channel support for enterprise system testing.
ats-mcp
An MCP server that lets an LLM drive ActionTestScript test sessions — web, mobile, desktop, and API — through ats-core's REPL.
Use it with Claude Code, Claude Desktop, Cursor, or any MCP-capable client to have the assistant actually interact with a system under test: launch channels, click elements, capture screenshots, inspect the DOM or the mobile view hierarchy, run ATS scripts — all as tool calls.
Two distributions are available, both wired to the same set of tools:
Install | Best for | |
npm |
| Node-friendly devs, the broader MCP community |
JAR | Download | Users who already have Java but no Node |
How it works
MCP client (Claude Code / Desktop / …)
│
▼
ats-mcp launcher (Node OR Java — see /node and /java in this repo)
│
spawns / loads
│
▼
AtsReplServer (ats-core)
│
┌──────┼──────┬───────┐
▼ ▼ ▼ ▼
web mobile desktop apiOn first use, the launcher provisions everything ATS needs under
~/.actiontestscript/:
libs — downloaded from
https://actiontestscript.org/releases/ats-libs/<version>.zipif~/.actiontestscript/libs/is missing.system driver (for desktop-app automation) — latest version pulled from
https://actiontestscript.org/releases/ats-drivers/<os>/system/, upgraded automatically when a newer one is published.browser drivers — fetched on-demand by ats-core itself on the first
start_channelper browser/version.
No manual install step — npx -y ats-mcp or java -jar ats-mcp.jar is
enough to go from zero to web/desktop/api automation.
Prerequisites
Java 17+ (always required — ats-core is JVM)
Node 18+ (only if you use the npm distribution)
Configure your MCP client
Claude Code
Add a .mcp.json at the project root:
{
"mcpServers": {
"ats": {
"command": "npx",
"args": ["-y", "ats-mcp@latest"]
}
}
}Or, with the JAR:
{
"mcpServers": {
"ats": {
"command": "java",
"args": ["-jar", "/path/to/ats-mcp-0.4.0.jar"]
}
}
}Claude Desktop
Same shape, in claude_desktop_config.json.
Environment variables
Name | Purpose | Default |
| Version of |
|
| Where ATS libs and drivers live. |
|
| Path to the |
|
Tools exposed
30 tools, grouped by purpose:
Session / channels
Tool | What it does |
| Open a web / mobile / desktop / api / SAP channel |
| Close a channel |
| Make a channel active |
Navigation (web)
Tool | What it does |
| Navigate to a URL |
| Browser history back |
| Browser history forward |
| Reload the current page |
Interaction
Tool | What it does |
| Mouse-click on an element |
| Mouse-over an element |
| Type text into an element |
| Press a special key (ENTER, TAB, arrows, F-keys…) |
| Scroll an element by a signed pixel offset |
| Two-step drag-and-drop on source → target |
| Select a |
| Upload a local file to a file-input |
| Accept/dismiss/default a JS alert/confirm/prompt |
Inspection
Tool | What it does |
| Capture a PNG of the current state |
| Dump the DOM / view hierarchy |
| Enumerate elements matching a CSS selector (web) or SAP tag |
| Run JavaScript in the page and return its value |
| JS console messages captured on the active web channel |
| HTTP requests captured (with index for |
| Full request/response for one exchange |
| Cookies on the active web channel |
Window / tabs
Tool | What it does |
| Resize (and optionally move) the window |
| Switch tabs by index / name / URL substring |
| Open a new tab, optionally at a URL |
| Close the current tab/window |
Escape hatch
Tool | What it does |
| Execute a sequence of raw ATS action lines |
Positioning vs Playwright MCP
ats-mcp covers the same interaction surface as @playwright/mcp for the
web, plus three things Playwright doesn't do:
Multi-platform — web, mobile (Android/iOS physical, simulators, emulators, Genymotion Cloud), desktop apps (via the ATS system driver), REST/SOAP APIs, and SAP GUI.
Implicit wait built-in — element lookups retry with backoff, so the LLM doesn't need to stitch
wait_forcalls around every action.Raw escape hatch —
run_ats_blockexposes the full ATS action vocabulary when a purpose-built tool isn't enough.
Repo layout
ats-mcp/
├── node/ — TypeScript implementation (published to npm)
├── java/ — Maven implementation (released as a fat JAR)
├── README.md
└── .gitlab-ci.ymlBoth implementations target the same protocol surface and share the same tool definitions.
License
Apache-2.0 — same as ats-core.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/actiontestscript/ats-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server