M
mholecy/averi
MCP server for verifying mobile app changes on iOS Simulators and Android Emulators
View on GitHub ↗Link checked 2026-11-12 · HTTP 200 · opens the vendor's own site
Install & config
Install command from the repository
claude mcp add averi -- npx -y averi
Parsed from the README we fetched on 2026-11-09; we have not executed it.
This is the install method the repository states, not an MCP client config, so no JSON is generated.
Key names differ by client: Clients & CLI
- Star count
- 5 ★ · mholecy/averi · read from the GitHub search API · (checked 2026-11-13 20:00:50)
- Source
- read directly from its GitHub page · type: open-source project
- Harvest history
- first seen 2026-11-10 · last seen 2026-11-14 · seen 5× · listed by 1 sources
- Score
- score 103 · 5 ★ · 1 sources · repo
- Install
claude mcp add averi -- npx -y averi
FAQ (answers come from our records)
How do I install it?
The repository provides this install command:
claude mcp add averi -- npx -y averi. It comes from the repository itself; we cannot guarantee it runs as-is in your client.Who is it for?
We filed it under these tags: 开源项目. The tags come from the entry itself, not a taxonomy we imposed.
Who maintains it?
repository
mholecy/averi;first catalogued 2026-11-10;last seen 2026-11-14。There is no official certification or quality rating here — we record sources and dates only.# averi — on-device verification for AI coding agents
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
averi is an MCP server that gives a coding agent hands on iOS Simulators and Android Emulators: launch the app, tap, type, read the screen, assert, screenshot. Its differentiator is ensure_state — the project checks in an averi.yaml describing app states (like logged in) and how to reach them, so the agent gets past login and deep into the app deterministically, instead of fumbling through it tap by tap on every task.
averi itself is project-independent: it ships only tools. Everything app-specific — states, flows, credentials — lives in your app repo.
## Installation
averi is on npm — nothing to clone or build. Setup is a job for your agent, not for you:
1. Register the MCP server (in your app repo):
bash
claude mcp add averi -- npx -y averi
2. Restart your agent session and paste this prompt:
> Set up the averi tool in this repo. Fetch https://raw.githubusercontent.com/mholecy/averi/main/SETUP.md and follow it step by step — run every check, and don't report done until the final verification passes.
The agent handles the rest: verifies prerequisites (adb, idb, a booted device), creates the gitignored .env.averi for test credentials, installs the agent skill, authors averi.yaml by driving your actual app, and proves the setup by logging in end to end — twice (once cold through the full flow, once warm in ~1 s).
Prefer to do it by hand, or setting up for a whole team (committed .mcp.json)? Everything is in SETUP.md — it reads fine for humans too.
Updating later is also an agent job — ask it to follow SETUP.md → Updating averi (bumps the version, re-syncs the copied skill so it can't drift, re-runs the login proof).
## What is averi
mermaid
flowchart LR
A(["AI agent"]) -- MCP --> S["averi server"]
S -- "adb / simctl + idb (opt-in WDA)" --> D["emulator / simulator"]
subgraph R["your app repo"]
Y["averi.yaml states, flows, selectors"]
E[".env.averi — gitignored credential values"]
end
S -. reads .-> Y
S -. reads .-> E
Your agent changes mobile code all day but can't see whether the app actually works. averi closes that loop: after a change, the agent builds the app, installs it, drives it to the changed screen, and verifies — on both platforms, on real simulators.
Three ideas make that reliable:
One tree, one selector language. Both platforms' accessibility trees are normalized into one model, so the same selectors (id:, text:"…", role:) — and usually one yaml — drive both OSes, with per-platform overrides only where they differ.
States over tap sequences. averi.yaml declares where the app can be and how to get there. The agent says ensure_state("logged_in") and averi does the rest, deterministically.
Credentials never in yaml. ${ENV_VAR} references resolve from a gitignored .env.averi (real env vars win, so CI works normally), and values are redacted () from every trace and error.
## How it works
### ensure_state — the core loop
mermaid
flowchart LR
A["ensure_state('logged_in')"] --> B{"screen matches the state's detect condition?"}
B -- yes --> C(["done — ~1 s"])
B -- no --> D["run the next reach: flow, e.g. login"]
D --> E{"detect: matches now?"}
E -- yes --> C
E -- no --> G{"another reach: flow?"}
G -- yes --> D
averi itself is project-independent: it ships only tools. Everything app-specific — states, flows, credentials — lives in your app repo.
## Installation
averi is on npm — nothing to clone or build. Setup is a job for your agent, not for you:
1. Register the MCP server (in your app repo):
bash
claude mcp add averi -- npx -y averi
2. Restart your agent session and paste this prompt:
> Set up the averi tool in this repo. Fetch https://raw.githubusercontent.com/mholecy/averi/main/SETUP.md and follow it step by step — run every check, and don't report done until the final verification passes.
The agent handles the rest: verifies prerequisites (adb, idb, a booted device), creates the gitignored .env.averi for test credentials, installs the agent skill, authors averi.yaml by driving your actual app, and proves the setup by logging in end to end — twice (once cold through the full flow, once warm in ~1 s).
Prefer to do it by hand, or setting up for a whole team (committed .mcp.json)? Everything is in SETUP.md — it reads fine for humans too.
Updating later is also an agent job — ask it to follow SETUP.md → Updating averi (bumps the version, re-syncs the copied skill so it can't drift, re-runs the login proof).
## What is averi
mermaid
flowchart LR
A(["AI agent"]) -- MCP --> S["averi server"]
S -- "adb / simctl + idb (opt-in WDA)" --> D["emulator / simulator"]
subgraph R["your app repo"]
Y["averi.yaml states, flows, selectors"]
E[".env.averi — gitignored credential values"]
end
S -. reads .-> Y
S -. reads .-> E
Your agent changes mobile code all day but can't see whether the app actually works. averi closes that loop: after a change, the agent builds the app, installs it, drives it to the changed screen, and verifies — on both platforms, on real simulators.
Three ideas make that reliable:
One tree, one selector language. Both platforms' accessibility trees are normalized into one model, so the same selectors (id:, text:"…", role:) — and usually one yaml — drive both OSes, with per-platform overrides only where they differ.
States over tap sequences. averi.yaml declares where the app can be and how to get there. The agent says ensure_state("logged_in") and averi does the rest, deterministically.
Credentials never in yaml. ${ENV_VAR} references resolve from a gitignored .env.averi (real env vars win, so CI works normally), and values are redacted () from every trace and error.
## How it works
### ensure_state — the core loop
mermaid
flowchart LR
A["ensure_state('logged_in')"] --> B{"screen matches the state's detect condition?"}
B -- yes --> C(["done — ~1 s"])
B -- no --> D["run the next reach: flow, e.g. login"]
D --> E{"detect: matches now?"}
E -- yes --> C
E -- no --> G{"another reach: flow?"}
G -- yes --> D
Listed badge (optional)
Copy this line into the README if you want the listing mark. Optional, and it does not affect being listed.
[](https://anclum.com/en/s/mholecy-averi/)
- Source
- github · https://github.com/mholecy/averi
- Browse by field
- Open source
- Traction
- 5 ★
- added
- today
More like this
Filed under
Every tag opens the full list for that filter. Counts are the live catalogue figures.