mcpField
M
MySQL Audit

MySQL Audit

ローカル
github.com/jimmyjan0824データベース01 日前に更新

MySQL Audit について

MySQL Auditは、AIコーディングエージェントやデータベースチーム向けに、MySQLのマイグレーション、クエリ、コードを決定的に検査します。safe、review、blockの判定に加え、行単位のリスクと安全な代替案を示します。

主な機能

  1. 01ロック、テーブルコピー、データ損失のリスクを検査
  2. 02危険な一括操作をクエリで検出
  3. 03ソースコードのSQLインジェクションパターンを検出
  4. 04ルールの説明と検査項目の一覧表示
  5. 05スキーマと行数統計を使ったレビュー

活用シーン

  1. 01エージェント実行前のマイグレーション確認
  2. 02CIでマイグレーションのプルリクエストを判定
  3. 03アプリケーションコードのSQLインジェクション確認

MCP 対応

ローカルのstdioで動作し、マイグレーション、クエリ、コードのレビュー、ルール説明、検査項目一覧のツールを提供します。SQLをマシンの外に送らずにレビューできます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"jimmyjan0824-mysql-audit": {
"command": "uvx",
"args": [
"mysql-audit-ai-agent"
]
}
}
}
起動コマンドuvx mysql-audit-ai-agent

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

パッケージ
pypimysql-audit-ai-agent0.3.2

ツール

6

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

パラメーター型必須説明
sqlstringはい
statsanyいいえ
schemaanyいいえ
free_disk_gbanyいいえ
rollback_sqlanyいいえ
mysql_versionanyいいえ

詳細

mysql_audit_ai_agent

AI コーディングエージェント向けの MySQL スキーマ変更安全性レビューです。

Claude Code、Cursor などのエージェントがマイグレーションを実行する前に、SQL を review_migration に送信すると、判定(safe / review / block)と、各リスクの 行番号、本番環境で起きること、安全な記述方法が返されます。チェックは別の LLM による推測ではなく、DBA の経験に基づく決定論的なルールです。

ステータス:ベータ版。12 個すべてのルールを、CI で実際の MySQL 8.0 および 8.4 に対して検証しています。DBA の皆さんは、試用キットをお試しいただき、誤った結果をご報告ください。

ルール

IDチェック内容デフォルト必要な情報
L01明示的な ALGORITHM / LOCK がない DDL、ALGORITHM=COPY、LOCK=SHARED/EXCLUSIVE警告 / ブロック
L02テーブルコピーを強制するカラム変更:型変更、VARCHAR の縮小または 255 バイトをまたぐ変更、ENUM の並べ替え、文字セット変換、主キーの削除ブロック正確な判定にはスキーマが必要
L03大きなテーブルの行に触れる DDL:gh-ost / pt-online-schema-change を使用警告統計情報
L04短い SET SESSION lock_wait_timeout のない DDL(メタデータロックの滞留)警告
L05foreign_key_checks=1 の状態での ADD FOREIGN KEY(COPY のみ)ブロック
L06大きなテーブルに対する 1 トランザクション内の UPDATE / DELETE / INSERT ... SELECT(レプリケーション遅延)警告統計情報
L07カラム、テーブル、データベースの DROP / TRUNCATE / RENAMEブロック
L08WHERE のない UPDATE / DELETE、ORDER BY のない LIMITブロック / 警告
L09キー範囲またはバッチサイズで制限されていないバックフィル警告 / 情報
L10BIGINT より小さい自動インクリメントカラム、utf8 / utf8mb3警告
L11インデックスの先頭カラムではないカラムを使った WHERE / JOIN警告スキーマ
L12f-string、テンプレートリテラル、文字列連結、% / .format / Sprintf による SQL の構築(SQL インジェクション)ブロックソースコード

同じスクリプト内で先に作成されたテーブルは空として扱われるため、それらに対する DDL は警告されません。

  • スキーマ:現在の CREATE TABLE 文(SHOW CREATE TABLE)。
  • 統計情報:おおよその行数。{"orders": 25000000} のように指定します。取得には SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema = DATABASE() を使用します。 1,000,000 行以上のテーブルは大きいもの、10,000 行未満のテーブルは小さいものとして扱います。

AI エージェントとの使用(MCP)

uv が必要です。サーバーは stdio 経由でローカル実行されるため、SQL がマシンの外部に送信されることはありません。

Claude Code

claude mcp add mysql-audit -- uvx mysql-audit-ai-agent

Cursor、Windsurf、Claude Desktop などの MCP クライアント(mcp.json / claude_desktop_config.json):

{
  "mcpServers": {
    "mysql-audit": { "command": "uvx", "args": ["mysql-audit-ai-agent"] }
  }
}

Claude Desktop、ワンクリック:mysql-audit.mcpb を最新リリースからダウンロードして開きます。

ツール:review_migration(sql, schema?, stats?)、review_query(sql, schema?, stats?)、 review_code(code)、explain_rule(rule_id)、list_rules()。

エージェント評価では、Claude Code は追加のプロンプトなしで、10 件中 10 件のマイグレーションタスクにおいて自律的にツールを呼び出しました。

コマンドライン

pip install mysql-audit-ai-agent
mysql-audit migrations/20261027_add_index.sql --schema schema.sql
mysql-audit migration.sql --stats rows.json --format json
mysql-audit --code app/models/user.py      # SQL injection check

終了コードは、safe が 0、review が 1、block が 2 です。そのため、CI のゲートとして使用できます。

GitHub Action

各プルリクエストで追加または変更されたマイグレーションをレビューし、差分内の該当行に注釈を付け、プルリクエスト上のサマリーコメントを 1 つに保って最新の状態に更新し、block の場合はチェックを失敗させます。

# .github/workflows/mysql-audit.yml
name: MySQL Audit
on: pull_request
permissions:
  contents: read
  pull-requests: write   # for the summary comment
jobs:
  audit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: jimmyjan0824/[email protected]
        with:
          paths: db/migrate/**/*.sql      # default: **/*.sql
          schema: db/schema.sql           # optional, makes checks exact
          # stats: db/table_rows.json     # optional row counts, enables large-table rules
          # code-paths: app/**/*.py       # optional SQL injection check
          # fail-on: review               # block (default), review or never

開発

pip install -e ".[dev]"
pytest

各ルールには、tests/ に肯定ケースと否定ケースがあります。

tests/test_mysql_oracle.py は実際のサーバーに対してルールを検証します。各 ALTER は ALGORITHM=INPLACE, LOCK=NONE を指定して実行され、MySQL が拒否するかどうかが ルールの判定と一致する必要があります。CI では MySQL 8.0 および 8.4 で実行します。ローカルでは次のように実行します。

docker run -d -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql:8.4
MYSQL_HOST=127.0.0.1 MYSQL_PASSWORD=root pytest tests/test_mysql_oracle.py

中国語の説明

AI コーディングエージェント向けの MySQL 変更安全性レビューです。エージェントはマイグレーションの実行前に review_migration を呼び出し、 safe / review / block の判定と、各リスクの行番号、本番環境への影響、安全な記述方法を取得します。 ルールは DBA の経験に基づいて記述されており、結果は再現可能です。

ライセンス

Apache-2.0

コメント

MCP は初めてですか?

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

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