npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

qa-mcp-verity

v1.0.0

Published

MCP server for QA automation — run tests, analyze URLs, generate test cases, self-improving optimization

Readme

Verity

Verity is an MCP server for QA automation. It connects your AI client directly to your test suite — probe a URL for testable UI modules, generate compilable test files, execute the suite, diagnose failures, and receive a prioritized improvement plan. All through natural language.


Use Cases

  • Test generation from a live page: Point Verity at a URL. It opens headless Chromium, maps the DOM into typed modules (forms, navs, dialogs, CTAs), intercepts live API calls, and generates a runnable test file with pre-filled selectors and assertions — not a stub.
  • Failure diagnosis: After a failing run, ask for failure details. Verity returns the error message, every Playwright API call extracted from the trace, and direct paths to the screenshot, video, and trace file.
  • Self-improving suite health: After enough runs, ask for an optimization plan. Verity classifies each test as broken, flaky, slow-regressing, or stable — and surfaces coverage gaps from previously analyzed URLs.
  • Domain-aware test generation: Add a qa-knowledge.md with your business rules and historical bugs. Generated tests embed that context directly as comments, escaping generic stub output.

Installation

npm install -g qa-mcp-verity

Or run without a global install:

npx qa-mcp-verity

Client Setup

Two environment variables are required for every client:

| Variable | Description | |---|---| | TEST_RUNNER | Test framework to use. Default: playwright | | QA_PROJECT_ROOT | Absolute path to the project under test |

Cursor

Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (per-project):

{
  "mcpServers": {
    "verity": {
      "command": "npx",
      "args": ["qa-mcp-verity"],
      "env": {
        "TEST_RUNNER": "playwright",
        "QA_PROJECT_ROOT": "/absolute/path/to/your-project"
      }
    }
  }
}

Open Cursor Settings → MCP and confirm Verity appears as connected.

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "verity": {
      "command": "npx",
      "args": ["qa-mcp-verity"],
      "env": {
        "TEST_RUNNER": "playwright",
        "QA_PROJECT_ROOT": "/absolute/path/to/your-project"
      }
    }
  }
}

Restart Claude Desktop after saving.

Claude Code

claude mcp add verity npx qa-mcp-verity \
  -e TEST_RUNNER=playwright \
  -e QA_PROJECT_ROOT=/absolute/path/to/your-project

Verify the server is registered:

claude mcp list

Gemini CLI

Edit ~/.gemini/settings.json:

{
  "mcpServers": {
    "verity": {
      "command": "npx",
      "args": ["qa-mcp-verity"],
      "env": {
        "TEST_RUNNER": "playwright",
        "QA_PROJECT_ROOT": "/absolute/path/to/your-project"
      }
    }
  }
}

Codex CLI

Edit ~/.codex/config.toml:

[mcp_servers.verity]
command = "npx"
args    = ["verity"]

[mcp_servers.verity.env]
TEST_RUNNER     = "playwright"
QA_PROJECT_ROOT = "/absolute/path/to/your-project"

Supported Runners

| TEST_RUNNER value | Framework | Generated test format | |---|---|---| | playwright / playwright-ts | @playwright/test | .spec.ts | | pytest / pytest-playwright | pytest-playwright | .py | | jest | Jest | .test.ts | | cypress | Cypress | .cy.ts | | go / go-test | go test | _test.go |


Tools

Discovery

| Tool | Description | |---|---| | get_runner_info | Returns the active runner and all available options. Call this first in every session. | | list_tests | Native test collection from the active runner. |

Execution

| Tool | Description | |---|---| | run_tests | Run the full suite. Accepts filter, browser (chromium/firefox/webkit), and headed. | | run_failed | Re-run only the tests that failed in the last run. | | codegen | Open an interactive Playwright recording session. |

Reporting

| Tool | Description | |---|---| | get_test_report | Cached summary from the last run (total, passed, failed, skipped, duration). | | get_failure_details | Full failure packet: error, trace steps, screenshot/video/trace paths. Optionally filter by test_id. | | get_test_history | Per-run pass rates over the last N runs, oldest-first for trend analysis. | | generate_html_report | Self-contained HTML report with screenshots inlined. No external dependencies. |

Generation

| Tool | Description | |---|---| | analyze_url | Probe a URL with headless Chromium. Returns typed modules with selectors and candidate test cases, plus live API calls and layout overflow warnings. | | generate_test | Generate a runnable test file from a description. Pass a module from analyze_url to get pre-filled selectors instead of a stub. | | auto_generate_tests | analyze_url + generate_test in one call — one test per detected module. |

Optimization

| Tool | Description | |---|---| | get_optimization_plan | Three-layer analysis: broken/flaky/slow tests, MCP usage patterns, AI test adoption rate. Written to optimization-plan.md in the project root. |

Domain Knowledge

| Tool | Description | |---|---| | get_qa_context | Read qa-knowledge.md — business rules that produce domain-aware tests. Accepts an optional section name. | | init_qa_knowledge | Scaffold a starter qa-knowledge.md in the project root. |

Resources

| URI | Description | |---|---| | verity://report/html | Latest test report as HTML | | verity://report/json | Latest report.json | | verity://report/optimization | Latest optimization-plan.md |


Configuration

| Variable | Default | Description | |---|---|---| | TEST_RUNNER | playwright | Active test framework | | QA_PROJECT_ROOT | ./tests_project | Root directory for all file I/O | | QA_TIMEOUT_SECONDS | 600 | Subprocess timeout in seconds | | QA_KNOWLEDGE_FILE | <root>/qa-knowledge.md | Override path for the domain knowledge file |


Domain Knowledge

Generated tests use surface behavior by default — they fill forms, click buttons, and check for visible elements. To make them reflect your business rules:

# In your AI client:
init_qa_knowledge

Edit the scaffolded qa-knowledge.md to add business rules, historical bug regression points, exact UI error strings, and user journeys. On the next generate_test call, that context is embedded directly into the generated file.

See docs/qa-knowledge.example.md for a worked example across e-commerce, SaaS, content, and financial domains.


Development

npm install
npm run build      # compile src/ → dist/
npm run typecheck  # type-check without emitting
npm run dev        # watch mode

See docs/framework.md for the architecture reference: data flows, internal report format, security model, and how to add a new runner.


License

MIT