mcpField
V
VibeRaven (local)

VibeRaven (local)

ローカル
viberaven.devセキュリティ616 日前に更新

VibeRaven (local) について

VibeRavenは、VercelとSupabaseを使うアプリのリポジトリを調べ、RLS、キーの露出、環境変数、DB接続設定、Stripe webhookなどの公開前の問題を検出します。開発者やコーディングエージェント向けで、アカウントや稼働中のプロジェクトへの接続なしにローカルで確認します。

主な機能

  1. 01不足または過度に許可的なRLSポリシーの検出
  2. 02クライアントコード内のservice_roleキーの検出
  3. 03環境変数の差異とクエリ上限の確認
  4. 04DBプーラー設定とwebhookの問題を指摘
  5. 05結果をMarkdownとJSONに出力
  6. 06一部の問題に修正レシピを提示

活用シーン

  1. 01公開前のVercel・Supabaseアプリの確認
  2. 02マイグレーション後のリポジトリ変更の確認
  3. 03CIでの準備状況チェック
  4. 04コーディングエージェントへのリポジトリ情報提供

MCP 対応

MCPサーバーは、ローカルの準備状況チェック、修正適用、結果検証、監査、ゲート結果取得のツールを提供します。稼働中のSupabaseプロジェクトではなく、リポジトリを読み取ります。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"ohad6k-viberaven": {
"command": "npx",
"args": [
"-y",
"@viberaven/mcp"
]
}
}
}
起動コマンドnpx -y @viberaven/mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@viberaven/mcp1.6.12

ツール

14

掲載時のツール一覧 · 1 日前に更新

パラメーター型必須説明
cwdstringいいえプロジェクトのルート。デフォルトは MCP サーバーの作業ディレクトリです。

詳細

VibeRaven

VibeRaven

VibeRaven は、AI で構築した Vercel + Supabase アプリを公開する前にチェックし、リリースを妨げる問題を検出します。RLS のないテーブル、using (true) のような許可範囲の広すぎるポリシー、クライアントコード内の service_role キー、匿名で呼び出せる Security Definer 関数、誤ったプーラーポート、未検証の Stripe Webhook などを検出します。

アプリのフォルダーで npx -y [email protected] check を実行してください。マシン上のリポジトリを読み込み、アカウントは不要です。問題ごとにファイル名と行番号を示します。

npm からインストール   viberaven.dev で試す   Discord に参加

npm のバージョン npm のダウンロード数 GitHub のスター数 MIT ライセンス skills.sh パック X でフォロー

ウェブサイト · チェック項目 · 使う場面 · 比較 · ローカル Studio · エージェントスキル · リリース

クイックスタート

Node.js 20 以降が必要です。アプリのプロジェクトルートから実行してください。

npx -y [email protected] check
  • ターミナルまたは CI で実行:npx -y [email protected] check
  • コーディングエージェント向け:npx -y [email protected] --agent-mode
  • Windows PowerShell:実行ポリシーによって npx がブロックされる場合は、npx.cmd を使用してください。

supabase/migrations、クライアントコードとサーバーコード、package.json、.env.example を読み込みます。Supabase プロジェクトには接続せず、アプリにもリクエストを送信しません。問題が見つかった場合は終了コード 1 を返すため、CI のステップとしても利用できます。

チェック項目

検出内容Gap ID関連する Supabase Security Advisor の lint
マイグレーションで作成された公開テーブルで、行レベルセキュリティが一度も有効化されていないrls_disabledrls_disabled_in_public(ガイド)
using (true) によって、誰でもすべての行を読み書きできるポリシーrls_policy_allows_all_write, rls_policy_allows_all_readなし
ブラウザーに配信されるファイル内、または NEXT_PUBLIC_ という名前の環境変数にある service_role キーservice_role_key_in_client_code, service_role_key_in_client_envなし
public にあるセキュリティ定義者関数で、どのマイグレーションでも anon からの実行が禁止されていないものsecurity_definer_function_executableanon_security_definer_function_executable(ガイド)
サーバーレスコードから、トランザクションプーラーの 6543 ではなく、ポート 5432 で Postgres に直接接続しているpooler_port_mismatchなし
生のボディに対する署名を一度も検証しない Stripe webhook ハンドラーunverified_stripe_webhookなし
コードが読み取るものの .env.example に記載されていない環境変数、行数制限のないクエリ、エラー監視の欠如env_var_drift, unbounded_query, missing_monitoringなし

同じアプリでよく見られる Security Advisor の lint が、ほかに 2 つあります。VibeRaven にはまだこれらのルールがなく、修正方法はガイドで説明しています。

1 つのマイグレーションに対する実行前後の例は、RLS 欠落の例をご覧ください。

出力例

ギャップが 1 つずつ含まれる合成 Next.js + Supabase アプリでの viberaven check 1.6.12 の出力(プロジェクトパスは短縮しています):

viberaven check · ~/my-app

🔴 No RLS policy proof in migrations  (rls_disabled)
   1 public table without row level security: public.profiles (supabase/migrations/20260301000000_init.sql:1). The Data API does not enforce row restrictions for roles and operations allowed by the table's grants. Verify those grants to determine who can read or change rows.
🔴 A policy lets anyone write every row  (rls_policy_allows_all_write)
   Policy "orders are editable" on public.orders (supabase/migrations/20260301000000_init.sql:13) lets anyone, signed in or not, update every row, to any values: using (true).
🔴 Service role key used in client code  (service_role_key_in_client_code)
   app/admin/page.tsx:4: creates a Supabase client with the service role key. This file ships to the browser, and the service role key skips RLS entirely. Move the call behind a server route or edge function and rotate the key.
🟡 Supabase connection is not using the pooler port  (pooler_port_mismatch)
   Found direct 5432 DATABASE_URL/POSTGRES_URL evidence. Vercel/serverless deployments should prefer Supabase transaction pooler port 6543.
🟡 Security definer function callable by the Data API roles  (security_definer_function_executable)
   public.grant_credits(uuid, integer) at supabase/migrations/20260301000000_init.sql:15 is security definer, so it runs with its owner's rights and RLS does not limit what it touches. No migration revokes EXECUTE from public, anon, authenticated, so anyone holding the anon key can call it at /rest/v1/rpc/grant_credits. If only the server calls it, add: revoke execute on function public.grant_credits(uuid, integer) from public, anon, authenticated; Fix: revoke execute on function public.grant_credits(uuid, integer) from public, anon, authenticated;
🟡 Stripe webhook does not verify the signature  (unverified_stripe_webhook)
   1 Stripe webhook handler without signature verification over the raw body: app/api/stripe/webhook/route.ts (no signature check (constructEvent), no stripe-signature header, no raw body). Anyone who finds the URL can post a fake event, for example a paid checkout.
🟡 Env vars used in code but missing from .env.example  (env_var_drift)
   Code reads 1 environment variable that .env.example does not document (NEXT_PUBLIC_SUPABASE_SERVICE_ROLE_KEY). Fresh clones, CI, and the production deploy can silently run without them.
🟡 Database queries with no row limit  (unbounded_query)
   1 file run Supabase selects or Prisma findMany with no .limit()/.range()/take bound (app\admin\page.tsx). These work with 50 test rows and melt with 50,000 production rows.
⚪ No error monitoring detected  (missing_monitoring)
   No Sentry/PostHog (or similar) instrumentation was found. Production errors will only surface when users complain.

Verdict: ❌ 3 blockers, 5 warnings · score 5
Fix: viberaven fix · Details: ~/my-app\.viberaven\agent-tasklist.md

各結果は .viberaven/ に Markdown と JSON(agent-tasklist.md、gate-result.json、context-map.json)としても保存されるため、コーディングエージェントや Git の履歴から読み取ることができます。

使用する場合と使用しない場合

次の場合に使用してください。

  • Lovable、Bolt、Cursor、Claude Code、Codex で構築した Vercel + Supabase アプリを公開する前、または引き継ぐ前。
  • Supabase のマイグレーション後、またはポリシーの変更後。
  • 本番環境のエラーが RLS、service_role キー、環境変数、データベース接続、または Stripe webhook に関係している場合。
  • 以下の GitHub Action を使って、プッシュまたはプルリクエストのたびに実行する場合。

