INTEGRATION · GEMINI CLI

Gemini CLI QA testing: add a QA tool, then ask it to test your site

Add one MCP server to settings.json and Gemini CLI gets a QA engineer it can call. The agent drives a real browser; plain code grades the evidence. Free first audit, no card.

Free audit — no signup, no card. The same run Gemini CLI triggers through MCP.

We pointed this audit at 49 Show HN launches: 78% had a critical bug on day one.

gemini session
$ pip install prufa-mcp
$ gemini mcp add prufa prufa-mcp
✓ Added MCP server 'prufa' to ~/.gemini/settings.json (stdio)
> audit https://yourapp.com with Prufa
⚙ calling prufa_run_audit({ url: "https://yourapp.com" })
→ report_url https://prufa.dev/r/k7m2qx
✓ VERIFIED critical tracking.none_detected · / · 10:14:22Z
✓ VERIFIED warning ux.dead_links · /docs/old
· ADVISORY opinion hero CTA placement (not counted)
Inside a Gemini CLI session: register prufa, ask in plain English, and the agent calls prufa_run_audit — verified findings counted, the advisory note labeled and excluded.

How do you make Gemini CLI actually QA the site it just built?

Gemini CLI can write the feature, but it can't tell you whether the deployed page actually works. Out of the box it has no way to load your site in a browser, watch the network, and check that the analytics fired or the form submitted. You're left running the smoke test by hand — or wiring Gemini CLI up with Playwright MCP and then writing and grading the tests yourself.

Prufa ships an MCP server that hands Gemini CLI a finished QA tool, not raw browser primitives. When the agent calls prufa_run_audit({url}), a managed agent loop opens a real browser, navigates the public pages, and records everything over CDP — every analytics beacon, console error, cookie, response code, and a DOM snapshot. Then deterministic code grades the captured evidence against declarative specs. The LLM navigates; it never decides whether a beacon is correct or a link is broken — captured traffic is asserted against a spec, so the same input gives the same verdict. That separation is what makes a verdict Gemini CLI can act on. See how Prufa verifies a flow without letting the model grade the result.

How do I add a QA MCP server to Gemini CLI?

Three steps: install and register the server, ask the agent to test a URL, then read back a graded verdict. Evidence — not the model — keeps the score.

  1. Add the MCP server

    Install it (pip install prufa-mcp, or pipx install prufa-mcp), then add a prufa entry under mcpServers in ~/.gemini/settings.json (global) or .gemini/settings.json (project) with command prufa-mcp (no args), or run gemini mcp add prufa prufa-mcp. No key needed for the free audit.

  2. Ask Gemini CLI to test your site

    In the agent, say "audit https://yourapp.com with Prufa." It calls prufa_run_audit, which blocks (wait=true, up to ~90s) while a real browser loads the pages and captures network traffic, console output, cookies, and response codes.

  3. Evidence keeps the score

    The tool returns the JSON report and a share_token. Six sections graded A–F — Works, Fast, Found, Measured, Accessible, Compliant — plus an ungraded Flows section. Counts and grades come from VERIFIED findings only; ADVISORY (LLM-judged) observations are labeled and excluded. There is no composite 0–100 score — we don't fake precision.

The exact Gemini CLI config for a QA MCP server

Real and copy-pasteable. Install first with pip install prufa-mcp, then add this stdio entry under the top-level mcpServers key in ~/.gemini/settings.json (global) or .gemini/settings.json (project). The env / API-key line is optional — the free audit needs none.

~/.gemini/settings.json
{
  "mcpServers": {
    "prufa": {
      "command": "prufa-mcp",
      "env": { "PRUFA_API_TOKEN": "$PRUFA_API_TOKEN" }
    }
  }
}
Official Gemini CLI MCP docs

Or add it from the command line (gemini mcp add <name> <command>, stdio is the default transport):

shell — gemini mcp add
gemini mcp add prufa prufa-mcp

Remote (HTTP) — note the httpUrl key. When a hosted Prufa MCP endpoint is the path you want, Gemini CLI uses httpUrl, not url (a plain url key is treated as SSE):

