Fagun / docs

Documentation · v0.9.0 · Open source (MIT)

The complete guide to Fagun.

One MCP server that gives any AI tool a real browser to use your product like real customers do — as multiple personas, across whole user journeys — run full UAT, hunt real bugs (functional, security, performance, accessibility, SEO), and return a product-readiness verdict. Every finding is backed by evidence. Nothing is faked; if it can't be reproduced, it isn't reported.

45+ MCP tools11 end-user personasUser-journey runner16-category readiness scorecardWCAG 2.1 a11yReal Core Web Vitals20+ security classesAuthenticated testingWorks with local models

What is Fagun

A senior UAT, QA & security engineer that lives in your AI tool.

Fagun is a Model Context Protocol (MCP) server. Install it once and your AI assistant — Claude Code, Cursor, Codex, Windsurf, Claude Desktop, or any MCP client — gains 42 browser + QA tools plus the official Chrome DevTools MCP companion for live DevTools debugging and performance traces. It drives a real Chromium browser (auto-installed) and does what a whole product team would: uses the product as real customers (mobile, slow-internet, keyboard-only, screen-reader…), walks complete journeys (signup, login, search, checkout…), hunts defects, and ends with a product-readiness verdict — every finding with steps, evidence, severity, and a suggested fix.

🎯

Real, not hallucinated

Every finding comes from an actual tool result — a console error, a status code, a measured metric. No "could potentially".

🔌

Any AI, any model

Pure MCP — no built-in model. Works with frontier models and fully local open-source ones via Ollama (Qwen, DeepSeek, Llama, Mistral…).

🪶

Token-lean

Terse output by default cuts tool-result tokens ~70%. Full detail goes to a Markdown report on disk, not your context.

Why you need it

AI can write code. It usually can't see it run.

An LLM writing a feature is flying blind — it never loads the page, never clicks the button, never reads the 500 in the network tab. Fagun closes that loop. It gives the model eyes and hands on a live browser, so it can verify its own work, catch regressions, and hunt the bugs that only appear at runtime.

Without Fagun

  • "Looks correct" — never actually run
  • Console errors & failed API calls unseen
  • Broken links, form gaps, a11y issues shipped
  • Security misconfigs undetected
  • Perf regressions found by users, not you
  • Manual QA repeated by hand every release

With Fagun

  • Product used as real personas, journeys walked end-to-end
  • Console + network watched after every action
  • Links, forms, WCAG, keyboard checked automatically
  • 20+ security classes probed (non-destructive)
  • Real Core Web Vitals with a Lighthouse-style score
  • A product-readiness verdict + one-command re-runs

UAT & readiness

Not just "are there bugs" — is it ready for real users?

Fagun's primary job is a release decision. It experiences the product as real customers, validates that they can actually finish what they came to do, then scores readiness across 16 dimensions and gives a verdict — from Ready to Critical issues block release.

🎭

11 end-user personas

Become a first-time, mobile, tablet, slow-internet, low-end, keyboard-only, screen-reader, dark-mode, or international user — real device, network + CPU throttle, and media prefs, not just a resized window.

🧭

Complete user journeys

Walk login, signup, search, checkout, password-reset and more step-by-step. Each step records pass/fail, a screenshot, console errors, failed requests and timing — a step only "passes" if the browser actually did it.

📊

Readiness scorecard

16 category scores (UX, UI, business logic, reliability, a11y, performance, security, mobile…) + a release verdict + prioritized fixes (why it matters, how to fix). Rendered to Markdown / HTML / JSON / JUnit XML.

🔐

Test behind login

Log in once, save_session, then load_session restores it — so crawl, deep test and security scan run as the logged-in user: dashboards, checkout, and authorization surface.

⌨️

Keyboard walk

Tab through the page like a keyboard-only / screen-reader user — focus reachability, missing visible focus, and focus traps, with evidence.

🔎

Tech fingerprint

fingerprint detects server, hosting, framework, CMS and analytics from real headers + DOM signals — so the hunt is tuned to the actual stack.

Who it's for

If you build, ship, or break software — it's for you.

👩‍💻

Developers & AI-pair-programmers

Verify a change actually works in the browser before you commit. Catch console errors and failed requests the moment they appear. Let the model self-check its own output.

🧪

QA & SDET engineers

