QualityMax QA MCP
OfficialQualityMax QA MCP
コーディングエージェントがウェブ変更の完了を宣言する前に、独立したQA証拠を与えます。ページをスキャンし、UIを検査し、焦点を絞ったPlaywright再現コードを生成して、実行結果をレビューします。
npx -y @qualitymax/qmax-mcp4つのローカルツールは、QualityMaxアカウント、APIキー、またはホスト型サービスを一切必要としません。
実用的な結果から始める
MCP対応エージェントに変更したURLをスキャンしてもらうか、ローカルのCLIを実行してください:
npx -y @qualitymax/qmax-mcp scan https://example.com --format markdownレポートには、採点された概要、具体的な問題、再現手順、推奨修正が含まれます。単一のコマンドで、チェックイン済みで依存関係のないフィクスチャに対して4つのツールをすべて実行できます。再現可能なデモを参照してください。
1回のスキャンで測定されるもの
9つのチェックはすべて、単一のページロードで実行されます。checks を渡すと、サブセットだけを実行できます。
Check | レポート内容 |
| JavaScriptエラー、警告、失敗したリクエスト |
| 壊れた場所とリダイレクトリンク(最大 |
| 欠落したaltテキスト、ラベルのないコントロール、名前がないインタラクティブ要素、見出し構造 |
| Core Web Vitals: LCP、CLS、TTFB、FCP |
| タイトルとメタディスクリプション |
| CSP、HSTS、 |
|
|
| HTTPSページ上のHTTPサブリソースとフォームアクション。ブラウザブロックされたアクティブとパッシブに分ける |
| 転送バイト数、リクエスト数、レンダリングブロックリソース、巨大・未圧縮リソース、第三者によるコスト |
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
██░░░░░░░░1red high
Accessibility
████████░░3red 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 |
| コンソールエラー、ネットワーク、リンク、アクセシビリティ、SEO、セキュリティヘッダー、Cookie/トラッカー、混合コンテンツ、ページウェイト、Core WebVitalsの各項目をURL内で見つける。 | 外部にも出リクエストを送信し、スクリーンショットも保存可能。 |
| ページ構造とロール/名前のロケータ候補を返します。 | アウトバウンドのリクエストを行う。 |
| 決定的で、ワークスペース内に閉じたPlaywright再現コードを生成する。 |
|
| ローカルのPlaywrightテストを実行し、構造化された結果を返す。 | コードを実行し、制御されたアーティファクトを扱います。既定では、受け入れ済みの前処理済み本の、タイジェストに紐付いたMCP人間の承認要求を必要とします。 |
ローカルサーバーは、アカウントを必要としません。Hosted proxy mode は、アカウントを要するQualityMax機能を利用するための、別途オプトインの接続です。その機能が不要な場合は、追加しないでください。
コーディングエージェントへ追加する
カメラのクライアント向けに、要求不要の既製の設定と、付属の指示書をコピーしてください。
Claude Code | Cursor | Codex | VS Code |
エージェント設定の手引き は、想定される許可の流れを説明し、汎用のstdio設定を含みます。ルートの AGENTS.md は、ポータブルな指示書です。証拠を集め、未解決の失敗を・、サーバーが明示的に無人モードを広告していない限り、ファイルの操作や提供されたコードの実行の前に承認を求めます。
無人自動化
人間がMCPの承認を求められない、信頼でき分離された自動化環境の場合、サーバーを明示的な --unattended フラグ付きで起動します。
npx -y @qualitymax/qmax-mcpCodex 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) |
| Playwrightの指定にその以前は成功したものが、変更後に復帰しなくなったが、ドリフトのように見える場合。アサーションを弱めるのではなくロケータを修正(ヒーリング)する。 |
qualitymax-grader (Apache-2.0) |
| コミット直前に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:
checkspreservedscan_urlpreservedmetricspreservedweightBudgetpreserved (camelCase original? It is "weightBudget" not "weight_budget") Wait original: "SetweightBudget". We used "weightBudget" correct.--format markdowncorrect--format jsoncorrect.qmax-mcp/reproscorrectmaxLinkscorrectsecurity_headersetc in table code.--unattendedcorrectargs = ["-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.9lin 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
コーディングエージェントがウェブ変更の完了を宣言する前に、独立したQA証拠を提供します。ページをスキャンし、UIを検査し、焦点を絞ったPlaywright再現コードを生成して、実行結果をレビューします。
npx -y @qualitymax/qmax-mcp4つのローカルツールは、QualityMaxアカウント、APIキー、またはホスト型サービスを一切必要としません。
実用的な結果から始める
MCP対応エージェントに変更したURLをスキャンしてもらうか、ローカルのCLIを実行してください。
npx -y @qualitymax/qmax-mcp scan https://example.com --format markdownレポートには、グレード付きの要約、具体的な問題点、再現手順、推奨修正が含まれます。1つのコマンドで、チェックイン済みで依存関係のないフィクスチャに対して4つのツールをすべて実行できます。 再現可能なデモ を参照してください。
1回のスキャンで測定できるもの
9つのチェックは、単一のページロードで並行して実行されます。checks を渡すと、スキャンのサブセットを実行できます。
Check | レポート内容 |
| JavaScriptエラー、警告、失敗したリクエスト |
| 壊れたリンクとリダイレクトリンク(最大 |
| 欠落したaltテキスト、ラベルのないコントロール、名前のないインタラクティブ要素、見出し構造 |
| Core Web Vitals: LCP、CLS、TTFB、FCP |
| タイトルとメタディスクリプション |
| CSP、HSTS、 |
|
|
| HTTPSページ上のHTTPサブリソースとフォームアクション。ブラウザでブロックされたアクティブとパッシブに分類 |
| 転送バイト数、リクエスト数、レンダリングをブロックするリソース、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 | ローカル構成 | 確認すべき境界 |
| コンソール、ネットワーク、リンク、アクセシビリティ、SEO、セキュリティヘッダー、Cookie、トラッカー、混合コンテンツ、ページウェイト、Core Web のVitals® は、視点のURLごとにチェックする。 | 一部の発信リクエストと、スクリーンショットの書き込みを行います。 |
| ページの構造とロール/表示名のロケーター候補を返します。 | 外部リクエストを送信します。 |
| 決定的で、ワークスペース内に閉じたPlaywright把握用の再現コードを生成します。 |
|
| ローカルのPlaywrightテストを実行し、構造化された候補を返します。 | コードを実行し、管理された生成物を書き出します。既定では、承認済みの、ダイジェストにバインドされたMCPの人間紹介の承認要件を必要とします。 |
ローカルサーバーは、アカウントを必要としません。ホスト型プロキシモデル は、アカウントベースのQuality of Max機能のための別の、オプトインされた接続です。その機能が不要な場合は、追加しないでください。
あなたのコーディングエージェントに追加する
コピーするだけの、クレデンシャル不要の構成と、クライアントごとの説明ファイルを用意しました。
Claude Code | Cursor | Codex | VS Code |
エージェント設定ガイド では、期待待される承認の範囲を説明し、汎用の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) |
| Playwrightの仕様が、変更後失敗して、エラーの原因が不鮮明に見える場合。アサーションを弱めるのではなく、ロケーターを修正。 |
qualitymax-grader (Apache-2.0) |
| スペックをコミットする前、またはスイートがテスト品質で判定される場合。オフラインで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 demonpm 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.json、package-lock.json、server.json、smithery.yaml、src/metadata.ts)をまとめて移動します。npm run check はそれらが一致することを検証し、ドリフト時に失敗します。npm publish は、来歴バックアップのリリースワークフローに制限されています。リリースワークフローとロールバック手順は、リリースランブック に文書化されています。
ライセンス
MIT — Copyright (c) 2026 QualityMax.
Maintenance
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
- AlicenseAqualityFmaintenanceEnables AI assistants to inspect, debug, and test web pages using Playwright. Provides comprehensive DOM inspection, visibility debugging, layout validation, and element finding capabilities in real browser environments.34923MIT
- FlicenseNot gradedqualityDmaintenanceEnables web browser automation and inspection using structured data instead of screenshots, allowing AI agents to interact with web pages programmatically through the Playwright framework.
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to control web browsers through Playwright automation, providing 50+ tools for navigation, interaction, testing, accessibility audits, and visual testing across Chromium, Firefox, and WebKit.10MIT
- AlicenseNot gradedqualityBmaintenanceEnables autonomous web QA by exposing Playwright browser control as MCP tools for navigation, accessibility snapshotting, interaction, and bug detection.3MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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