mcpField
P
postgres

postgres

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

postgres について

PostgreSQL Read-Only Query Skill は、設定済みの PostgreSQL データベースに読み取り専用クエリを実行する Python スキルです。データベースの確認やスキーマの閲覧に加え、クエリと結果に制限を設けます。

主な機能

  1. 01PostgreSQL の読み取り専用クエリ
  2. 02設定済みデータベースの一覧表示
  3. 03テーブル一覧とスキーマの確認
  4. 04クエリ種別の制限と複数文の拒否
  5. 05タイムアウトと結果数の上限
  6. 06SSL モードの設定

活用シーン

  1. 01データベース内容の安全な確認
  2. 02テーブルの検索とスキーマの確認
  3. 03件数を制限した SELECT や EXPLAIN の実行

インストール

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

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

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

同梱ファイル

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

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

詳細

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

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

要件

  • Python 3.8+
  • psycopg2-binary:pip install -r requirements.txt

セットアップ

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

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

chmod 600 connections.json
{
  "databases": [
    {
      "name": "production",
      "description": "Main app database - users, orders, transactions",
      "host": "db.example.com",
      "port": 5432,
      "database": "app_prod",
      "user": "readonly_user",
      "password": "your-password",
      "sslmode": "require"
    }
  ]
}
設定フィールド
フィールド必須説明
nameはいデータベースの識別子(大文字と小文字を区別しません)
descriptionはいこのデータベースに含まれるデータ(自動選択に使用)
hostはいデータベースのホスト名
portいいえポート番号(デフォルト:5432)
databaseはいデータベース名
userはいユーザー名
passwordはいパスワード
sslmodeいいえSSL モード:disable、allow、prefer(デフォルト)、require、verify-ca、verify-full

使用方法

設定済みのデータベースを一覧表示する
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、accountsusers、accounts、customers
orders、salesorders、transactions、sales
analytics、metricsanalytics、metrics、reports
logs、eventslogs、events、audit

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

安全機能

  • 読み取り専用セッション:接続では PostgreSQL の readonly=True モードを使用します(主な保護機能)
  • クエリの検証:SELECT、SHOW、EXPLAIN、WITH クエリのみ許可されます
  • 単一ステートメント:複数のステートメントを含むクエリは拒否されます
  • SSL サポート:暗号化接続用の SSL モードを設定できます
  • クエリタイムアウト:ステートメントのタイムアウトを 30 秒に設定します
  • メモリ保護:メモリ不足を防ぐため、クエリごとの最大行数を 10,000 行に制限します
  • 列幅の上限:読みやすい出力にするため、列ごとの最大文字数を 100 文字に制限します
  • 認証情報のサニタイズ:エラーメッセージにパスワードが漏れることはありません

トラブルシューティング

エラー解決策
設定が見つからないスキルディレクトリに connections.json を作成します
認証に失敗した設定内のユーザー名とパスワードを確認します
接続がタイムアウトしたホストとポートを確認し、ファイアウォール/VPN を確認します
SSL エラーローカルデータベースの場合は "sslmode": "disable" を試します
アクセス権に関する警告chmod 600 connections.json を実行します

終了コード

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

ワークフロー

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

コメント