Autonomous QA MCP that tests web and macOS apps like a real testing engineer—and verifies every bug it reports.
claude mcp add argus -- uvx playwright{
"mcpServers": {
"argus": {
"command": "uvx",
"args": ["playwright"]
}
}
}Resumen de MCP Servers
<!-- mcp-name: io.github.chriswu727/argus -->
<div align="center">
<img src="https://raw.githubusercontent.com/chriswu727/argus/main/assets/argus-icon.png" alt="Argus Testing logo — an eye with a verified check" width="112">
# Argus
**An MCP server that tests apps like a real testing engineer—exploring user journeys, discovering unscripted bugs, and proving each finding before reporting it.**
Argus is an [MCP](https://modelcontextprotocol.io/) server. It adds evidence-first browser QA to Claude Code, Codex, Cursor, or any MCP host without taking over the host agent's identity or broader coding task. The agent explores, inspects, verifies persistence, and records reproducible bugs. Every certified finding is **independently re-confirmed from a clean page load** before it's reported.
[](https://pypi.org/project/argus-testing/)
[](https://pypi.org/project/argus-testing/)
[](https://modelcontextprotocol.io/)
[](https://registry.modelcontextprotocol.io/?q=argus)
[](#benchmarks)
[](LICENSE)
[Product page](https://yichenwu.dev/projects/argus) · [Quick start](#quick-start) · [Why Argus](#why-argus-is-different) · [Compared](#how-it-compares) · [Tools](#tool-surface) · [Benchmarks](#benchmarks)
</div>
---
## The output
Give it a URL; get a report of bugs — each tagged with whether Argus **independently reproduced it** or only observed it:
<div align="center">
<img src="https://raw.githubusercontent.com/chriswu727/argus/main/assets/report.png" alt="Argus bug report — verified findings with reproduction receipts" width="800">
</div>
The green badge is the whole point. Anyone can have an LLM *claim* a bug. Argus re-loads the page from scratch and re-checks the symptom before it says **VERIFIED** — so the report is a list of bugs you can trust, not a list of guesses to triage.
---
## How it works
```mermaid
flowchart LR
A(["observe"]) --> B{"looks wrong?"}
B -->|not sure| C["act: click · type · resize · verify"]
C --> A
B -->|bug| D["verify_persistence — reload from a clean state"]
D -->|symptom repeats| E(["VERIFIED"])
D -->|symptom gone| F(["dropped — no false positive"])
E --> G[["report: HTML · JSON · JUnit · SARIF"]]
```
The agent is the intelligence. Argus supplies concise QA guidance, a description-keyed tool surface (`click_what("Login button")`, not `click(7)`), a goal coverage ledger, and a **reproduction-receipt engine** that turns "the model thinks this is a bug" into "this bug is real, here's the proof."
---
## Quick start
With [`uv`](https://docs.astral.sh/uv/) installed, no global Python package install is required. Install Chromium once:
```bash
uvx --from playwright playwright install chromium
```
Then connect Argus to your MCP client.
### Claude Code
```bash
claude mcp add argus -- uvx --from argus-testing argus-mcp
```
### Codex and the ChatGPT desktop app
Codex CLI, the Codex IDE extension, and the ChatGPT desktop app share the same local MCP configuration:
```bash
codex mcp add argus -- uvx --from argus-testing argus-mcp
```
### Cursor
[](https://cursor.com/install-mcp?name=argus&config=eyJjb21tYW5kIjoidXZ4IiwiYXJncyI6WyItLWZyb20iLCJhcmd1cy10ZXN0aW5nIiwiYXJndXMtbWNwIl19)
The button adds Argus to Cursor; run the Chromium installation command above once before the first test.
### Any stdio MCP client
```json
{
"mcpServers": {
"argus": {
"command": "uvx",
"args": ["--from", "argus-testing", "argus-mcp"]
}
}
}
```
The default `core` profile exposes the primary web-testing workflow without flooding the host with every specialist tool. Use `uvx --from argus-testing argus-mcp --list-tools` to inspect the selected profile, `--tool-profile screen` for native macOS testing, or `--tool-profile full` for the entire advanced surface. `ARGUS_TOOL_PROFILE` provides the same setting through the environment.
Then just ask, in your agent session:
> **"Test my app at http://localhost:3000 — find real bugs."**
That's it. The agent drives; Argus keeps it honest and writes the report.
For a scoped review, the host can give `start_session` explicit `goals`, `constraints`, and an advisory `time_budget_minutes`. Argus returns the full testing protocol once and keeps outstanding goals and discovered pages visible in later observations. Mark a goal `in_progress` before its journey; when `coverage_update` marks it `exercised` or `blocked`, Argus requires a concrete explanation and automatically links the URLs, value-redacted actions, screenshots, persistence checks, bugs, and observations produced in that testing window. The final HTML and JSON reports preserve both completed and unfinished coverage instead of implying that an incomplete pass was comprehensive.
<details>
<summary><b>pip installation</b></summary>
```bash
pip install argus-testing
playwright install chromium
claude mcp add argus -- argus-mcp
```
</details>
<details>
<summary><b>CLI mode (no MCP host — bring your own LLM)</b></summary>
```bash
# Uses a LiteLLM-backed planner. Set a provider key (OPENAI_API_KEY, DEEPSEEK_API_KEY, …).
uvx --from argus-testing argus http://localhost:3000 --model deepseek/deepseek-chat
# Higher recall: union N independent passes (deduped, proven instance kept)
uvx --from argus-testing argus http://localhost:3000 --passes 3
```
</details>
<details>
<summary><b>Screen mode (macOS) — test any native app, not just the web</b></summary>
```bash
pip install 'argus-testing[mac]'
brew install cliclick # keystroke / coordinate fallback
argus-mcp --doctor # check Screen Recording + Accessibility grants
claude mcp add argus-screen -- argus-mcp --tool-profile screen
```
Same description-keyed tools, but the target is whatever app is foreground on macOS — Notes, Cursor, Safari, your in-progress feature. No headless Chrome, no scripted Playwright. Argus sees what you see, via the Accessibility tree.
</details>
---
## Why Argus is different
**Existing testing tools only test what you script.** Playwright and Cypress run the assertions you wrote. Argus *discovers* bugs you didn't think to test for — and then does the thing an LLM alone can't be trusted to do: **proves them.**
| | |
|---|---|
| **Autonomous & black-box** | You give it a URL, not a test plan. It explores like a real user — no repo access, no scripted steps. |
| **Coverage contract** | Optional natural-language goals, user constraints, discovered pages, and time budget stay visible throughout the session and in the final report. |
| **Reproduction receipts** | Before certifying a bug, it re-loads the page from a clean state and re-confirms the symptom. Engineered for **zero false-certifications.** |
| **Finds human-eye bugs** | Fake "Only 3 left!" scarcity, a "Saved" toast that doesn't save, a sale badge where the price didn't drop, a stale navbar after a rename. Static analysis catches none of these. |
| **Discover → guard** | Findings are journaled; `argus-regression` re-checks them on every build with **zero LLM cost** and a non-zero exit — a real CI gate against known bugs coming back. |
| **Machine-readable** | Every report also emits JSON, JUnit, and SARIF — so findings gate a pipeline and surface as inline **GitHub PR annotations.** |
---
## How it compares
On the axis that matters for finding bugs — *autonomously discover, independently verify, and report* — Argus occupies a different slot from the browser-MCP crowd:
| | **Argus** | Playwright MCP | Chrome DevTools MCP | browser-use |
|---|:---:|:---:|:---:|:---:|
| Autonomously finds unknown bugs | Yes | No *(driver)* | No *(debugger)* | Partial *(task-scoped)* |
| Independently verifies each finding | Yes *(receipt)* | No | No | No *(LLM score)* |
| Evidence-rich bug report | Yes | No | No | Partial |
| Black-box (no repo / source access) | Yes | Yes | Yes | Yes |
| Zero-LLM CI regression gate | Yes | Partial | No | Partial |
> These aren't "worse" tools — they're a different job. Playwright MCP gives an agent excellent hands; Chrome DevTools MCP gives it deep network/perf/memory inspection Argus doesn't have. Argus is the layer that *decides what's a bug and proves it.* Use them together.
---
## Benchmarks
```
$ python -m argus.bench --target all
buggytasks 22 / 22 = 100 % · mechanical bugs (console errors, fake delete, auth bypass…)
darkshop 12 / 12 = 100 % · human-eye bugs (fake scarcity, lying toasts, stale state…)
──────────────────────────────────────────────────────────────────────
total 34 / 34 = 100 % · reproducible from git clone in two commands
```
`34 / 34` is the **capability ceiling** — what's *findable* through the tool surface, measured by deterministic scripts. It is deliberately separate from *how often a given LLM remembers to use the tools well*, which is noisy and honestly reported below.
<details>
<summary><b>Real-LLM recall — the honest number (and why we report the spread)</b></summary>
`python -m argus.bench.agent_runner` puts an **actual model** in the driver's seat and scores recall across trials. What we've learned running it:
1. **Real recall sits well below the `34/34` ceiling.** A live driver finds a fraction of the seeded bugs per pass — the ceiling is what's *findable*, this is what a model *finds*.
2. **Variance is large — never rank models on a few runs.** Per-trial recall swings widely; we report the spread, not a single hero number.
3. **Dogfooding the bench found real bugs in Argus itself** — a `record_bug` crash on a string argument that silently Lo que la gente pregunta sobre argus
¿Qué es chriswu727/argus?
+
chriswu727/argus es mcp servers para el ecosistema de Claude AI. Autonomous QA MCP that tests web and macOS apps like a real testing engineer—and verifies every bug it reports. Tiene 2 estrellas en GitHub y se actualizó por última vez yesterday.
¿Cómo se instala argus?
+
Puedes instalar argus clonando el repositorio (https://github.com/chriswu727/argus) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.
¿Es seguro usar chriswu727/argus?
+
chriswu727/argus aún no ha sido auditado por nuestro agente de seguridad. Revisa el repositorio original en GitHub antes de usarlo en producción.
¿Quién mantiene chriswu727/argus?
+
chriswu727/argus es mantenido por chriswu727. La última actividad registrada en GitHub es de yesterday, con 0 issues abiertos.
¿Hay alternativas a argus?
+
Sí. En ClaudeWave puedes explorar mcp servers similares en /categories/mcp, ordenados por popularidad o actividad reciente.
Despliega argus en tu cloud
Lleva este repo a producción en minutos. Cada plataforma genera su propio entorno con variables de entorno editables.
¿Mantienes este repo? Añade un badge a tu README
Pega el badge en tu README de GitHub para mostrar que está auditado por ClaudeWave. Cada badge enlaza de vuelta a esta página y muestra el Trust Score actual.
[](https://claudewave.com/repo/chriswu727-argus)<a href="https://claudewave.com/repo/chriswu727-argus"><img src="https://claudewave.com/api/badge/chriswu727-argus" alt="Featured on ClaudeWave: chriswu727/argus" width="320" height="64" /></a>Más MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface