Prufa について
Prufaは、コーディングエージェント向けにWebサイトの監査、ユーザーフローのテスト、回帰監視、カオスQAを提供するMCPサーバーです。機械検証済みの結果を返し、テストやワークスペースの操作をMCP経由で公開します。
主な機能
- 01ページの不具合やコンプライアンスを監査
- 02複数ステップのフローテストを作成・実行
- 03URLやフローの回帰を監視
- 04ユーザーを模したカオステスト
- 05許可済みサイトを巡回してフローを作成
- 06レポートとワークスペースを管理
活用シーン
- 01リリース前にステージングサイトを確認
- 02プルリクエストで重大な回帰を検出
- 03登録や購入のフローをテスト
- 04許可済みサイトのユーザーフローを発見
MCP 対応
監査、レポート、フロー、モニター、gremlin、ディスカバリー、ワークスペースの操作をMCPツールとして公開します。stdioサーバーがコーディングエージェントをPrufa APIに接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
prufa-mcp — バイブコーディングで作成したアプリの QA エージェント
バイブコーディングで作成したアプリは、誰にもレビューされる前にリリースされてしまいます。 2026 年 6 月、私たちは新しく公開された Show HN のプロジェクトを 49 件監査しました — そのうち 38 件には、初日から重大なバグがありました。壊れたサインアップ、気づかれないコンソールエラー、実行されないアナリティクス、何もしない同意バナーなどです。
Prufa は、ユーザーが気づく前に問題を検出するエージェントです。URL を指定すると、急いでいるときに人が見落としがちな項目 — 壊れたフロー、JS コンソールエラー、トラッキングの欠落、同意に関する違反、セキュリティヘッダー、モバイルでのタップ領域、アクセシビリティ — を監査し、機械検証済みの結果を A〜F の評価付きで返します。このリポジトリは、その監査をコーディングエージェントに直接つなぐオープンソースの MCP サーバーです。
30 秒デモ