Generate positive / negative / boundary / edge / injection test data automatically, fuzz every form, and get a reproducible report — without writing the harness by hand.

🛡️

Security researchers & bug bounty hunters

Non-destructive probes for XSS, SQLi, CSP, clickjacking, CRLF, LFI, SSTI, host-header injection, exposed files, secrets, GraphQL introspection & more — every hit evidence-backed. Authorized targets only.

📊

Product managers & analysts

Find missing workflows, broken journeys, and validation gaps. Get an executive summary grouped by severity and business impact — not a wall of stack traces.

Accessibility & SEO specialists

Real WCAG 2.1 checks including computed color-contrast, plus metadata, canonical, viewport, and Core Web Vitals in one pass.

🏢

Agencies, freelancers & indie hackers

Audit any client site in minutes and hand over a professional Markdown report. Runs locally and privately — great for offline or air-gapped work.

Install

One line. Nothing to configure.

Use uvx fagun init for the easiest setup with no Python required. If you already use Python, pip install --upgrade fagun then fagun init does the same setup. If old terminal output appears, run uvx --upgrade --reinstall fagun init. Fagun auto-detects every AI tool on your machine and wires up the Fagun MCP server, Chrome DevTools MCP via npx -y chrome-devtools-mcp@latest --auto-connect --no-usage-statistics, and the /fagun skill.

$ uvx fagun init # browser + Fagun MCP + Chrome DevTools MCP + skill $ uvx --upgrade --reinstall fagun init # force latest if old output appears $ pip install --upgrade fagun && fagun init # same setup for pip/Python users $ uvx fagun install claude-code # or target one tool $ uvx fagun install chrome-devtools # Chrome DevTools MCP only fagun deep test https://example.com # auto Chrome MCP + full Fagun output

Chrome DevTools MCP auto-connects to the user's running Chrome during normal deep tests. Fagun opens chrome://inspect/#remote-debugging; enable remote debugging there, then click Allow when Chrome shows the permission popup. Users do not need to run fagun connect to my Chrome first. This lets tests reuse logged-in sessions without asking for credentials. Generated configs opt out of usage statistics and update-check noise.

The intended runtime order is: install with uvx fagun init or pip install fagun && fagun init → restart the AI tool → type fagun deep test URL → Chrome DevTools MCP auto-connects → Chrome may ask for Allow remote debugging → Fagun prints the full verdict, all findings, evidence, fixes, coverage, and report path.

Inside Claude Code, as a plugin:

/plugin marketplace add mejbaurbahar/fagun /plugin install fagun@fagun

Env toggles: FAGUN_TERSE=0 full JSON · FAGUN_HEADLESS=0 show the browser · FAGUN_BROWSER=firefox|webkit · FAGUN_CDP_URL attach to your own Chrome · FAGUN_SCOPE=host1,host2 restrict active probes to authorized hosts (FAGUN_SCOPE_DENY always wins).

Token controls: FAGUN_TERSE=mini extra-short raw tool summaries · FAGUN_FINDING_CAP findings per page · FAGUN_PAGE_CAP pages in chat · FAGUN_DETAIL_CHARS and FAGUN_URL_CHARS trim lines. Use report_path for raw evidence on disk; final answers still include the full user-facing verdict, findings, evidence, fixes, coverage, and report link.

Style controls: fagun_style_prompt gives any model the Fagun response format · fagun_style_schema returns the JSON contract for custom renderers · fagun_render_response converts JSON/plain output into Fagun-style Markdown.

Security orchestration: fagun_security_prompt returns the advanced authorized-testing prompt · list_external_security_tools shows the adapter catalog · recommend_security_tools picks the smallest relevant plan for Loxs, Shannon, Lonkero, recon-skills, BeeXSS, TimeVault, NextSploit, payload corpora, and related tools.

Workflow

What happens after the user types one command.

The complete Fagun path is install once, restart the AI tool, then run fagun deep test URL. Fagun handles browser connection, Chrome DevTools MCP, testing, evidence, and final report generation.

📦

Install

uvx fagun init or pip install fagun && fagun init.

🤖

AI Tool

Claude, Codex, Cursor, Windsurf, or VS Code loads Fagun MCP and skill.

🌐

Chrome MCP

Chrome DevTools MCP auto-connects to signed-in Chrome after Allow.

🧪

Deep Test

