mcpField
V
Veto — SQL Safety & Cost Oracle

Veto — SQL Safety & Cost Oracle

リモート
vetosql.comデータベース019 週間前に更新
リポジトリ公式サイト

Veto — SQL Safety & Cost Oracle について

Vetoは、AIコーディングエージェントがPostgreSQL文を実行する前に、安全性、正確性、推定コストを決定論的に検査するリモートMCPサーバーです。監査可能なok、warn、blockの判定を返し、本番データベースへの接続や判定へのLLM利用はありません。

主な機能

  1. 01決定論的なSQL安全判定
  2. 02破壊的操作と正確性ルールの検査
  3. 03一時PostgresとEXPLAINによるコスト分析
  4. 04監査・CI向けの安定した検出ID
  5. 05任意の宣言型組織ポリシー

活用シーン

  1. 01実行前にエージェント作成SQLをゲート
  2. 02マイグレーションの破壊的変更を確認
  3. 03判定結果に応じてCIチェックを分岐

MCP 対応

リモートのStreamable HTTP MCPエンドポイントを通じてanalyze_sqlと、Pro向けのカスタムポリシー設定・取得ツールを提供します。呼び出し元の本番データベースには接続せずにSQLを分析します。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://vetosql.com/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

3
パラメーター型必須説明
sqlstringはい分析するSQL(1つ以上のステートメント)。
schemastringいいえ任意のCREATE TABLE/INDEX DDL。指定すると、使い捨てのPostgres上でEXPLAINベースのコスト分析(大規模テーブルでのシーケンシャルスキャンなど)が有効になります。省略すると、静的な安全性分析のみを行います。
dialectstringいいえ
rowCountHintsobjectいいえより現実的なコスト見積もりに使用する、テーブル名から推定行数への任意のマップ。

詳細

Veto — SQL 安全性・コスト判定サービス(MCP)

Veto は、AI コーディングエージェントが SQL を実行する前に、Postgres SQL の安全性、正確性、コストを審査する、決定論的な MCP サーバーです。 各ステートメントに対して ok/warn/block の判定を返します。コアに LLM は使用せず、データベースに接続することもありません。

ウェブサイト: https://vetosql.com · MCP エンドポイント: https://vetosql.com/mcp(リモート、streamable-http)

AI コーディングエージェント(Claude Code、Cursor、…)は SQL を作成して実行します。ときには WHERE のない DELETE FROM payments や、マイグレーション中の DROP TABLE を書くことがあります。プロンプトを増やしても、確率的なシステムの問題は解決しません。必要なのは決定論的なゲートです。Veto はそのゲートです。同じステートメントを渡せば、毎回同じ判定を返し、監査や CI のゲートに利用できる安定した検出項目 ID を付与します。


検出できる内容

判定意味該当する内容
block破壊的/データ損失スコープ指定のない DELETE/UPDATE、TRUNCATE、データを含むオブジェクトの削除。CTE 内に隠れた破壊的なステートメントも含みます
warnリスクはあるが復旧可能ロック負荷の高いスキーマ変更、高コストのスキャン、誤った行を気づかれずに返す正確性の落とし穴(= NULL、NOT IN (subquery)、内部結合のように絞り込まれた LEFT JOIN)、SELECT * などのよくあるアンチパターン
ok安全に実行可能通常の、元に戻せるマイグレーション

各検出項目には、安定したドット区切りの ID(例:destructive.delete_without_where)が付与されるため、パイプラインで条件分岐できます。正確なルールセットはサーバー側にあり、時間とともに更新されます。

決定論的である理由

  • 再現可能 — 同じ入力には同じ判定が返ります。テスト可能で、信頼できます。
  • 監査可能 — 「モデルがリスクを感じた」ではなく、名前の付いたルールが発動します。
  • 判定が揺らがない — 巧妙なプロンプトで block を覆すことはできず、調子の悪い日に性能が落ちることもありません。
  • データベースに触れません — コストは、トランザクション内の使い捨てのスクラッチ Postgres 上で実際の EXPLAIN を実行して測定します。トランザクションは必ずロールバックされます。本番データベースに接続することはありません。

ツール

analyze_sql

Postgres SQL/マイグレーションの安全性とコストについて、決定論的な判定を返します。