次の場合には適していません。

  • データベースで現在有効な設定を確認する必要がある場合。 VibeRaven はリポジトリのチェックツールであり、稼働中のデータベースをテストするものではありません。マイグレーションを読み取るため、Supabase ダッシュボードで追加されたポリシーは確認できません。稼働中のプロジェクトには Supabase Security Advisor を使用してください。
  • 包括的なセキュリティ監査が必要な場合。 アプリへのリクエスト送信、XSS や CSRF のテスト、依存関係の CVE の検索は行いません。問題なしという結果がセキュリティ監査を意味するわけではありません。
  • アプリが動作するか確認する必要がある場合。 ビルドを実行したり、ページを操作したりはしません。Playwright または独自のテストを使用してください。
  • アプリで Supabase を使用していない場合。 ほとんどのチェックで読み取るものがありません。

比較

これらのツールはそれぞれ異なる問いに答えるもので、多くの場合、リリース時には複数を組み合わせて使う必要があります。

ツールチェックする内容実行場所VibeRavenとの使い分け
Supabase Security Advisor稼働中のデータベースを静的解析します:RLSの無効化、security definerビューと関数、変更可能なsearch_pathなどSupabaseダッシュボードで、デプロイ済みプロジェクトを対象に実行Advisorは稼働中の状態を確認します。VibeRavenは適用前のマイグレーションに加え、データベースからは見えないクライアントコードや環境ファイルも読み取ります。
OWASP ZAP稼働中のウェブアプリをHTTP経由で動的スキャンします:インジェクション、XSS、ヘッダー、Cookieデプロイ済みまたはローカルのURLを対象に実行ZAPはアプリを外部からテストします。VibeRavenはリポジトリを読み取り、Supabaseの権限付与、ポリシー、キーを把握します。
Semgrep、Snyk、CodeQL多くの言語を対象に、汎用的な静的解析と依存関係の脆弱性チェックを行いますCIまたはローカルで、ソースコードを対象に実行広範なコードルールとCVEをチェックします。VibeRavenは対象を絞り、SupabaseのRLSと権限付与、service_roleの露出、プーラーポート、Stripeウェブフックを確認します。
Playwright実際のブラウザーを操作する、作成済みのエンドツーエンドテストローカルまたはCIで、稼働中のアプリを対象に実行Playwrightはテスト対象のフローを検証します。ユーザーAでサインインしてユーザーBの行を読み取ろうとするテストは、VibeRavenのRLS検出結果が示す問題を実際に確認するものです。

データ:Lovableの公開アプリ512件

公開されているLovableリポジトリ512件のSupabaseマイグレーションを対象にチェックを実行しました。記事より:

GitHub上でsupabase/migrationsフォルダーを含むLovableの公開プロジェクト512件を静的に調査したところ(2026年10月)、47.3%(242件)で、サインアウト状態の呼び出し元がanonキーを使って/rest/v1/rpcから実行できるsecurity definer関数が、publicスキーマに少なくとも1つ定義されていました。

記事では、手法、制限事項、修正方法を説明しています。以前の記事では、同じ512件のアプリにおけるRLSポリシーを取り上げています。

ギャップを修正する

npx -y [email protected] fix                         # list gaps with safe automatic recipes
npx -y [email protected] fix --gap <id> --dry-run    # preview one recipe
npx -y [email protected] fix --gap <id>              # apply it
npx -y [email protected] audit --vercel-supabase     # RLS in migrations, pooler port, service_role key
npx -y [email protected] --strict                    # the verdict as an exit code for CI (exit 1 on not_clear; warnings exit 0)

rls_disabledレシピは、ポリシーなしでRLSを有効にするマイグレーションを追加します。そのため、ポリシーを追加するまでブラウザーからの読み取りでは行が返されません。適用する前に合意し、データベースのワークフローを通じて適用してテストしてください。

CIでの利用:GitHub Action

LovableとBoltはmainに直接プッシュするため、プルリクエストのチェックだけでは変更の大半を見逃します。VibeRaven GitHub Actionは、独自のランナーでプルリクエストとプッシュの両方に対し、同じチェックを実行します。

on:
  push:
    branches: [main]
  pull_request:
permissions:
  contents: write
  pull-requests: write
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
        with:
          fetch-depth: 0
      - uses: ohad6k/viberaven-action@v1