Crawl, journeys, forms, links, console, network, a11y, perf, and security.

🔍

Evidence

Findings include proof, severity, reproduction, impact, and fix.

📊

Report

Full answer in chat plus HTML, Markdown, JSON, or JUnit report.

All MCP tools

Everything it can do.

UAT & end-user simulation

ToolWhat it does
list_personas · emulate_personaReconfigure the browser to experience the site as a real user type — 11 presets (first-time, mobile, tablet, slow-internet, low-end, keyboard-only, screen-reader, dark-mode, international…) with real device, network/CPU throttle & media prefs.
run_journeyWalk a full flow step-by-step; per-step pass/fail, screenshot, console errors, failed requests & timing. A step passes only if the browser actually did it.
list_journeys · journey_templateBuilt-in journey scaffolds (login, register, password-reset, search, checkout, contact) to copy and fill in.
keyboard_walkTab through like a keyboard-only user — focus reachability, invisible focus, traps.
readiness_report16-category readiness scorecard + release verdict + prioritized fixes from collected findings.

Browse & debug

ToolWhat it does
open_browserLaunch (or attach to) the browser.
navigateGo to a URL; returns status + title.
click · fill · press_keyDrive the page by selector or visible text.
screenshotSave a PNG (full-page optional).
evaluate_jsRun JS in the page, get JSON back.
get_console · get_networkCaptured console messages / requests (errors & 4xx-5xx only, if asked).
close_browserClose and free resources.

Fagun Style

ToolWhat it does
fagun_style_promptReusable instruction block so any AI model answers in the same Fagun section layout.
fagun_style_schemaJSON response contract for custom frontends that render cards, panels, reports, Jira tickets, and test-case views.
fagun_render_responsePost-process JSON or plain text into Fagun-style Markdown.

Security prompt & external tools

ToolWhat it does
fagun_security_promptAdvanced AI security-engineer prompt for authorized testing, attack-graph planning, evidence validation, remediation, and regression tests.
list_external_security_toolsCatalogs Loxs, Skill Security Scanner, Shannon, Lonkero, recon-skills, coffinxp payload corpora, RFC822 Email Validator, LostFuzzer, img-payloads, customBsqli, BeeXSS, TimeVault, and NextSploit as safe adapters.
recommend_security_toolsSelects the smallest relevant tool plan from the goal and target profile. It plans usage; active probing stays authorized-scope only.

QA & bug hunting

ToolWhat it does
crawlBreadth-first map of the site (same host).
run_qaSingle-page sweep: console, network, WCAG a11y, SEO, load time, visual overflow, clipped text, small targets, and blocking overlays.
check_linksProbe every link; report 4xx / 5xx / unreachable.
test_formsStatic form audit (security / validation / a11y) — no submit.
fuzz_formsActive: fills each field with the labelled test-data catalog, reads the browser's real validity verdict, flags gaps. submit=true opt-in.
list_test_dataShow the test cases used for a field type.
deep_testThe big one: auto-use Chrome DevTools MCP when available, then crawl + per-page QA + forms + full security + real vitals + keyboard + readiness verdict → full final answer plus one report (.md/.html/.json/.xml).
full_qa_sweep · write_reportMulti-page QA / write a report (Markdown, HTML, JSON, or JUnit XML by extension).

Performance, accessibility & security

ToolWhat it does
fingerprintDetect server / hosting / framework / CMS / analytics from real headers + DOM signals — tune the hunt to the stack.
perf_auditReal Core Web Vitals (LCP, CLS, TBT, FCP, TTFB) + a Lighthouse-comparable 0-100 score. No estimates.
a11y_auditDeep WCAG 2.1 incl. real computed color-contrast, ARIA, labels, headings, focus order, zoom.
security_headersCSP, HSTS, X-Frame, nosniff, version/stack leaks.
security_scanFull non-destructive scan (core + advanced, see below).
advanced_securityAdvanced probe battery only.

Authenticated sessions

ToolWhat it does
save_sessionSave the current logged-in session (cookies + localStorage) to disk after you log in.
load_sessionRestore a saved session into a fresh context — crawl / deep test / security scan then run authenticated.
list_sessions · delete_sessionManage saved sessions.

Power & self-healing

