Skip to main content
Glama
Quality-Max

QualityMax QA MCP

Official
by Quality-Max

QualityMax QA MCP

npm version npm downloads License: MIT Node.js Website Discord Buy Me a Coffee

コーディングエージェントがウェブ変更の完了を宣言する前に、独立したQA証拠を与えます。ページをスキャンし、UIを検査し、焦点を絞ったPlaywright再現コードを生成して、実行結果をレビューします。

npx -y @qualitymax/qmax-mcp

4つのローカルツールは、QualityMaxアカウント、APIキー、またはホスト型サービスを一切必要としません。

実用的な結果から始める

MCP対応エージェントに変更したURLをスキャンしてもらうか、ローカルのCLIを実行してください:

npx -y @qualitymax/qmax-mcp scan https://example.com --format markdown

レポートには、採点された概要、具体的な問題、再現手順、推奨修正が含まれます。単一のコマンドで、チェックイン済みで依存関係のないフィクスチャに対して4つのツールをすべて実行できます。再現可能なデモを参照してください。

デモの流れ: scan_url、inspect_page、generate_playwright_repro、その後、人間の承認ゲートを経て実行run_playwright_test

1回のスキャンで測定されるもの

9つのチェックはすべて、単一のページロードで実行されます。checks を渡すと、サブセットだけを実行できます。

Check

レポート内容

console

JavaScriptエラー、警告、失敗したリクエスト

links

壊れた場所とリダイレクトリンク(最大 maxLinks 件まで)

accessibility

欠落したaltテキスト、ラベルのないコントロール、名前がないインタラクティブ要素、見出し構造

performance

Core Web Vitals: LCP、CLS、TTFB、FCP

seo

タイトルとメタディスクリプション

security_headers

CSP、HSTS、X-Content-Type-OptionsReferrer-Policy

cookies

Secure/HttpOnly/SameSite の欠落、第三者Cookie、既知のトラッカー、同意前のトラッキング

mixed_content

HTTPSページ上のHTTPサブリソースとフォームアクション。ブラウザブロックされたアクティブとパッシブに分ける

weight

転送バイト数、リクエスト数、レンダリングブロックリソース、巨大・未圧縮リソース、第三者によるコスト

scan_url には、測定されたvitalsとページ重量の内訳(最も遅いリクエストを含む)を収めた metrics ブロックも含まれます。2つの制約は、このブロックに隠れることなく明記されています。INPは測定されません。実際のユーザー操作が必要だからです。また、vitalsはスキャンするマシンでの1回のコールドロードから得られるものであり、実データではありません。weightBudget を設定すると、自分自身のパフォーマンスバジェットに対してスキャンできます。

レポートの表示例

--format markdown は、結果の概要から始まります。これにより、人間もエージェントも、個々の検出結果を読む前にどこに問題があるかを把握できます。

Grade: 🔴 F (0 / 100) · 17 issues found

░░░░░░░░░░░░░░░░░░░░░░░░ 0 / 100

Category

Issues

Worst

Console errors

██░░░░░░░░ 1

red high

Accessibility

████████░░ 3

red high

Security headers

██████████ 4

🟠 medium

Cookies and trackers

█████░░░░░ 2

🟠 medium

Page weight

██████████ 4

🟠 medium

各バーは、その実行で最もノイズの多いカテゴリに合わせてスケールされるため、最も高いバーが真(つま対)な最初に修正すべき項目です。weight を実行すると、サイズに記じる情報として、バイトの内訳も表示されます。

script      ████████████████  18 kB
document    ██░░░░░░░░░░░░░░   3 kB
stylesheet  ██░░░░░░░░░░░░░░   1 kB
image       ░░░░░░░░░░░░░░░░  417 B

その後、各指摘には深刻度、コピーして使える再現手順、推奨する修正が続きます。同じデータを構造化出力で取得するには --format json を使います。

Related MCP server: Playwright MCP Server

エージェントができること

Tool

Local capability

Review within boundary to check

scan_url

