Skip to main content

Model Context Protocol server for Quash - AI-powered mobile automation agent

Project description

Quash MCP - AI-Powered Mobile Automation

A Model Context Protocol (MCP) server for mobile automation testing with Quash. Control Android devices and run automated tests from any MCP-compatible host using natural language.

Features

  • ๐Ÿค– AI-Powered Automation: Control your Android device using plain English
  • ๐Ÿ“ฑ Device Connection: Works with emulators and physical devices
  • โš™๏ธ Flexible Configuration: Customize AI model, temperature, vision, reasoning, and more
  • ๐Ÿ”„ Real-Time Execution: Live progress streaming during task execution
  • ๐ŸŽฏ Suite Execution: Run multiple tasks in sequence with retry logic
  • ๐Ÿ“Š Usage Tracking: Monitor API costs and token usage
  • ๐Ÿ” Secure: API key authentication via Quash platform

Installation

pip install quash-mcp

All dependencies (including ADB tools and device connectivity) are automatically installed. AI execution happens on the Quash backend, keeping the client lightweight and proprietary logic protected.

Quick Start

1. Get Your API Key

  1. Visit quashbugs.com/mcp (or your deployment URL)
  2. Sign in with Google
  3. Go to Dashboard โ†’ API Keys
  4. Create a new API key

2. Add to Your MCP Host

Quash MCP works with any MCP-compatible host. Configure it to use python3 -m quash_mcp which works across all Python environments:

Manual Configuration (Recommended)

Add to your MCP host's config file:

Config file locations:

  • Claude Desktop (macOS): ~/Library/Application Support/Claude/claude_desktop_config.json
  • Claude Desktop (Linux): ~/.config/claude/claude_desktop_config.json
  • Claude Desktop (Windows): %APPDATA%\Claude\claude_desktop_config.json
  • Claude Code: ~/.claude.json (project-specific under projects.<path>.mcpServers)
{
  "mcpServers": {
    "quash": {
      "command": "python3",
      "args": ["-m", "quash_mcp"]
    }
  }
}

Why python3 -m quash_mcp?

  • Works in any Python environment (conda, venv, system)
  • No PATH configuration needed
  • Uses whichever Python has quash-mcp installed

CLI Configuration (If Supported by Host)

Some MCP hosts might provide a command-line interface to add servers.

Examples:

  • Claude Code:

    claude mcp add quash quash-mcp
    
  • Gemini CLI:

    gemini mcp add quash quash-mcp
    

Alternative: Direct Command (if in PATH)

If quash-mcp is in your PATH:

{
  "mcpServers": {
    "quash": {
      "command": "quash-mcp"
    }
  }
}

Then restart your MCP host.

3. Start Automating

Ask your AI assistant (via your MCP host):

"Setup Quash and connect to my Android device"
"Configure with my API key: mhg_xxxx..."
"Execute task: Open Settings and enable WiFi"

Available Tools

1. build

Setup and verify all dependencies.

Example:

Can you run the build tool to setup my system for Quash?

2. connect

Connect to an Android device or emulator.

Parameters:

  • device_serial (optional): Device serial number

Example:

Connect to my Android device

3. configure

Configure agent execution parameters.

Parameters:

  • quash_api_key: Your Quash API key from the web portal
  • model: LLM model (e.g., "anthropic/claude-sonnet-4", "openai/gpt-4o")
  • temperature: 0-2 (default: 0.2)
  • max_steps: Maximum execution steps (default: 15)
  • vision: Enable screenshots (default: false)
  • reasoning: Enable multi-step planning (default: false)
  • reflection: Enable self-improvement (default: false)
  • debug: Verbose logging (default: false)

Example:

Configure Quash with my API key mhg_xxx, use Claude Sonnet 4, and enable vision

4. execute

Run an automation task on the device.

Parameters:

  • task: Natural language task description

Example:

Execute task: Open Settings and navigate to WiFi settings

5. runsuite

Execute multiple tasks in sequence with retry logic.

Parameters:

  • suite_name: Name of the test suite
  • tasks: Array of tasks with retry and failure handling options

Example:

Run a test suite with these tasks: [
  {"prompt": "Open Settings", "type": "setup"},
  {"prompt": "Enable WiFi", "type": "test", "retries": 2},
  {"prompt": "Close Settings", "type": "teardown"}
]

6. usage

View API usage statistics and costs.

Example:

Show me my Quash usage statistics