~/.gemini/settings.json — remote (HTTP)
{
  "mcpServers": {
    "prufa": {
      "httpUrl": "https://mcp.prufa.dev/mcp",
      "headers": { "Authorization": "Bearer $PRUFA_API_TOKEN" },
      "timeout": 5000
    }
  }
}
  • The httpUrl gotcha. For the HTTP transport Gemini CLI requires the httpUrl key. If you use url, Gemini CLI treats the entry as an SSE server and the connection will not behave as a Streamable-HTTP one.
  • Env refs use $VAR. Gemini CLI resolves environment variables written as $PRUFA_API_TOKEN inside settings.json. Keep the secret in your shell env, not committed in the file.
  • Allowlist / blocklist by name. The global mcp.allowed and mcp.excluded arrays in settings.json let you allowlist or blocklist MCP servers by name ("prufa") — useful if you commit a shared project config.
  • No key for the free audit. prufa_run_audit and prufa_get_report work anonymously — PRUFA_API_TOKEN is optional and only for persistent tiers. The key is a workspace bearer token (prk_...) the agent can self-provision as a free, no-card trial via prufa_setup_workspace (needs the human's email), or a human mints in the dashboard for a paid workspace.
  • Install note. prufa-mcp is a stdio server published on PyPI — install it with pip install prufa-mcp (or pipx), which puts a prufa-mcp console script on your PATH; that's the command. There is no npm package today, so npx -y prufa-mcp will not resolve — use the pip/console-script form.
  • Where stdio vs HTTP stands today. The stdio package above is the working, recommended setup. The https://mcp.prufa.dev/mcp HTTP endpoint is the path for a future hosted Prufa MCP server; use stdio today.

What Gemini CLI reads back from prufa_run_audit

Verified and advisory findings ship in separate tiers, never interleaved. Counts and grades come from the verified tier only; advisory is a labeled opinion that counts toward nothing.

app.prufa.dev/r/k7m2qx
✗ critical ✓ verified No analytics events detected on any page
tracking.none_detected · / · 2026-07-01T10:14:22Z

The build ships blind — no events fired across the public pages (the most common critical in our 49-launch audit, 38 of 49).

✗ critical ✓ verified Canonical points to a different host
seo.canonical_host_mismatch · /pricing · 2026-07-01T10:14:31Z

Search engines are told the real page lives somewhere else.

! warning ✓ verified No Content-Security-Policy header
security.missing_csp · / · 2026-07-01T10:14:25Z

Nothing constrains where scripts can load from — a missing XSS backstop (11 of 14 sites in our r/SideProject audit shipped without one).

! warning ✓ verified Broken internal link returns 404
ux.dead_links · /docs/old · 2026-07-01T10:14:28Z

A user (or your agent's next step) hits a dead end.

opinion Hero copy may bury the primary CTA

A judgment call, not a verified fact — excluded from every count and grade.

Honest answers to the obvious objections

Where this is and isn't the right tool — including where the alternative wins.

Isn't this just Playwright MCP with extra steps?

Different jobs. Playwright MCP gives Gemini CLI raw browser primitives — click, type, navigate — and you still author and judge the test. Prufa returns a verdict: the agent loop drives the browser, then deterministic code grades the captured evidence and labels each finding VERIFIED or ADVISORY. If you want fine-grained browser control, Playwright MCP wins. If you want a trustworthy pass/fail without writing assertions, use Prufa. Many people run both. More: agentic testing vs scripted testing.

Can I trust a verdict from an LLM-driven tool enough to act on it?

The agent loop only navigates and drives the browser. Grades and severity counts are computed by deterministic code from captured evidence — the LLM never judges whether a finding is real, so the verdict is reproducible (regression-tested against a golden fixture site). LLM-judged observations ship as a separate, labeled ADVISORY tier and count toward nothing. There is no composite 0–100 score; we don't fake precision.

What does it not do through MCP yet?

Honest limits: the free audit walks public pages, not authenticated flows — login/checkout flows use prufa_create_flow / prufa_run_flow and need a card-first paid workspace. Prufa does not scan for exposed secrets. Full-auto discovery is gated, not a one-call feature. The evidence-gated AI-VERIFIED path currently lives in the Gremlin chaos modality, not the standard audit — in a standard audit the lone LLM check stays advisory. MCP isn't the only entry point: the same audit is callable straight from your own code over the HTTP API.

Frequently asked questions

The questions developers ask before they wire a QA MCP server into Gemini CLI.

What is a QA MCP server for Gemini CLI?

It is a Model Context Protocol server that gives Gemini CLI a QA tool it can call mid-task. Prufa's MCP server (prufa-mcp) exposes tools like prufa_run_audit and prufa_get_report. Once added to settings.json, Gemini CLI can point a real browser at a URL, capture network traffic, console errors and cookies, and read back a graded verdict — without you leaving the agent or writing a test.

How do I add a QA MCP server to Gemini CLI?

Install prufa-mcp (pip install prufa-mcp, or pipx), then edit ~/.gemini/settings.json (global) or .gemini/settings.json (project) and add a prufa entry under mcpServers with command prufa-mcp, or run gemini mcp add prufa prufa-mcp. prufa-mcp is open source (Apache-2.0, GitHub prufa-dev/prufa-mcp) and the free audit needs no key. PRUFA_API_TOKEN is optional and only for persistent tiers (saved flows, deploy monitors) — the agent can self-provision a free, no-card trial token via prufa_setup_workspace with the human's email, or a human mints one in the dashboard for a paid workspace. Env values are referenced as $VAR.

What's the difference between Playwright MCP and a QA MCP server?

Playwright MCP gives Gemini CLI browser primitives — click, type, navigate — and you (or the agent) still author and judge the test. Prufa's QA MCP server returns a graded verdict: the agent loop drives a real browser, then deterministic code grades the captured evidence against specs and labels each finding VERIFIED or ADVISORY. Playwright MCP wins when you want raw browser control; Prufa wins when you want a pass/fail you can trust.

Can Gemini CLI run a full website test through MCP?

Yes, within honest limits. Through prufa_run_audit Gemini CLI runs a real-browser audit of public pages and reads six graded sections plus findings as JSON. Authenticated flows (login, checkout) use prufa_create_flow and prufa_run_flow and require a card-first paid workspace. The free audit walks public pages only; it does not scan for exposed secrets, and full-auto discovery is gated, not a one-call feature.

Give Gemini CLI a QA tool — run the first audit now

Try the free 60-second audit from the browser first — the same run Gemini CLI triggers through MCP, no card. Then add the server to settings.json and let the agent verify what it just built. Saved flows and deploy monitoring start on the paid tiers; see pricing. Browse every Prufa tool on the MCP server page.

or see pricing →