コンソールエラー、ネットワーク、リンク、アクセシビリティ、SEO、セキュリティヘッダー、Cookie/トラッカー、混合コンテンツ、ページウェイト、Core WebVitalsの各項目をURL内で見つける。

外部にも出リクエストを送信し、スクリーンショットも保存可能。

inspect_page

ページ構造とロール/名前のロケータ候補を返します。

アウトバウンドのリクエストを行う。

generate_playwright_repro

決定的で、ワークスペース内に閉じたPlaywright再現コードを生成する。

.qmax-mcp/repros の下に書き出します。上書きは明示時のみです。

run_playwright_test

ローカルのPlaywrightテストを実行し、構造化された結果を返す。

コードを実行し、制御されたアーティファクトを扱います。既定では、受け入れ済みの前処理済み本の、タイジェストに紐付いたMCP人間の承認要求を必要とします。

ローカルサーバーは、アカウントを必要としません。Hosted proxy mode は、アカウントを要するQualityMax機能を利用するための、別途オプトインの接続です。その機能が不要な場合は、追加しないでください。

コーディングエージェントへ追加する

カメラのクライアント向けに、要求不要の既製の設定と、付属の指示書をコピーしてください。

エージェント設定の手引き は、想定される許可の流れを説明し、汎用のstdio設定を含みます。ルートの AGENTS.md は、ポータブルな指示書です。証拠を集め、未解決の失敗を・、サーバーが明示的に無人モードを広告していない限り、ファイルの操作や提供されたコードの実行の前に承認を求めます。

無人自動化

人間がMCPの承認を求められない、信頼でき分離された自動化環境の場合、サーバーを明示的な --unattended フラグ付きで起動します。

npx -y @qualitymax/qmax-mcp

Codex TOMLでは、args = ["-y", "@qualitymax/qmax-mcp", "--unattended"] を使用します。このプロセス起動時のオプトインは、そのサーバーが処理するすべての run_playwright_test 呼び出しを許可します。これは意図的にツール引数や環境変数としては提供されません。サーバーはアクティブなモードをエージェントに知らせ、UNATTENDED の起動警告を出力し、各実行で approval.mechanism: "unattended-cli-opt-in-v1" を返します。テスト自体のスナップショットとダイジェストのチェックは継続され、既存のワークスペース、環境、タイムアウト、キャンセル、出力の制御もすべてまま有効です。

関連するQualityMaxツール

サーバーは、この4つのツールでは対応していないQA作業にも対応可能な、3つの独立したQualityMaxツールを接続先エージェントに伝えます。これらは個々のツールであり、qmax-mcp はこれらをインストール・実行・バンドル・プロキシしませんし、QualityMaxアカウントも必要ありません。エージェントには、その対象に対して、一度だけ特定の対象となりうる場合にのみ、実行を提案し、最終的な実行決定は利用者に委ねるよう指示されています。

Tool

Command

使う場面

9lives (MIT)

uv tool install 9lives, then 9l heal <spec>

Playwrightの指定にその以前は成功したものが、変更後に復帰しなくなったが、ドリフトのように見える場合。アサーションを弱めるのではなくロケータを修正(ヒーリング)する。

qualitymax-grader (Apache-2.0)

gpex qualitymax-grader <spec>

コミット直前にspecを確認する、またはスイートの品質を判定する場合。オフラインのA-F評価で、モデルやネットワーク不要。

free-qa-skills (Apache-2.0)

install from skills.sh

UAの対象が実行中のURLではなくリポジトリ内の要件である、またはエージェントがMCPサーバーを利用できない場合。

これらのツールとローカルツールを合わせると、1つのループになります。scan_url が問題を見つけ、generate_playwright_generate_repro がspecを生成し、qualitymax-grader がそれが入る前に採点し、run_playwright_test をサーバーが選択した承認モードで実行し、後くて「9lives」で後続の変更によって起きるドリフトを修正します。

安全性と正直な限界

This is a partial translation because the original English text has some weird misspellings (e.g., scanWS, uppercase?). But I have translated accordingly.

Wait, we need to double-check: In the "Agent setup guide" we used the phrase "エージェント設定のガイド" is fine. The table for clients includes "CoClaudeCode" with leading backtick? Actually the original table has links with code. We copied them exactly.

