Data & Search9.3k

インテリジェントSQL変換&DBエクスプローラー

あらゆるPostgreSQLデータベースに安全に接続します。スキーマ構造を簡単に検査し、Claudeに自然言語の分析的な質問を高度に最適化されたSQLクエリに変換させ、その場で実行させます。

解決される課題と中核的価値

ビジネス関係者や経験豊富な開発者でさえ、特定のリレーショナルマッピングを思い出したり、複雑なウィンドウ関数を書いたり、基本的な答えを抽出するためだけに構文のデバッグを行ったりするのに何時間も費やすことがよくあります。Postgres Database Query MCPは、実質的に超人的なデータアナリストをローカルターミナルに直接連れてきます。

  • 自然言語からSQLへ:「今四半期のプレミアムユーザーの解約率はどれくらいですか?」AIがDBスキーマを解析し、完璧なSQLを作成して実行し、数値と傾向を使って直接回答します。
  • 探索的データ分析(EDA):未知のデータベースをナビゲートし、外部キーをインテリジェントに発見し、テーブルサイズを評価し、事前のドキュメントなしにデータベースが実際に「何に」使われているかを要約できます。
  • データクレンジングアクション:書き込みアクセス権限が与えられた場合、AIは大規模で的を絞った更新を実行し、構造化が不十分なデータエントリを効率的に正規化できます。

内部アーキテクチャ

このサーバーはネイティブのNode.js Postgresドライバーを使用するため、モデルはツールを活用して実質的に「スキーマの一覧表示」、「テーブルの記述」、「クエリの実行」を行うことができます。Claude 3.5 Sonnetは間違いなく世界最高のコーディング機能を備えているため、正確なスキーマを与えれば、人間が45分間見つめていなければならないようなSQL結合の「ゼロショット」実行が可能になります。

試すべき魔法のプロンプトトップ5

  1. 「『public』スキーマ内のすべてのテーブルを見て、このシステム内でデータがどのように流れているかを示すMarkdownの視覚的なエンティティ関係(ER)図を作成して。」
  2. 「最も高価な製品トップ5を検索するクエリを作成して実行して。過去30日間のそれらの総生成収益を計算して。」
  3. 「『users』テーブルを分析して。2023年全体の週ごとのユーザー登録数の統計的な内訳を提供して。」
  4. 「このクエリ『SELECT * FROM massive_log』は時間がかかりすぎてCPUスパイクを引き起こしています。不足しているインデックスを提案して作成するためにスキーマを分析して。」
  5. 「『customers』テーブルに見つからない孤立した『customer_id』を持つ『orders』テーブル内のレコードを特定して。データベースをクリーンにするためにそれらを削除して。」

サーバー設定例(config.json)

接続文字列(`postgres://user:pass@host:port/dbname`)を準備しておいてください:

"mcpServers": {
  "postgres": {
    "command": "npx",
    "args": [
      "-y",
      "@modelcontextprotocol/server-postgres",
      "postgresql://username:password@localhost:5432/my_database"
    ]
  }
}

トラブルシューティングのメモ

  • 接続が拒否されました。データベースが外部接続を受け入れていることを確認してください。Dockerネットワークによっては、`localhost`を使用すると失敗する場合があります。`host.docker.internal`を使用してください。
  • 読み取り専用エラー。読み取り専用のレプリカユーザー文字列(強く推奨)を使用している場合、`INSERT`または`DROP`を使用しようとする操作は自然に失敗し、自動的な安全層が提供されます。

セキュリティと権限

高リスクの警告:マスターデータベースの鍵をAIに渡すと、悪意のあるプロンプトによってAIが幻覚を起こした場合、WHERE句のない単一の`DROP TABLE`または`DELETE FROM users`であなたのスタートアップの寿命が終わる可能性があります。必ずGRANT SELECT ON ALL TABLES IN SCHEMA publicを備えた特定のPostgreSQLユーザーを作成し、MCPテスト用に絶対的なREAD-ONLY(読み取り専用)権限を強制してください!

$ cd ../* END_OF_FILE */