ats-mcp
v0.4.0
Published
MCP server that lets LLMs drive ActionTestScript (ATS) — test automation across web, mobile, desktop, and API, powered by ats-core's REPL.
Maintainers
Readme
ats-mcp
An MCP server that lets an LLM drive ActionTestScript test sessions — web, mobile, desktop, and API — through ats-core's built-in 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, and run ATS scripts — all as tool calls.
How it works
MCP client (Claude Code / Desktop / …)
│
▼
ats-mcp (Node.js) ← this package
│
spawns / HTTP
│
▼
AtsReplServer (ats-core) ← Java, resolved via Maven
│
┌──────┼──────┬───────┐
▼ ▼ ▼ ▼
web mobile desktop apiOn first invocation, ats-mcp uses Maven to resolve ats-core + its
transitive dependencies into your local ~/.m2 cache, then launches
com.ats.tools.AtsReplServer on an ephemeral port and keeps it alive for
the session.
Prerequisites
- Node.js 18+
- Java 17+ (for ats-core)
- Maven 3.8+ on
PATH(or setMVN_BIN)
Install
npm install -g ats-mcpOr use via npx in your MCP client config (recommended — always pulls the
latest version).
Configure your MCP client
Claude Code
Add to .claude/settings.json in the project, or globally:
{
"mcpServers": {
"ats": {
"command": "npx",
"args": ["-y", "ats-mcp@latest"]
}
}
}Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"ats": {
"command": "npx",
"args": ["-y", "ats-mcp@latest"]
}
}
}Environment variables
| Name | Purpose | Default |
|-------------------------|------------------------------------------------------------------|----------------|
| ATS_VERSION | Version of com.actiontestscript:ats-automated-testing to use. | 3.6.6 |
| JAVA_BIN | Path to the java executable. | java on PATH |
| MVN_BIN | Path to the mvn executable. | mvn on PATH |
| ATS_READY_TIMEOUT_MS | How long to wait for AtsReplServer to start up. | 30000 |
Tools exposed
| Tool | What it does |
|-------------------|-----------------------------------------------------------|
| start_channel | Open a web / mobile / desktop / api channel |
| stop_channel | Close a channel |
| switch_channel | Make a channel active |
| goto_url | Navigate to a URL (web) |
| click | Mouse-click on an element |
| send_keys | Type text into an element |
| scroll | Scroll the active channel |
| screenshot | Capture a PNG of the current state |
| capture_tree | Dump the DOM / view hierarchy |
| list_elements | Enumerate interactable elements |
| run_ats_block | Execute a sequence of raw ATS action lines |
More tools (assertions, gestures, mobile-specific flows) will land in
upcoming releases. For anything not yet covered, run_ats_block accepts
arbitrary ATS lines.
Example session (from an LLM perspective)
start_channel(name="site", type="web", target="https://example.com")
screenshot() # → /tmp/ats-img-001.png
click(element="A [@href='/about']")
capture_tree() # → full DOM dump
send_keys(element="INPUT [@name='q']", text="hello")
stop_channel(name="site")License
Apache-2.0 — same as ats-core.