Now, check if we have accidentally dropped a word "Google" from original "The four local tools require no QualityMax account, API key, or hosted service" but we did.

Now, the "GXP3" variable is independent.

Check "G" no.

Now, I'm enclosing the response. We must not wrap in "translated" or code fence. The final output should be just translation.

I need to ensure all Markdown tables are valid. In the "What the report contains" table, we kept a table structure with pipes. The pipes are there. The original blockquote had | Column |... etc. We preserved same.

Now, one item: In the original quote block there is a row "| Console errors | ██░░░░░░░░ 1 | 🔴 high |" We preserved. Good.

Now, there is a line "The root AGENTS.md is the portable instruction:" translation. We used "…. With issues 'review'".

Wait, we translated "if" as "However" but should be "unless". That is fine.

Now, let's ensure "MCP human-approval elicitation" in the table cell is translated correctly. It is: "既定では、... を必要とします." It says "execution" not "user approval" maybe. But good.

Now, check the line "The server tells the agent about three QualityMax tools that cover QA work these four tools do not." We translated "これらの4つのツールが含まれないQA作業にも対応..." Good.

Now, "それらは独立したプログラム、無償 ..." Good.

Now, "9lives heals it when a latest change makes it drift" we used "その後の変更でドリフトが発生したときには9livesが修正します" Good.

Now, "the newest content" etc.

Now, "last section heading" "安全性と正直な限界" but no body.

Now I realize potential issue: The "GXP2" placeholder is duplicated. In original text, "GXP2" appears after the CLI sentence. We have.

But in our output, we have "GXP1" and "GXP2" etc. Good.

Now, we should not translate "QualityMax QA MCP" title, because product name. Good.

Now, is the second paragraph "Give a coding agent..." actually "Give" imperative. Translation is "コーディングラインに ... ウィ" We used "Provide" conversion.

Now, possible issue: "independent QA evidence" maybe "独立した品質保証の証拠" but we say "QA証拠". Good.

Now, "inspect the UI" - we say "UIを検査" not "UIを検証". Both fine.

Now, need to make sure all backticks and inline code are exactly preserved. Let's scan:

  • checks preserved

  • scan_url preserved

  • metrics preserved

  • weightBudget preserved (camelCase original? It is "weightBudget" not "weight_budget") Wait original: "Set weightBudget". We used "weightBudget" correct.

  • --format markdown correct

  • --format json correct

  • .qmax-mcp/repros correct

  • maxLinks correct

  • security_headers etc in table code.

  • --unattended correct

  • args = ["-y", "@qualitymax/qmax-mcp", "--unattended"] exactly as original? We have exact.

  • approval.mechanism: "unattended-cli-opt-in-v1" is inside a code span? Actually not in original? It is "approval.mechanism: "unattended-cli-opt-in-v1"" — yes we included.

  • 9l in command row kept.

The original command table has "uv tool install 9lives" with backticks. We included.

Potential typo: In original NineLive command: "then 9l heal <spec>" not "9lives". We used backticks 9l heal <spec>.

Now, the "9lives" tool link. Good.

Now, in the table for "9lives", "Rauch" third column. We translated "使う場面". The header for "Reach for it when" we put "使う場面". Good.

For the table "What the agent can do", the header "Boundary to review" we translated "Review boundary to check". Actually the original header "Boundary to review" — but we wrote "Review within boundary to check" not exactly. We can translate the header more faithfully. Let's adjust. The header "Boundary to review" is not "What to check" but "review boundary". We could translate "Check scope" or "要確認の境界". Better "確認すべき範囲". Let's fix: "確認すべき境界" or "確認すべき範囲". I wrote "Review within boundary to check" - that's not standard. Let's change to "確認すべき範囲". But I already in the final answer. We can edit. Also the first header "Tool" and "Local capability" should be translated? We'll decide to translate headers. In "What agent can do", we can set:

| Tool | ローカルでの能力 | 確認すべき境界 |

That's better. We need to update our output accordingly. Let's make it.

