mcpField
P
postgres

postgres

github.com/dedalus-erp-pasデータ・データベース192 回インストール
リポジトリ

postgres について

設定済みのPostgreSQLデータベースに対して読み取り専用クエリを実行するスキルです。テーブルやスキーマの確認に対応し、クエリ種別、実行時間、結果件数を制限します。

主な機能

  1. 01設定済みデータベースへの接続
  2. 02読み取り専用クエリのみ許可
  3. 03テーブルとスキーマの確認
  4. 04実行時間と結果行数の制限
  5. 05SSLモードの設定

活用シーン

  1. 01ユーザー、注文、分析データの検索
  2. 02データベースのテーブルやスキーマの確認
  3. 03結果件数を指定したSELECTクエリの実行

インストール

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

$npx skills add https://github.com/dedalus-erp-pas/foundation-skills --skill postgres

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

同梱ファイル

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

connections.example.json
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、accounts、customers
注文、売上orders、transactions、sales
分析、メトリクスanalytics、metrics、reports
ログ、イベントlogs、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 を指定してクエリを実行します

コメント