mcpField
M
mysql

mysql

github.com/sanjay3290データ・データベース448414 回インストール7 週間前に更新
リポジトリ

mysql について

mysqlは、設定済みのMySQLデータベースに読み取り専用クエリを実行するスキルです。データベース構造の確認やデータ取得に使え、クエリの種類、結果件数、実行時間に上限を設けます。

主な機能

  1. 01SELECT、SHOW、DESCRIBE、EXPLAIN、WITHクエリの実行
  2. 02設定済みデータベースとテーブルの一覧表示
  3. 03データベーススキーマの確認
  4. 04読み取り専用セッションと単一ステートメントの強制
  5. 05クエリ時間と結果件数の制限

活用シーン

  1. 01設定済みデータベースからレコードを取得
  2. 02クエリ前にテーブルやスキーマを調査
  3. 03書き込みをせず分析・運用データを確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sanjay3290/ai-skills --skill mysql

インストール後、Claude Code で/mysqlを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.gitignore
connections.example.json
README.md
requirements.txt
scripts/
query.py

詳細

MySQL 読み取り専用クエリスキル

設定済みの MySQL データベースに対して、安全な読み取り専用クエリを実行します。

要件

  • Python 3.8+
  • mysql-connector-python:pip install -r requirements.txt

セットアップ

スキルディレクトリ、または ~/.config/claude/mysql-connections.json に connections.json を作成します。

セキュリティ:認証情報が含まれるため、ファイルのアクセス権を 600 に設定してください。

chmod 600 connections.json
{
  "databases": [
    {
      "name": "production",
      "description": "Main app database - users, orders, transactions",
      "host": "db.example.com",
      "port": 3306,
      "database": "app_prod",
      "user": "readonly_user",
      "password": "your-password",
      "ssl_disabled": false
    }
  ]
}
設定フィールド
フィールド必須説明
nameはいデータベースの識別子(大文字と小文字を区別しません)
descriptionはいこのデータベースに含まれるデータ(自動選択に使用)
hostはいデータベースのホスト名
portいいえポート番号(デフォルト:3306)
databaseはいデータベース名
userはいユーザー名
passwordはいパスワード
ssl_disabledいいえSSL を無効にするには true に設定します(デフォルト:false)
ssl_caいいえCA 証明書ファイルのパス
ssl_certいいえクライアント証明書ファイルのパス
ssl_keyいいえクライアント秘密鍵ファイルのパス

使用方法

設定済みのデータベースを一覧表示する
python3 scripts/query.py --list
データベースにクエリを実行する
python3 scripts/query.py --db production --query "SELECT * FROM users LIMIT 10"
テーブルを一覧表示する
python3 scripts/query.py --db production --tables
スキーマを表示する
python3 scripts/query.py --db production --schema
結果を制限する
python3 scripts/query.py --db production --query "SELECT * FROM orders" --limit 100

データベースの選択

ユーザーの意図をデータベースの description に照らし合わせます。

ユーザーの質問説明に含まれる語句
ユーザー、アカウントについてusers、accounts、customers
注文、売上についてorders、transactions、sales
分析、指標についてanalytics、metrics、reports
ログ、イベントについてlogs、events、audit

不明な場合は --list を実行し、どのデータベースを使うかユーザーに尋ねます。

安全機能

  • 読み取り専用セッション:接続で MySQL の SET SESSION TRANSACTION READ ONLY を使用します(主な保護機能)
  • クエリの検証:SELECT、SHOW、DESCRIBE、EXPLAIN、WITH クエリのみ許可されます
  • 単一ステートメント:クエリごとの複数ステートメントは拒否されます
  • SSL 対応:CA、クライアント証明書、鍵をサポートする SSL を設定できます
  • クエリのタイムアウト:30 秒の max_execution_time が適用されます(MySQL 5.7.8 以降)
  • メモリ保護:メモリ不足を防ぐため、クエリごとの最大行数を 10,000 行に制限します
  • 列幅の上限:読みやすい出力にするため、各列の最大文字数を 100 文字に制限します
  • 認証情報のサニタイズ:エラーメッセージからパスワードが漏えいしません

トラブルシューティング

エラー解決方法
設定ファイルが見つからないスキルディレクトリに connections.json を作成します
認証に失敗した設定ファイルのユーザー名とパスワードを確認します
接続がタイムアウトしたホストとポートを確認し、ファイアウォールや VPN を確認します
SSL エラーローカルデータベースの場合は "ssl_disabled": true を試します
権限に関する警告chmod 600 connections.json を実行します
max_execution_time がサポートされていないMySQL 5.7.8 以降、または MariaDB 10.1.1 以降にアップグレードします

終了コード

  • 0:成功
  • 1:エラー(設定の欠落、認証失敗、無効なクエリ、データベースエラー)

ワークフロー

  1. --list を実行して、利用可能なデータベースを表示します
  2. ユーザーの意図をデータベースの説明に照らし合わせます
  3. --tables または --schema を実行して、構造を確認します
  4. 適切な LIMIT を指定してクエリを実行します

コメント