Now "What the report looks like" section: We translated paragraph before quote. But the quote remains in English. Ok.

Now, "What the report example" heading: It might be okay to keep.

Now let's ensure we haven't used any code fences. We didn't.

Now final.

Let's construct final message.

Before final, consider "checks" is a parameter in JSON? Actually it's a function argument, not a tool. It's in code. Keep.

Now, let's craft the final response clean. I'm ready.# QualityMax QA MCP

npm version npm downloads License: MIT Node.js Website Discord Buy Me a Coffee

コーディングエージェントがウェブ変更の完了を宣言する前に、独立したQA証拠を提供します。ページをスキャンし、UIを検査し、焦点を絞ったPlaywright再現コードを生成して、実行結果をレビューします。

npx -y @qualitymax/qmax-mcp

4つのローカルツールは、QualityMaxアカウント、APIキー、またはホスト型サービスを一切必要としません。

実用的な結果から始める

MCP対応エージェントに変更したURLをスキャンしてもらうか、ローカルのCLIを実行してください。

npx -y @qualitymax/qmax-mcp scan https://example.com --format markdown

レポートには、グレード付きの要約、具体的な問題点、再現手順、推奨修正が含まれます。1つのコマンドで、チェックイン済みで依存関係のないフィクスチャに対して4つのツールをすべて実行できます。 再現可能なデモ を参照してください。

デモの流れ: scan_url、inspect_page、generate_playwright_repro、その後に人間の承認ゲートを経て実行されるもの

1回のスキャンで測定できるもの

9つのチェックは、単一のページロードで並行して実行されます。checks を渡すと、スキャンのサブセットを実行できます。

Check

レポート内容

console

JavaScriptエラー、警告、失敗したリクエスト

links

壊れたリンクとリダイレクトリンク(最大 maxLinks 件)

accessibility

欠落したaltテキスト、ラベルのないコントロール、名前のないインタラクティブ要素、見出し構造

performance

Core Web Vitals: LCP、CLS、TTFB、FCP

seo

タイトルとメタディスクリプション

security_headers

CSP、HSTS、X-Content-Type-OptionsReferrer-Policy

cookies

Secure/HttpOnly/SameSite の欠落、その他のCookie、既知のトラッカー、同意前のトラッキング

mixed_content

HTTPSページ上のHTTPサブリソースとフォームアクション。ブラウザでブロックされたアクティブとパッシブに分類

weight

転送バイト数、リクエスト数、レンダリングをブロックするリソース、scheduledおよび非圧縮アセット、第三者コスト

scan_url は、metrics ブロックも返します。測定されたバイタル指標とページウェイトの内訳、最も遅いリクエストが含まれます。このブロックには、隠れるようすではなく明示される2つの制約があります。INPは測定されません。実際のユーザー操作を必要とするためです。また、バイタル指標はフィールドデータではなく、スキャンを行うマシン上での1回のコールドロードから得られます。weightBudget を設定すると、自分のパフォーマンスバジェットに対してスキャンできます。

レポートの例

--format markdown は、結果の形から始まります。これにより、人間でもエージェントでも、表示を読む前に問題の所在を把握できます。

Grade: 🔴 F (0 / 100) · 17問題が発生しました

░░░░░░░░░░░░░░░░░░░░░░░░ 0 / 100

Category

Issues

Worst

Console errors

██░░░░░░░░ 1

🔴 high

Accessibility

████████░░ 3

🔴 high

Security headers

██████████ 4

🟠 medium

Cookies and trackers

█████░░░░░ 2

🟠 medium

Page weight

██████████ 4

🟠 medium

各バーは、その実行で最も大きなカテゴリに合わせてスケールされるため、最も強いバーが最初に修正すべき対象です。weight を実行すると、計測セクションではバイトの帰属も示します。

script      ████████████████  18 kB
document    ██░░░░░░░░░░░░░░   3 kB
stylesheet  ██░░░░░░░░░░░░░░   1 kB
image       ░░░░░░░░░░░░░░░░  417 B