ToolWhat it does
connect_chromeTroubleshooting fallback: launch a dedicated debuggable Chrome profile and attach when Chrome DevTools MCP auto-connect is unavailable.
browser_execRun any async Python against the live page — full Playwright power when a built-in tool can't do it.
save_helper · list_helpers · load_helperPersist reusable snippets so the agent gets smarter each run.
fagun_startShow the capability menu.

Test taxonomy

What it tests, top to bottom.

Functional

Core journeys end-to-end, buttons/nav, state persistence, empty & zero-result states.

Runtime / JS

Console errors after load & every interaction, unhandled rejections, null derefs, lazy-chunk failures.

Network / API

4xx/5xx, failed & timed-out calls, CORS, N+1, mixed content.

Forms & input

Required enforcement, type/boundary/edge validation, injection reflection, maxlength, double-submit.

Auth / session

Login errors, session persistence & logout, protected-URL leaks, IDOR smell, password-over-GET.

Accessibility

WCAG 2.1: contrast, labels, ARIA, headings, focus order, zoom, landmarks.

Performance

Real vitals, page weight, long tasks, load time, worst offenders with numbers.

SEO

Title/description length, canonical, viewport, h1 count, noindex, robots.

Security

20+ classes, non-destructive, evidence-backed — see the full list below.

Test data

Every case, labelled & traceable.

fuzz_forms generates the right cases for each field type (email, number, tel, url, date, password, text…). Every value is tagged so a finding always names the exact case that produced it — no guesswork.

CategoryExamples
validwell-formed values that should be accepted — user@example.com, +8801712345678, 2024-02-29
invalidmalformed that should reject — missing @, letters in tel, month 13, non-leap Feb 29
edgeempty, single char, whitespace-only, shortest-legal
boundarylength+1, int32 max+1, 5000-char overflow, 400-digit number, >254-char email
outofboxunicode/emoji, RTL override, cyrillic homoglyph, null byte, format-string tokens, leading zeros, hex, IDN email, SSRF hosts
injection'"><script>, {{7*7}}, ' OR '1'='1, ../../etc/passwd, ;echo, CRLF — observed for handling, never weaponized

Security classes

Bug-bounty-grade, non-destructive.

GET/HEAD/OPTIONS only. No writes, no attacks on third parties, unique harmless markers. Every finding quotes what was actually seen. Set FAGUN_SCOPE to fence probes to authorized hosts. Run only against systems you're authorized to test.

Exposed files (.git/.env/.aws)Leaked secrets (AWS/Stripe/JWT…)CORS misconfigReflected XSSOpen redirectSQLi error signalsCookie flagsCSP qualityClickjackingRisky HTTP methods / TRACEMixed contentMissing SRISensitive-page cachingHost-header injectionCRLF injectionPath traversal / LFISSTI (7*7=49)Command injection signalsGraphQL introspectionError / stack-trace disclosureSensitive data in URLSecurity headers

Example prompts

Just talk to it.

"deep test https://example.com and give me a readiness verdict + report to ./report.html"
"experience acme.store as a slow-internet mobile user — where would they give up?"
"run the checkout journey on staging and tell me if a real user can finish it"
"log into my app, save the session, then deep test the dashboard as that user"
"fingerprint example.com, then security scan it — I own it — and rank by severity"
"a11y audit + keyboard walk this page for WCAG AA and focus issues"

Safety & ethics

Non-destructive by design.

  • No fake results. Observations come from tool output; hypotheses are labelled as such.
  • No data changes by default. Form fuzzing doesn't submit unless you pass submit=true.
  • Authorized targets only. Active security probing is for systems you own or have permission to test.
  • No third-party attacks, no DoS, no mass enumeration. Least-intrusive testing that proves the point.
  • Private & local. Runs on your machine; nothing phones home. Works fully offline with local models.

FAQ

Quick answers.

Does it need an API key?

No. Fagun is a browser tool server. Your AI client provides the model — frontier or local (Ollama).

Which AI tools work?

Any MCP client: Claude Code & Desktop, Cursor, Codex, Windsurf, Cline, VS Code, and more.

Do I need to install Chrome or Python?

No. uv bundles its runtime and Chromium auto-installs on first run.

Is the security scan safe to run?

It's non-destructive (read-only probes). Still — only run it on systems you're authorized to test.

Give your AI a browser.

One command. Real bugs. Real evidence.

$ uvx fagun init
★ Star on GitHub ← Back home