監査で得られるもの
エージェントに audit https://yourapp.com と指示すると、prufa_run_audit が 1 つの JSON レポートを返します。結果は評価付きのセクションに分類され、各項目には重大度、影響(重要である理由)、修正のヒントが含まれます。実際の出力を抜粋したものです:
{
"url": "https://yourapp.com",
"headline": "2 warnings found",
"counts": { "critical": 0, "warning": 2, "info": 5 },
"sections": [
{ "label": "Works", "grade": "C", "counts": { "warning": 2, "info": 1 } },
{ "label": "Fast", "grade": "A" },
{ "label": "Found", "grade": "A" },
{ "label": "Compliant", "grade": "A" }
],
"check_results": [
{
"check_id": "ux",
"findings": [{
"severity": "warning",
"title": "2 javascript console error(s) during page load",
"impact": "Errors at load time often mean broken features visitors never report.",
"evidence": { "count": 2, "sample": [
"Access to XMLHttpRequest at 'https://api.fontshare.com/...' blocked by CORS policy",
"Failed to load resource: net::ERR_FAILED"
]}
}]
},
{
"check_id": "mobile",
"findings": [{
"severity": "warning",
"title": "13 tap target(s) smaller than 24px",
"impact": "Fingers are not cursors — undersized buttons mean mis-taps on exactly the elements you want pressed.",
"fix_hint": "Give interactive elements at least 24x24px of hit area (WCAG 2.5.8)."
}]
},
{
"check_id": "security",
"findings": [{
"severity": "info",
"title": "no Content-Security-Policy header",
"impact": "Without a CSP, one injected script owns the page — and every third-party tag you load is trusted completely.",
"fix_hint": "Start with a report-only CSP and tighten from real violation reports."
}]
}
],
"report_url": "/r/G82RpzTi_zn-o71_XoMLCprP7uvCQP87"
}
report_url は、同じレポートを HTML 形式で共有できる URL です。完全なペイロードには tracking、consent、seo/aeo、a11y、forms、検出されたユーザーフローも含まれます — 詳しくは以下のOSS で利用できる機能をご覧ください。
インストール
パッケージは PyPI で公開されています。pipx を使ってグローバルにインストールする方法(推奨 — 分離された venv を使い、prufa-mcp バイナリを PATH に公開します)、または pip を使ってプロジェクトの venv にインストールする方法があります:
# Recommended — global install, isolated venv
pipx install prufa-mcp
# Or, into your project venv
pip install prufa-mcp
# Pin a specific version with ==, e.g. pipx install prufa-mcp==0.1.3
# Verify the binary is on PATH
which prufa-mcp
# Should print something like: /Users/you/.local/bin/prufa-mcp
無料の Prufa API キーも必要です。最初の監査は無料で、カードの登録も不要です。
- prufa.dev にサインインします(Google OAuth)
- ダッシュボードで API キーを作成します
エージェントに接続する
MCP サーバーは stdio サブプロセスとして実行され、初回利用時にエージェントによって起動されます。登録する最も簡単な方法は claude mcp add です(Claude Code に組み込まれたコマンドです — ~/.claude.json に正しく設定を書き込みます。~/.claude/mcp.json のパスでは正しく設定されません)。
Claude Code(推奨手順)
# Get the absolute path of the binary (use whatever `which prufa-mcp` returned)
PRUFA_BIN=$(which prufa-mcp)
# Add the MCP server. The token stays out of your shell history.
read -s -p "Prufa API token: " PRUFA_TOKEN && echo
claude mcp add \
--scope user \
--env "PRUFA_API_TOKEN=$PRUFA_TOKEN" \
prufa \
-- "$PRUFA_BIN"
Claude Code を再起動します(設定は起動時に読み込まれます)。その後、次のコマンドで確認します:
/mcp
prufa が Connected と表示され、prufa_run_audit と prufa_get_report が利用可能なツールとして表示されます。
Cursor/Cline/Continue(.mcp.json を手動編集)
プロジェクトのルート、または ~/.config/Claude/ などに設定します:
{
"mcpServers": {
"prufa": {
"command": "/Users/you/.local/bin/prufa-mcp",
"env": {
"PRUFA_API_TOKEN": "your-prufa-api-key"
}
}
}
}
ホストアプリを再起動します。コマンドのパスには絶対バイナリパスを指定する必要があります(~ や $() は使用できません)— MCP 設定では展開されません。
環境変数より設定ファイルを使いたいですか?トークンを
~/.config/prufa/mcp.jsonに記述してください — 詳しくは ADVANCED.md をご覧ください。
使い方
エージェントで次のように指示します:
> audit https://my-vibe-coded-app.com and show me the criticals
> run prufa on my staging deploy
> fetch the report for the audit I just ran
デフォルトの wait=true を指定した prufa_run_audit は、監査が完了するまで待機し、JSON レポートを直接返します — 公開ページの場合、通常 25〜60 秒かかります。wait=false を指定すると、呼び出しはすぐに戻り、キューに追加された状態と、prufa_get_report でポーリングするための share_token が返されます。
得られるもの — エージェント向けの全機能
prufa-mcp は MCP 経由で製品全体の機能(44 個のツール)を公開します。エージェントから Prufa を使えば、ページの監査、複数ステップのフローの実行、リグレッションの監視、カオステスト、全自動の検出、ワークスペースと課金の管理まで、ダッシュボードを介さずに行えます。無料/匿名で使えるツールにはカードは不要です。Pro ツールはプラン未加入の場合、API の 402 とチェックアウトリンクを返します(ツール自体は表示されますが、支払いの制限はサーバー側で適用されます)。
監査とレポート
| ツール | 機能 |
|---|---|
prufa_run_audit(url, wait=true) | 公開ページを一度だけ監査します。処理を待機し、検出結果を JSON で返します。 |
prufa_get_report(run_id?, share_token?) | UUID または /r/ スラッグでレポートを取得します。 |
prufa_get_run(run_id) | 実行のステータスを確認します。 |
prufa_list_runs(limit) | ワークスペース内の最近の実行を一覧表示します。 |
prufa_get_finding(run_id, finding_key?) | 保存済みの検出結果を機械可読形式で取得します。 |
prufa_list_alerts() | アラートの記録(新しい順。抑制されたアラートを含む)を表示します。 |
ワークスペース、使用状況、コンバージョン
| ツール | 機能 |
|---|---|
prufa_setup_workspace(owner_email, name?) | 無料、カード不要の agent_temp ワークスペース(7 日間のトライアル)を作成し、API トークンを一度だけ返します。トークンがすでに設定されている場合は、実際のワークスペースとトライアルの状態を返します。 |
prufa_get_workspace() | 現在のワークスペースと、使用状況および trial ブロックを埋め込んだ情報を取得します。 |
prufa_get_usage() | 使用状況オブジェクトと trial/upsell ブロックを取得します。従量課金対象の操作を行う前に呼び出してください。 |
prufa_workspace_settings(...) | 使用状況の Webhook、自動チャージ、メール/Slack の切り替えを設定します。 |
prufa_set_notifications(cells) | 9 種類のイベント × {email, slack} の通知ルーティングマトリックスを設定します。 |
請求(一括払いを求めることはなく、人が開くための URL を返します)
| ツール | 機能 |
|---|---|
prufa_upgrade_plan(tier) | 有料プラン(starter/pro/team)の Stripe チェックアウト URL を返します。 |
prufa_buy_credits(credits) | 一回限りのクレジットパックの Stripe チェックアウト URL を返します。 |
prufa_billing_portal() | Stripe のカスタマーポータル URL(カード、請求書、解約)を返します。 |
フロー(ユーザージャーニーを記述 → レビュー可能な仕様 → 実行)
| ツール | 機能 |
|---|---|
prufa_create_flow(url, test_case, name?) | テキスト形式のテストケースをドラフト仕様にコンパイルします。 |
prufa_confirm_flow(flow_id, spec?) | ドラフトを承認します。確認済みのフローのみ実行できます。 |
prufa_run_flow(flow_id, credentials?) | 確認済みのフローを実行します。 |
prufa_set_flow_credentials(flow_id, credentials) | {{VAR}} の値を保存します(書き込み専用)。 |
prufa_edit_flow(flow_id, spec) | 仕様を編集します(ドラフトに戻ります)。 |
prufa_get_flow · prufa_list_flows · prufa_delete_flow | 読み取り · 一覧表示 · 削除。 |
モニター(URL またはフローをスケジュールに沿って監視)
| ツール | 機能 |
|---|---|
prufa_start_monitor(url, cadence?, flow_id?) | ワンクリックでモニターを開始し、デプロイフックのシークレットを一度だけ返します。 |
prufa_trigger_monitor(monitor_id) | 今すぐ実行します(レート制限あり)。 |
prufa_pause_monitor · prufa_resume_monitor · prufa_get_monitor · prufa_list_monitors · prufa_delete_monitor | ライフサイクルを管理します。 |
prufa_rotate_monitor_webhook(monitor_id) | デプロイフックのシークレットをローテーションします。 |
prufa_list_monitor_deliveries(monitor_id) | デプロイフックの配信ログと CI スニペットを表示します。 |
Gremlin(カオス QA)
| ツール | 機能 |
|---|---|
prufa_run_gremlin(url, persona?, direction?, credentials?) | 扱いにくいユーザーを模倣し、検出器がどこで問題が起きるかを確認します。許可されない限り変更操作はドライランで実行され、支払いが実行されることはありません。 |
prufa_rerun_gremlin(run_id) | 過去の Gremlin 実行を、同じ意図と保存済みのログイン情報で再実行します。 |
prufa_authorize_domain(host, allow_mutation?) | 自分が所有するホストで、実際の(支払い以外の)書き込みを許可します。 |
prufa_list_gremlin_domains() | 変更操作の許可を一覧表示します。 |
prufa_gremlin_saved_logins() | 以前のログイン情報を再利用します(所有ワークスペースのみ。機密情報)。 |
prufa_promote_gremlin_path(share_token, path_index) | 再現されたバグのパスをドラフトフローに変換します。 |
ディスカバリー(全自動 — クロール、フローを推定してドラフトを作成)
| ツール | 機能 |
|---|---|
prufa_register_discovery_domain(domain) | ドメインを登録し、公開する DNS TXT レコードを取得します。 |
prufa_verify_discovery_domain(domain_id) | DNS の証明を検証します。 |
prufa_list_discovery_domains · prufa_revoke_discovery_domain | 許可済みドメインを管理します。 |
prufa_run_discovery(url) | 検証済みサイトをクロールし、有意義なフローのドラフトを作成します。 |
prufa_get_discovery(discovery_id) | 実行ステータスと、検出されたフローを取得します。 |
さらに、prufa_health_check()(サーバー/API を確認)。
無料トライアルとアップグレードのタイミング
prufa_setup_workspace は無料の agent_temp ワークスペースを作成します。カード登録は不要で、7 日間のトライアルと付属のクレジット枠を利用できます。トライアル中はモニター、ディスカバリー、フルレングスのグレムリン実行を利用できますが、トライアル終了後は有料プランが必要です。
MCP はこの情報をエージェントにわかりやすく伝えます。prufa_get_usage、prufa_setup_workspace、および使用量が計測されるすべての結果には、残り日数とクレジットを示す trial ブロックが含まれます。クレジットが少なくなったときやトライアル終了が近づいたときには、エージェントが伝えられる message_for_human と、呼び出すべきツール(prufa_upgrade_plan / prufa_buy_credits)を正確に示す upsell ブロックも含まれます。Pro ツールをプラン対象外の状態で呼び出すと、checkout_url を含む 402 がそのまま返されます。失敗が黙って発生したり、予期せず請求されたりすることはありません。
例
examples/ に実行可能なスクリプトが 3 つあります。
examples/nextjs-app/— デプロイ済みの Next.js アプリを監査しますexamples/vite-spa/— Vite SPA を監査します(クライアントサイドルーティングの監査に重点を置いています)examples/stripe-checkout/— Stripe チェックアウトページを監査します(決済フローを検証します)
いずれもコピー&ペーストして実行できるデモです。
export PRUFA_API_TOKEN=...
python examples/nextjs-app/audit.py https://your-nextjs-app.com
GitHub Action
Prufa が重大なリグレッションを検出したときに、PR を失敗させます。
# .github/workflows/prufa-scan.yml
name: Prufa scan
on: [pull_request]
jobs:
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- run: pip install prufa-mcp
- name: Run audit
env:
PRUFA_API_TOKEN: ${{ secrets.PRUFA_API_TOKEN }}
run: |
python -c "
import asyncio, sys
from prufa_mcp.audit import run_audit
report = asyncio.run(run_audit(url='${{ secrets.STAGING_URL }}', wait=True))
print(report.get('headline', 'audit complete'))
criticals = report.get('counts', {}).get('critical', 0)
if criticals:
print(f'::error::Prufa found {criticals} critical finding(s)', file=sys.stderr)
sys.exit(1)
"
完全なテンプレートについては、examples/prufa-scan.yml を参照してください。
ライセンス
Apache-2.0。詳しくは LICENSE をご覧ください。コントリビューションを歓迎します。CONTRIBUTING.md をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。