VibeCheck Web tester について
VibeShift は、AI コーディングアシスタント向けのセキュリティエージェントです。MCP を通じて Cursor、GitHub Copilot、Claude Code などと連携し、AI が生成したコードをコードベースに入る前に検査します。Playwright によるWebテストの録画、実行、探索にも対応します。
主な機能
- 01AI 生成コードの自動セキュリティスキャン
- 02Semgrep による静的解析(SAST)
- 03Nuclei や ZAP による動的チェック
- 04自然言語からの Playwright テスト録画
- 05録画した JSON テストの確定的な実行
- 06スクリーンショットとコンソールログを含む結果の返却
活用シーン
- 01コミット前に AI 生成コードの SQL インジェクションや XSS を確認
- 02ログインフローを録画し、リグレッションテストとして再実行
- 03セキュリティレポートに基づいてアシスタントが修正を適用
MCP 対応
MCP サーバーとして動作し、セキュリティスキャン、テスト録画、テスト実行、テスト探索のツールを AI コーディングアシスタントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
VibeShift:バイブコーディングを行う人のためのセキュリティエンジニア
VibeShift は、AI コーディングアシスタント(Cursor、GitHub Copilot、Claude Code など)とシームレスに連携するように設計された、インテリジェントなセキュリティエージェントです。自動化されたセキュリティエンジニアとして、AI が生成したコードを分析し、脆弱性を特定して、脆弱なコードがコードベースに取り込まれる前に、AI による修正を支援します。MCP(Model Context Protocol) を活用し、既存の AI コーディング環境内でスムーズに動作します。
問題点: AI コーディングアシスタントは開発を大幅に加速させますが、目立たないものから明白なものまで、セキュリティ上の脆弱性を含むコードを生成することもあります。AI が生成したコードすべてを手動でレビューしてセキュリティ上の問題を見つけるのは時間がかかり、ミスが発生しやすく、AI 開発の速度に対応できません。このような「バイブ主導の開発」では、アプリケーションが脆弱性にさらされるおそれがあります。
解決策:GroundNG の VibeShift は、AI コーディングアシスタントが次のことをできるようにすることで、この重大なセキュリティのギャップを埋めます。
- AI 生成コードを自動分析: AI アシスタントがコードを生成または変更すると、VibeShift を起動して、一連のツール(SAST、DAST のコンポーネント)と AI によるチェックを使用したセキュリティ分析を実行できます。
- セキュリティ脆弱性を特定: AI が生成したコードスニペットや大きなコードブロックに含まれる、一般的な脆弱性から複雑な脆弱性(XSS、SQLi、安全でない設定、ロジック上の欠陥など)までを特定します。
- AI による修正を支援: 詳細なフィードバックと脆弱性情報を AI コーディングアシスタントに直接提供し、修正案の提示や自動適用を可能にします。
- セキュリティのフィードバックループを構築: 開発者と AI アシスタントが潜在的なセキュリティリスクをすぐに把握できるようにし、迅速な修正と学習を可能にします。
これにより、AI 支援コーディングにおける「シフトレフト」型のセキュリティが実現し、開発ワークフローにセキュリティを直接組み込んで、より安全なコードをより速くリリースできるようになります。
デモ(クリックして動画を再生)
機能
- MCP 統合: Cursor/Windsurf/Github Copilot/Roo Code とシームレスに統合します
- セキュリティスキャンの自動化: AI によるコードの生成/変更時に起動し、次の処理を実行します:
- 静的コード解析(SAST): Semgrep などのツールを統合し、ソースコード内の脆弱性を検出します。
- 動的解析(DAST プリミティブ): 実行中のコンポーネントを対象に、Nuclei や ZAP などのツールを呼び出してチェックできます(該当する場合)。
- AI 支援テスト記録: 自然言語の説明から Playwright ベースのテストスクリプトを生成します(自動モード)。
- 決定論的なテスト実行: 記録済みの JSON テストファイルを Playwright で確実に実行します。
- AI を活用したテスト検出: Web サイトをクロールし、任意の LLM(OpenAI 互換形式)を活用して、検出したページのテスト手順を提案します。
- 回帰テスト: 既存のテストスイートを簡単に実行して、リグレッションを検出します。
- フィードバックループの自動化: 実行結果(失敗、スクリーンショット、コンソールログなど)が返され、AI アシスタントに直接フィードバックを提供します。
- 自己修復: コードが変更された場合、既存のテストが自動で自己修復します。手動で更新する必要はありません。
- UI テスト: Playwright が直接サポートしていない UI テストにも対応しています。例:
Check if the text is overflowing in the div - ビジュアルリグレッションテスト:従来の pixelmatch とビジョン LLM のアプローチを使用します。
動作の仕組み
+-------------+ +-----------------+ +---------------------+ +-----------------+ +-------------+
| User | ----> | AI Coding Agent | ----> | MCP Server | ----> | Scan, test, exec| ----> | Browser |
| (Developer) | | (e.g., Copilot) | | (mcp_server.py) | | (SAST, Record) | | (Playwright)|
+-------------+ +-----------------+ +---------------------+ +-----------------+ +-------------+
^ | | |
|--------------------------------------------------+----------------------------+---------------------+
[Test Results / Feedback]
- ユーザー: AI コーディングアシスタントにプロンプトを送ります(例:「このリポジトリにセキュリティ上の脆弱性がないかテストしてください」「ログインフローのテストを記録してください」「回帰テスト 'test_login.json' を実行してください」)。
- AI コーディングエージェント: 意図を認識し、MCP を使用して
MCP Serverが提供する適切なツールを呼び出します。 - MCP サーバー: リクエストを対応する関数(
get_security_scan、record_test_flow、run_regression_test、discover_test_flows、list_recorded_tests)にルーティングします。 - VibeShift エージェント:
- 従来のセキュリティスキャン: コードに対して静的解析ツール(例:Semgrep)を実行します。
- 記録:
WebAgent(自動モード)が LLM と連携して手順を計画し、BrowserController(Playwright)を介してブラウザーを操作し、HTML/ビジョンを処理して、テスト手順をoutput/ディレクトリ内の JSON ファイルに保存します。 - 実行:
TestExecutorが指定された JSON テストファイルを読み込み、記録された手順に従ってBrowserControllerでブラウザーを操作し、結果、スクリーンショット、コンソールログを取得します。 - 検出:
CrawlerAgentがBrowserControllerとLLMClientを使用してページをクロールし、テスト手順を提案します。
- ブラウザー: Playwright が実際のブラウザー操作を行います。
- フィードバックループ:
- 包括的なセキュリティレポート(脆弱性、場所、提案)が MCP サーバーを通じてAI コーディングエージェントに返されます。
- AI コーディングエージェントはこれを開発者に提示し、その情報を使って修正を提案または適用できます。
- 目標は、コード生成 -> セキュリティスキャン -> AI による修正 -> 再スキャン(任意)というサイクルを迅速に回すことです。
はじめに
前提条件
- Python 3.10+
- 任意の LLM を利用できること(筆者のテストでは gemini 2.0 flash が無料で最もよく動作します)
- MCP がインストールされていること(
pip install mcp[cli]) - Playwright ブラウザーがインストールされていること(
patchright install)
インストール
- リポジトリをクローンします:
git clone https://github.com/GroundNG/VibeShift cd VibeShift - 仮想環境を作成します(推奨):
python -m venv venv source venv/bin/activate # Linux/macOS # venv\Scripts\activate # Windows - 依存関係をインストールします:
pip install -r requirements.txt - Playwright ブラウザーをインストールします:
patchright install --with-deps # ブラウザーと OS の依存関係をインストールします
設定
- プロジェクトのルートディレクトリにある
.env.exampleを.envに名前変更します。 - LLM API キーとその他の必要な情報を追加します。
# .env LLM_API_KEY="YOUR_LLM_API_KEY"YOUR_LLM_API_KEYを実際のキーに置き換えます。
MCP サーバーの追加
以下を MCP 設定に追加します。
{
"mcpServers": {
"VibeShift":{
"command": "uv",
"args": ["--directory","path/to/cloned_repo", "run", "mcp_server.py"]
}
}
}
AI コーディングアシスタントを利用している間は、このサーバーを実行したままにしてください。
使用方法
MCP 対応の AI コーディングアシスタントを使って、自然言語でエージェントとやり取りします。
例:
-
セキュリティ分析:
- 自動(推奨): VibeShift は、AI アシスタントが生成または大幅に変更したコードスニペットを自動的に分析します。
- 明示的なコマンド:
「VibeShift、この関数にセキュリティ上の脆弱性がないか分析してください。」 「Copilot が先ほど書いた Python コードに SQL インジェクションがないか、VibeShift に確認を依頼してください。」 「コミットする前に、VibeShift で生成したコードを安全にしてください。」
-
テストの記録:
「テストを記録してください:https://practicetestautomation.com/practice-test-login/ に移動し、ユーザー名欄に 'student'、パスワード欄に 'Password123' を入力して、送信ボタンをクリックし、テキスト 'Congratulations student' が表示されることを確認してください。」
- (エージェントがこれらの操作を自動的に実行し、
output/にtest_....jsonファイルを保存します)
- (エージェントがこれらの操作を自動的に実行し、
-
テストの実行:
「回帰テスト
output/test_practice_test_login_20231105_103000.jsonを実行してください」- (エージェントが指定されたファイルの手順を実行し、エラーと詳細を含む PASS/FAIL ステータスを報告します)
-
テスト手順の検出:
「https://practicetestautomation.com/practice/ を起点に、テスト手順を検出してください」
- (エージェントがサイトをクロールしてページを分析し、それぞれの推奨テスト手順を返します)
-
記録済みテストの一覧表示:
「利用可能な記録済みウェブテストを一覧表示してください。」
- (エージェントが
output/ディレクトリ内で見つかった.jsonファイルの一覧を返します)
- (エージェントが
出力:
- セキュリティレポート: AI コーディングアシスタントに返され、以下の内容が記載されます。
- 脆弱性の種類(CWE、OWASP カテゴリなど)
- コード内の位置
- 深刻度
- 根拠/説明
- 推奨される修正方法(多くの場合、AI が対応します)
- 記録済みテスト:
output/ディレクトリに JSON ファイルとして保存されます(形式についてはtest_schema.mdを参照してください)。 - 実行結果: 実行内容を要約した JSON オブジェクトとして返されます(ステータス、エラー、証拠のパス)。完全な結果は
output/execution_result_....jsonにも保存されます。 - 検出結果: 検出された URL と推奨手順を含む JSON オブジェクトとして返されます。完全な結果は
output/discovery_results_....jsonに保存されます。
参考にしたプロジェクト
- Browser Use:DOM コンテキストツリーの生成はこのプロジェクトから大きな着想を得ており、静的/動的/視覚的な要素に対応するよう変更されています。オープンソースへの貢献に感謝します。
- Semgrep:活用している強力なオープンソースの静的解析ツールです。
- Nuclei:テンプレートベースの動的スキャン機能に使用しています。
貢献
皆さまからの貢献を歓迎します。始め方、問題の報告方法、プルリクエストの送信方法については CONTRIBUTING.md をご覧ください。特に、以下のような貢献をお待ちしています。
- 新しいセキュリティアナライザーの統合。
ライセンス
このプロジェクトは APACHE-2.0 ライセンスのもとで公開されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。