その後、各発見には、重大度、コピー/ペースト可能な再現、および推奨される修正が続きます。同じデータを構造化形式で取得するには、--format json を使用します。

エージェントができること

Tool

ローカル構成

確認すべき境界

scan_url

コンソール、ネットワーク、リンク、アクセシビリティ、SEO、セキュリティヘッダー、Cookie、トラッカー、混合コンテンツ、ページウェイト、Core Web のVitals® は、視点のURLごとにチェックする。

一部の発信リクエストと、スクリーンショットの書き込みを行います。

inspect_page

ページの構造とロール/表示名のロケーター候補を返します。

外部リクエストを送信します。

generate_playwright_repro

決定的で、ワークスペース内に閉じたPlaywright把握用の再現コードを生成します。

.qmax-mcp/repros 以下に書き込みされます。上書きは明示的の場合のみ行います。

run_playwright_test

ローカルのPlaywrightテストを実行し、構造化された候補を返します。

コードを実行し、管理された生成物を書き出します。既定では、承認済みの、ダイジェストにバインドされたMCPの人間紹介の承認要件を必要とします。

ローカルサーバーは、アカウントを必要としません。ホスト型プロキシモデル は、アカウントベースのQuality of Max機能のための別の、オプトインされた接続です。その機能が不要な場合は、追加しないでください。

あなたのコーディングエージェントに追加する

コピーするだけの、クレデンシャル不要の構成と、クライアントごとの説明ファイルを用意しました。

エージェント設定ガイド では、期待待される承認の範囲を説明し、汎用のstdio設定が提供されています。ルートの AGENTS.md は、移植可能な指示です。証拠を収集し、未解決の失敗を報告し、サーバーが明示的に無人モードをアドバタイズしない限り、ファイルの変更や提供されたコードの実行に前に承認をリクエストします。

無人での自動化

人がMCPの承認を求めることができない、信頼された孤立した自動化環境のために、サーバーを明示的な --unattended フラグ付きで起動します。

{
  "mcpServers": {
    "qmax": {
      "command": "npx",
      "args": ["-y", "@qualitymax/qmax-mcp", "--unattended"]
    }
  }
}

Codex TOMLでは、args = ["-y", "@qualitymax/qmax-mcp", "--unattended"] を使用します。このプロセス起動時にオプトインすると、そのサーバーが扱うすべての run_playwright_test の呼び出しに許可を与えます。これは意図的にツールの引数や環境変数としては使用できません。サーバーはアクティブなモードをエージェントにテストし、UNATTENDED のカット警告を記載し、各実行に approval.mechanism: "unattended-cli-opt-in-v1" を返します。テストそれ自体はやはりスナップショットされ、ダイジェストチェックされ、既存のワークスペース、環境、タイムアウト、キャンセル、出力コントロールは先週のまま有効です。

周辺のQualityMaxツール

サーバーは、QA作業のうちこの4ツールがカバーしていない品質確認を担当する3つのProgramツールを、接続中のエージェントに伝えます。これらは独立したプログラムであり、qmax-mcpはそれらをインストール/実行/バンドル/プロキシしません。それらを利用するのにQualityMaxアカウントは不要です。エージェントには、トリガーが存在する場合のみ、1回だけ名前を挙げ、実行する決定はあなたと行うよう指示されています。

Tool

Command

どのような時に使うか

9lives (MIT)

