👏

実際のDBを使える?PostgreSQL MCPサーバーを使ってみた

に公開

はじめに

TRUSTARTのfumiです!最近世界陸上の観戦で寝不足です。
9/15(月)に現地観戦をし、会場の雰囲気に圧倒されたのと世界記録も目の前で見れてとても満足です!9/21(日)も観戦するのでそれを楽しみに生きています笑

経緯

実はTRUSTARTでは8月から社員にclaude codeが支給されました!
とある週1で行っているチームの振り返りの場にて、「AIを良い精度で使えているか」が会話に上がりました。チームとしてはclaude codeの設定ルールを現状設けていない為、チーム全体で何か開発効率向上につながるツールがないか調査してみることにしました。
そこで、良さげなものがあったので紹介します!

PostgreSQL MCPサーバーとは?

簡単にいうと、AIエージェントが実際のデータベースを用いて会話ができるものです!
特に、大量データがある場合のクエリ改善など、実際のレコード数が実行計画に大きく関係するケースなどは特に役立ちそうです。

設定方法

GitHubからクローンしてビルド

git clone https://github.com/HenkDz/postgresql-mcp-server.git
cd postgresql-mcp-server
npm install
npm run build

Claude Codeの設定

プロジェクトルートに .mcp.json ファイルを作成。
/path/to/... はcloneした箇所のパス、ユーザー名:パスワード はご自身の環境に合わせて変更してください。
サンプルはlocalのみですが、localの箇所を他の環境に変えれば複数の設定が可能です!

{
  "mcpServers": {
    "local": {
      "command": "node",
      "args": [
        "/path/to/postgresql-mcp-server/build/index.js",
        "--connection-string",
        "postgresql://ユーザー名:パスワード@localhost:5432/データベース名"
      ]
    }
  }
}

使用例

claude codeを立ち上げて以下のように指示してみた
localのrequestテーブルのcreated_atが新しい順に5つレコードを表示して

Here are the 5 most recent records from request
  ordered by created_at:

  1. ID: 13 - aaa.csv (2025-03-19 12:01:22)
  2. ID: 12 - bbb.csv (2025-03-19 11:48:31)
  3. ID: 11 - ccc.csv (2025-03-13 11:18:49)
  4. ID: 10 - ddd.csv (2025-03-13 11:10:09)
  5. ID: 9 - eee.csv (2025-03-13 10:41:14)

※もし接続先を複数登録したなら、接続先の指定(「localの」「devの」など)をプロンプト内に入れれば、自動でそこを参照してくれます!

今後に向けた改善点

  • 事故を防ぐために、CREATE/DELETE/UPDATEのSQLを禁止する設定ができればより良さそう
  • 踏み台サーバーを経由したDB接続も設定できると便利そう

まとめ

実際のDBをAIエージェントが見れるので、レコード数によって実行計画が変わるクエリのパフォーマンスチューニング等で役立ちそうです!!!

参考にさせていただいた記事
https://qiita.com/satokenichi/items/8e9aee66b88b627120a8

最後に

TRUSTART株式会社は、一緒に働くメンバーを募集しています!
インターンメンバーも大募集中です!
興味を持っていただいた方は、ぜひ弊社のページをご確認ください!!!

https://www.trustart.co.jp/recruit/

TRUSTARTテックブログ

Discussion