プルリクエストには、変更によって追加または修正された内容をまとめたコメントが1件投稿されます。mainへのプッシュでは、ブロッカーが見つかった場合にコミットコメントが投稿されます。デフォルトではアドバイスを提示するだけです。fail-on-blockers: 'true'を指定すると、ブロッカーが見つかった場合にジョブが失敗し、それがマージにどう影響するかはブランチ保護の設定によって決まります。npx -y [email protected] init --githubを実行すると、Actionを使わずに、プルリクエストのみを対象とするこのワークフローが書き込まれます。

AIエージェントへのインストール

コーディングエージェントがリポジトリを修正する前に、同じコンテキストを与えます:

npx -y [email protected] init --agents all --dry-run   # preview
npx -y [email protected] init --agents all
npx -y [email protected] doctor --agents

これにより、範囲を限定したルール(...)が次の場所にインストールされます:

  • AGENTS.md、CLAUDE.md、GEMINI.md
  • .cursor/rules/viberaven-core.mdc(およびSupabase、デプロイ、決済に関する適用範囲を限定したルール)
  • .github/copilot-instructions.md
  • .viberaven/agent-context.md、.viberaven/mission-map.md

このルールでは、どのような場合にチェックが役立つか(VercelとSupabaseを使ったAI構築アプリのリリースまたは引き継ぎ前、あるいはマイグレーションやポリシーの変更後)を説明し、checkを実行して.viberaven/を読み、ギャップを1つ修正し、修正をひとまとまり適用するたびに再度checkを実行する手順を案内します。これはアドバイスであり、必須のゲートではありません。リリースするタイミングはユーザーが決めます。

エージェントスキル

6つのskills.shスキルが、アーキテクチャに関する質問、バージョンの根拠、起動の証明を通じてエージェントを案内します。

スキル役割
viberavenルーター:ローカルでのチェック/修正ループ、Studio、MCP コンテキストを扱います。
architecture-context編集を始める前に、不足しているプロダクトに関する質問をします。
architecture-plan回答とリポジトリの根拠をもとに、作業計画を立てます。
what-brokeパッチを適用する前に、どのバージョンでアプリが壊れたかを特定します。
production-context.viberaven/production-context.md に簡潔な本番環境の情報を保持します。
go-liveローカルアプリから GitHub、Vercel までを扱い、ライブ URL で証明します。
npx -y [email protected] add ohad6k/VibeRaven --skill viberaven

パッケージ全体については、agent-skills/ をご覧ください。

このリポジトリはエージェントのプラグインとしても機能します。plugin.yaml、.claude-plugin/、.codex-plugin/、gemini-extension.json により、6つのスキルに加え、/viberaven-work、/viberaven-help、/viberaven-production-context、/viberaven-launch コマンドを Claude Code、Codex、Gemini CLI で利用できます。

より小規模なインストールには、plugins/viberaven をご利用ください。Claude Code と Cursor 向けのスタンドアロンプラグインで、Vercel + Supabase アプリにローンチ前の確認が適している場合を示す1つのスキルと、バージョンを固定した MCP サーバーが含まれています。マニフェストにはパッケージのバージョンが指定されており、プラグインのリリースは上記のクイックスタートとは別です。

MCP

VibeRaven は、ターミナルコマンドよりもツールを使いたいエージェント向けに、MCP レジストリに登録されています。

{ "viberaven": { "command": "npx", "args": ["-y", "@viberaven/[email protected]"] } }

主なツール:viberaven_check_readiness(ローカルチェックを実行)、viberaven_heal_apply、viberaven_verify、viberaven_audit、viberaven_gate_result、viberaven_validate_npm_package(npm 依存関係を追加する前に実行してください)。

ローカルの Studio

コマンドを指定せずに npx -y [email protected] を実行すると Studio が開きます。これはローカルページで、自分のコーディングエージェント(Claude Code、Codex、Gemini CLI)がフォルダー内で変更を行い、その手順、チェック結果、実行中のアプリ、差分を確認できます。取り消しもワンクリックで行えます。

VibeRaven Studio:ボード上のアプリのプロバイダー、ワンクリックで開始できるアクション、Claude Code を使う変更ボックス

## 最初のアプリ変更

