mcpField
D
database-scout

database-scout

github.com/zebbernデータ・データベース4.7k39 回インストール1 日前に更新
リポジトリ

database-scout について

database-scout は、開発者向けの SQLite/PostgreSQL 用読み取り専用コマンドライン探索ツールです。スキーマやデータの確認、Mermaid ER 図の生成、安全な SQL 実行に対応します。

主な機能

  1. 01テーブル、ビュー、行数の一覧表示
  2. 02列、制約、インデックスの確認
  3. 03テーブルデータのプレビュー
  4. 04Mermaid ER 図の生成
  5. 05読み取り専用 SQL クエリの実行

活用シーン

  1. 01テーブルとビューの棚卸し
  2. 02スキーマと関連の確認
  3. 03テーブルレコードのサンプル確認
  4. 04制限付きクエリとエンティティ図の作成

インストール

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

$npx skills add https://github.com/zebbern/claude-code-guide --skill database-scout

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

同梱ファイルLICENSEscripts/db_explorer.py

詳細

database-scout

SQLite/PostgreSQL データベースを読み取り専用で調査するツールです。テーブルスキーマの確認、データのプレビュー、ER 図の生成、安全なクエリの実行ができます。

機能の概要

機能説明
すべてのテーブルを一覧表示データベース内のテーブルとビューを、行数とともに表示します
テーブルスキーマの確認カラム名、型、制約(PK/FK/NOT NULL)、インデックス、デフォルト値を確認します
データのプレビューテーブルの先頭 N 行を表示します
ER 図の生成レンダリング可能な Mermaid erDiagram 構文を出力します
安全な読み取り専用クエリSELECT/WITH/EXPLAIN のみ許可され、書き込み操作はブロックされます

セキュリティ対策

  • 接続レベルでの読み取り専用設定:SQLite は ?mode=ro URI で開き、PostgreSQL は SET SESSION READ ONLY を使用します
  • SQL ホワイトリスト:SELECT/WITH/EXPLAIN/PRAGMA/SHOW で始まるステートメントのみを許可します
  • 危険なキーワードのブロック:INSERT、UPDATE、DELETE、DROP、ALTER、CREATE など、30 以上のキーワードをブロックします
  • 複数ステートメントのブロック:セミコロンで区切られた複数の SQL ステートメントを拒否します(インジェクションを防止)
  • 識別子のエスケープ:SQL インジェクションを防ぐため、テーブル名を二重引用符でエスケープします

クイックスタート

# List all tables in a SQLite database
python3 scripts/db_explorer.py --db-path data.db list-tables

# Inspect table schema
python3 scripts/db_explorer.py --db-path data.db describe users

# Preview data (default 20 rows)
python3 scripts/db_explorer.py --db-path data.db preview orders --limit 10

# Generate Mermaid ER diagram
python3 scripts/db_explorer.py --db-path data.db er-diagram

# Run a read-only query
python3 scripts/db_explorer.py --db-path data.db query "SELECT name, age FROM users WHERE age > 18 LIMIT 10"
PostgreSQL
# Connect to PostgreSQL
python3 scripts/db_explorer.py --db-type postgres --dsn "host=localhost dbname=mydb user=reader" list-tables

# Inspect table schema
python3 scripts/db_explorer.py --db-type postgres --dsn "host=localhost dbname=mydb user=reader" describe orders

詳細な使い方

パラメーター
パラメーター必須デフォルト説明
--db-typeいいえsqliteデータベースの種類:sqlite または postgres
--db-pathはい(SQLite の場合)—SQLite データベースファイルへのパス
--dsnはい(PostgreSQL の場合)—PostgreSQL 接続文字列
サブコマンド
コマンド説明例
list-tablesすべてのテーブル/ビューを一覧表示しますlist-tables
describe <table>テーブルスキーマの詳細を表示しますdescribe users
preview <table> [--limit N / -n N]先頭 N 行をプレビューしますpreview orders --limit 5
er-diagramMermaid ER 図を生成しますer-diagram
query "<sql>"読み取り専用 SQL クエリを実行しますquery "SELECT count(*) FROM users"

出力例

list-tables
[
  {"name": "users", "type": "table", "row_count": 1500},
  {"name": "orders", "type": "table", "row_count": 8200},
  {"name": "user_stats", "type": "view", "row_count": 1500}
]
describe
{
  "table": "orders",
  "row_count": 8200,
  "columns": [
    {"cid": 0, "name": "id", "type": "INTEGER", "notnull": true, "default": null, "primary_key": true},
    {"cid": 1, "name": "user_id", "type": "INTEGER", "notnull": true, "default": null, "primary_key": false},
    {"cid": 2, "name": "amount", "type": "REAL", "notnull": false, "default": "0.0", "primary_key": false}
  ],
  "foreign_keys": [
    {"from": "user_id", "to_table": "users", "to_column": "id"}
  ],
  "indexes": [
    {"name": "idx_orders_user_id", "unique": false, "columns": ["user_id"]}
  ]
}
er-diagram(Mermaid)
erDiagram
    users {
        INTEGER id PK
        TEXT name
        TEXT email
        INTEGER age
    }
    orders {
        INTEGER id PK
        INTEGER user_id FK
        REAL amount
        TEXT created_at
    }
    users ||--o{ orders : "user_id"

依存関係

  • Python 3.8 以降(sqlite3 は組み込みモジュールです)
  • PostgreSQL のサポートには pip install psycopg2-binary が必要です

コメント