入力型備考
sqlstring分析対象の SQL/マイグレーション。1 つ以上のステートメントを指定します(必須)
schemastring?任意の CREATE TABLE/INDEX DDL。指定すると、スクラッチ Postgres 上で EXPLAIN ベースのコスト分析が可能になります
rowCountHintsobject?任意のテーブル名 → 推定行数のマップ。現実的なコスト見積もりに使用します

verdict が ok | warn | block のいずれかである { verdict, findings[], plan?, meta } を返します。

set_policies (Pro)

Pro キーにひも付けてカスタム組織ポリシーを保存します。analyze_sql は、組み込みルールに加えてこれらのポリシーも適用します。ポリシーは宣言的なデータで、検証され、実行されることはありません(最大 50 件。以前に保存したセットを置き換えます)。

各ポリシー:table(完全一致名または glob。例:payments、audit_*、*)、operations(select/insert/update/delete/truncate/drop/alter のいずれか)、action(block/warn)、任意の message。

{
  "policies": [
    { "table": "payments", "operations": ["delete", "truncate"], "action": "block",
      "message": "Never delete from payments — use the refund flow." }
  ]
}

セット全体を送信すると更新され、空の配列を送信すると消去されます。

get_policies (Pro)

キーに現在保存されているカスタム組織ポリシーセットを返します。これは、analyze_sql が組み込みルールに加えて適用するルールと同じものです。読み取り専用です。ポリシーが設定されていない場合は、空のリストを返します。


セットアップ

Veto はリモート MCP サーバーです。インストールもソースコードも必要ありません。クライアントをエンドポイントに接続してください。

Claude Code — .mcp.json
{
  "mcpServers": {
    "veto": {
      "type": "http",
      "url": "https://vetosql.com/mcp"
    }
  }
}
Cursor — ~/.cursor/mcp.json
{
  "mcpServers": {
    "veto": {
      "url": "https://vetosql.com/mcp"
    }
  }
}

無料プランではキーは不要です(60 req/min)。Pro: VETO-… キーをベアラートークンとして追加します(Bearer という語と、その後のスペースは残してください)。

"headers": { "Authorization": "Bearer VETO-…" }

料金

プラン価格制限追加内容
Free€060 req/min破壊的操作、ロック、正確性、コストに関するすべてのルールを含む、完全な決定論的判定
Pro€9.90 / mo1200 req/minカスタム組織ポリシー(set_policies)、メンテナーサポート

vetosql.com から登録できます。


FAQ

Veto はどのデータベースに対応していますか? PostgreSQL に対応しています。Veto は SQL テキストを解析するため、Supabase、Neon、RDS、セルフホストなど、あらゆる Postgres ホストや、あらゆるマイグレーションツールで動作します。データベースには接続しません。

安全ですか?データを閲覧したり変更したりできますか? いいえ。Veto が本番データベースに接続することはありません。コスト分析は、別のスクラッチ用 Postgres に対して、必ずロールバックされるトランザクション内で実行されるため、データの読み取りも書き込みも行われません。

Squawk や sqlfluff のようなリンターとは何が違いますか? これらは CI/スタイルチェック用のツールです。Veto は AI エージェントが MCP 経由で呼び出すリアルタイムの実行時ゲートで、実行しようとしているステートメントそのものに対して、ok/warn/block の判定を返します。さらに、コストの見積もりや組織独自のポリシーにも対応します。

エージェントに読み取り専用または制限付きの DB ロールを与えるだけではだめですか? ロールは大まかな制御であり、設定を誤りやすいだけでなく、書き込みが許可されたロール内で高コストなシーケンシャルスキャンや、テーブル全体への UPDATE が実行されることも検出できません。Veto は、使用するロールに加えて、ステートメント単位の判定を提供します。

LLM を使用しますか? いいえ。コア機能は、決定論的な静的解析と EXPLAIN です。呼び出し元のエージェントが構造化された判定内容を説明しますが、判定そのものがモデルから生成されることはありません。


リンク


Metawear が開発しました。ホステッドサービスは vetosql.com で稼働しています。このリポジトリは、Veto サーバーの公開ドキュメントと MCP レジストリマニフェストです。

コメント

MCP は初めてですか?

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

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