アカウント不要で、同じワークフローをすべてローカルで実行できます。

  1. プロジェクトを開きます。 プロジェクトのフォルダーで npx -y [email protected] を実行します。ブラウザーで Studio が開きます。
  2. エージェントを接続します。 Agents を開き、インストール済みの CLI を選択して Test connection を実行し、Use this agent を選択します。
  3. アプリを表示します。 Show my app を選択して、開発サーバーを起動します。
  4. 小さな変更を依頼します。 Ask を選ぶと編集せずに計画を取得でき、Edit を選ぶとエージェントがファイルを変更できます。その後、Make the change を選択します。
  5. 結果を確認します。 起動中のアプリを試し、チェック結果を読み、Review を開いて差分を確認します。テストがない場合は未チェックとして報告されます。ページが読み込まれても、すべての機能が動作することの証明にはなりません。

Windows PowerShell で実行ポリシーにより npx がブロックされる場合は、npx.cmd を使用してください。

Studio は viberaven.dev でも利用できます。Google でサインインし、リポジトリを用意して、コンピューターを一度接続してください。エージェントは引き続きコンピューター上で動作します。サイトでは変更を 2 回まで無料で利用でき、その後は月 300 回までの Pro を利用できます。どちらもサインイン済みのコーディングエージェントが必要です。エージェント側のアカウントと利用制限が適用されます。

Studio が提供するもの
自分のエージェント、自分のマシンClaude Code、Codex、Gemini CLI がフォルダー内で編集します。接続テストを実行でき、Ask または Edit のアクセス権を選べます。
変更に添えられた証拠実際の手順、プロジェクトのチェック、起動中のアプリ、差分を一か所で確認できます。
レビューと元に戻す変更されたすべてのファイルを確認できます。元に戻すと、Claude Code による変更として識別された編集が復元されます。それ以外の変更は、確認できるようそのまま残ります。
アプリのサービスVercel、Supabase、Stripe、認証、監視、分析を一つのマップに表示し、それぞれをコード内で検出済み、選択済み、または不足として示します。リポジトリ内の証拠を、プロバイダーの稼働状況を確認した結果として表示することはありません。
バージョンとリリースリリース時点を比較し、以前のバージョンからの変更を確認できます(ローカル Studio)。

チェックとアカウント

  • ローカル Studio とリポジトリのチェック。 VibeRaven アカウントがなくても、これらはマシン上で実行されます。CLI はテレメトリーを収集しません。
  • viberaven.dev からの変更。 Google でサインインします。無料プランではアカウントごとに変更を 2 回まで利用でき、Pro では月 300 回まで利用できます。コーディングエージェントのアカウントと使用量は別扱いです。サイトでは、リクエスト、進捗、チェック結果、ファイルパス、確認用に編集内容を秘匿化してサイズ制限を適用した差分が保存されます。
  • ホスト型の完全チェック。 オプションです。無料プランでは 2 回、Pro では月 50 回まで利用でき、変更回数とは別枠です。
  • ディスク上の Markdown。 すべてのコンテキストは .viberaven/ にプレーンファイルとして保存され、エージェントや Git の履歴から読み取れます。
  • 雰囲気ではなく証拠を重視。 調査結果はリポジトリ内の証拠を示します。リポジトリの編集だけを根拠に、プロバイダーのダッシュボードの状態を断定することはありません。
  • 変更は自分で管理。 エージェントがプロジェクトを編集する前に、計画とアクセスモードを確認してください。クリーンアップは計画のみです。リポジトリのチェックに問題がなくても、セキュリティ監査やデプロイ済みアプリが動作することの証明にはなりません。

貢献

貢献を歓迎します。多くの貢献には、非公開のソースコードへのアクセスは必要ありません。

  • リポジトリの構成、PR で求められること、ローカルチェックについては、貢献ガイドをお読みください。
  • 初めての方におすすめの Issueから取り組む Issue を選んでください。ドキュメント、プロバイダーのフィクスチャ、サンプル、翻訳などがあります。
  • アイデアや質問はディスカッションで共有してください。
  • Discordに参加して、メンテナーと直接話しましょう。

リソース

ライセンス

MIT。現在の公開リリース:[email protected]。

Ohad Krispin が開発しました(github.com/ohad6k)。

VibeRaven がリリースに役立った場合は、ほかの AI アプリ開発者が見つけられるよう、リポジトリにスターを付けてください。リリース通知を受け取るには、Watch → Custom → Releases を選択してください。

VibeRaven の公開リポジトリは、エージェントの発見とインストールの窓口です。製品のソースコードとサービスの内部実装は、非公開リポジトリにあります。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。