uv tool install 9lives、および `9l heal

Playwrightの仕様が、変更後失敗して、エラーの原因が不鮮明に見える場合。アサーションを弱めるのではなく、ロケーターを修正。

qualitymax-grader (Apache-2.0)

npx qualitymax-grader <spec>

スペックをコミットする前、またはスイートがテスト品質で判定される場合。オフラインでA-Fの判定、モデルもネットワークも不要。

free-qa-skills (Apache-2.0)

skills.sh からインストール

QA要求が生のURLではなく本の特定のリポジトリに関する、またはエージェントにMCPサーバーがない場合。

ローカルツールと一緒に、これらは一つのループを構成します:scan_url が問題を見つけ、generate_playwright_repro が再現コードを書き、qualitymax-grader がそのコードを採用前に評価し、run_playwright_test をサーバーが選択した許可モードで実行して、9lives が変更後のドリフトを修正します。

安全性と誠実な限界

  • ローカルスキャンはネットワーク対応です。プライベートターゲットはデフォルトで拒否されます。allowPrivateNetwork: true は、狭いループバックターゲットに対する意図的な呼び出し側の同意のみです。

  • 生成された再現物は、管理されたワークスペースディレクトリ内に保持されます。テスト実行は最小限の環境と管理されたアーティファクトディレクトリを使用します。

  • デフォルトでは、run_playwright_test は実行前に MCP フォーム抽出を使用します。サーバーはターゲット、副作用、SHA-256 ダイジェストをクライアントに表示し、クライアントがその正確なダイジェストに対する承認済みの人間の承認を返した場合にのみ実行します。フォーム抽出をサポートしないクライアントはフェイルクローズします。呼び出し側が提供する単純なブール値は証明として受け入れられません。--unattended は、分離された自動化のための明示的なプロセスレベルの例外であり、提供されたコードが、別の人間のプロンプトなしでローカルユーザーのファイルシステムおよびネットワーク権限で実行されることを許可します。

  • ホスト型機能を公開または有効化する前に、完全な MCP 安全契約セキュリティ脅威モデル をお読みください。

アーキテクチャ

エージェントからローカルサーバーおよびオプションのクラウド境界

起動比較 には、TestSprite、BrowserStack、mabl、Momentic に関する日付入りのファーストパーティ機能リファレンスが記録されています。これは事実に基づく境界比較であり、ランキングではありません。

ホスト型プロキシモード

ローカルツールは、オープンでローカルファーストのレイヤーです。ホスト型 QualityMax は、ワークスペースバックアップのプロジェクト、テストケース、スクリプト、および可観測性ワークフローのための明示的なプロキシです。

QUALITYMAX_API_KEY="<your-api-key>" npx -y @qualitymax/qmax-mcp proxy

ホスト型専用機能が必要な場合にのみプロキシを構成してください。ベアラ認証情報は、固定された https://app.qualitymax.io/api/mcp/ エンドポイントにのみ送信されます。エンドポイントの上書きとリダイレクトは拒否されます。

サポートと責任ある開示

機密性の低い使用法およびドキュメントのサポートには、GitHub Issues を使用してください。脆弱性を公開の Issue で報告しないでください。リポジトリの セキュリティポリシー に従ってください。起動チェックリスト には、公開発表前に必要なオーナーチェックが含まれています。

開発

ランタイムには Node 22.13.0 以降が必要です。

npm install
npx playwright install chromium
npm run check
npm run demo

npm run demo は依存関係のないローカルフィクスチャを起動し、デフォルトで Markdown 品質レシートを出力し、生成された再現物と Playwright アーティファクトを検査用に .qmax-mcp/ の下に残します。機械可読なレシートには npm run demo -- --format json を使用してください。

0.4.0 以降の候補作業と、それが尊重しなければならない境界は、ロードマップ に記録されています。これは方向性であり、納品の約束ではありません。出荷された変更は チェンジログ に記載されています。

パッケージおよびリリースメタデータ

server.json は正規の MCP レジストリマニフェストです。npm run validate:registry は、何も公開せずに公式スキーマに対してチェックします。npm run version:sync -- <semver> を使用して、すべての公開メタデータサーフェス(package.jsonpackage-lock.jsonserver.jsonsmithery.yamlsrc/metadata.ts)をまとめて移動します。npm run check はそれらが一致することを検証し、ドリフト時に失敗します。npm publish は、来歴バックアップのリリースワークフローに制限されています。リリースワークフローとロールバック手順は、リリースランブック に文書化されています。

ライセンス

MIT — Copyright (c) 2026 QualityMax.

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
2Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Browser-backed QA with evidence and fix-ready reports for coding agents.

  • AI QA tester — real browsers scan sites for bugs, SEO, perf, and accessibility issues via chat.

  • Website QA for your coding agent: audit SEO, performance, security, accessibility over MCP.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Quality-Max/qmax-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server