Complete Workflow Example

User: "Setup Quash on my machine"
โ†’ Runs build tool
โ†’ Returns: All dependencies installed โœ“

User: "Connect to my Android emulator"
โ†’ Runs connect tool
โ†’ Returns: Connected to emulator-5554 โœ“

User: "Configure to use Claude Sonnet 4 with vision and my API key is mhg_xxx..."
โ†’ Runs configure tool
โ†’ Returns: Configuration set โœ“

User: "Execute task: Open Instagram and go to my profile"
โ†’ Runs execute tool with live streaming
โ†’ Returns: Task completed โœ“

User: "Show me my usage statistics"
โ†’ Runs usage tool
โ†’ Returns: Total cost: $0.15, 10 executions โœ“

Requirements

  • Python 3.11+ - Required for the MCP server
  • Android Device - Emulator or physical device with USB debugging enabled
  • Quash API Key - Get from quashbugs.com/mcp

Dependencies automatically installed:

  • Android Debug Bridge (ADB) - via adbutils
  • Quash Portal APK - via apkutils
  • MCP protocol support - via mcp
  • HTTP client - via httpx

Architecture

v0.2.0 uses a client-server architecture:

  • Client (quash-mcp): Lightweight MCP server handling device connections and API calls
  • Server (Quash backend): Proprietary AI execution engine (LLMs, agents, pricing logic)
quash-mcp/
โ”œโ”€โ”€ quash_mcp/
โ”‚   โ”œโ”€โ”€ __main__.py          # Module entry point for python -m
โ”‚   โ”œโ”€โ”€ server.py            # Main MCP server entry point
โ”‚   โ”œโ”€โ”€ backend_client.py    # API communication with Quash backend
โ”‚   โ”œโ”€โ”€ state.py             # Session state management
โ”‚   โ””โ”€โ”€ tools/
โ”‚       โ”œโ”€โ”€ build.py         # Dependency checker and installer
โ”‚       โ”œโ”€โ”€ connect.py       # Device connectivity
โ”‚       โ”œโ”€โ”€ configure.py     # Agent configuration
โ”‚       โ”œโ”€โ”€ execute.py       # Task execution (calls backend API)
โ”‚       โ”œโ”€โ”€ runsuite.py      # Suite execution (calls backend API)
โ”‚       โ””โ”€โ”€ usage.py         # Usage statistics (from backend)
โ””โ”€โ”€ pyproject.toml

Troubleshooting

"No devices found"

  • Start Android emulator via Android Studio > AVD Manager
  • Connect physical device with USB debugging enabled
  • For WiFi debugging: adb tcpip 5555 && adb connect <device-ip>:5555

"Portal not ready"

  • The connect tool automatically installs the Portal APK
  • If it fails, manually enable the Quash Portal accessibility service in Settings > Accessibility

"Invalid API key"

  • Make sure you've run configure with a valid API key from quashbugs.com
  • API keys start with mhg_ prefix
  • Check your API key hasn't been revoked in the web portal

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quash_mcp-0.2.19.tar.gz (34.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

quash_mcp-0.2.19-py3-none-any.whl (42.4 kB view details)

Uploaded Python 3

File details

Details for the file quash_mcp-0.2.19.tar.gz.

File metadata

  • Download URL: quash_mcp-0.2.19.tar.gz
  • Upload date:
  • Size: 34.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for quash_mcp-0.2.19.tar.gz
Algorithm Hash digest
SHA256 3739e36d6c64893a5f0bbf4435d974b1ac8b04bdf45734fe98d6257f0c2ca612
MD5 cead40731bf9efb36ea78cd4714efd0e
BLAKE2b-256 6c7865bb0ddfdb7d9ed2c5e9c7dea07481f0ffefe5e5c755606a305f3d7b21df

See more details on using hashes here.

File details

Details for the file quash_mcp-0.2.19-py3-none-any.whl.

File metadata

  • Download URL: quash_mcp-0.2.19-py3-none-any.whl
  • Upload date:
  • Size: 42.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for quash_mcp-0.2.19-py3-none-any.whl
Algorithm Hash digest
SHA256 f136416b14979e1ca638f9c3a2c5c76cd7f02b21935dd8067a9576af10158bc2
MD5 ceb9739c9094af2b91697825d0f596ba
BLAKE2b-256 33af5e9e082097c6da250b6f8e4be628c53aca7d638460a2b8f0cc268c0e1b0f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page