🐘

Claude CodeとPostgreSQLをつなぐ!MCP連携で実現するAI駆動のデータベース操作

に公開

はじめに

「Claude Codeでデータベースの内容を直接確認できたら便利なのに...」と思ったことはありませんか?

MCP(Model Context Protocol)を使えば、Claude CodeからPostgreSQLデータベースに直接アクセスし、自然言語でデータの検索や分析ができるようになります。本記事では、その設定方法と活用例を詳しく解説します。

MCPとは?

MCP(Model Context Protocol)は、Claude Codeが外部サービスやツールと連携するための標準化されたプロトコルです。MCPサーバーを介することで、Claude Codeは様々な外部リソースにアクセスできるようになります。

なぜPostgreSQL連携が便利なのか

  • 自然言語でのクエリ実行: 「先月登録されたユーザー数を教えて」といった自然な質問でデータを取得
  • スキーマの即座な確認: テーブル構造やカラム情報を瞬時に把握
  • データ分析の効率化: 複雑なSQLを書かずに、必要な情報を素早く抽出
  • 開発中のデバッグ: データの状態をリアルタイムで確認しながら開発

セットアップ手順

1. 前提条件の確認

必要なツールがインストールされているか確認します:

# PostgreSQLの稼働確認
pg_isready -h localhost -p 5432

# Claude Codeのバージョン確認
claude --version

2. 読み取り専用ユーザーの作成

セキュリティのため、MCP専用の読み取り専用ユーザーを作成します:

-- 読み取り専用ユーザーを作成
CREATE USER mcp_readonly WITH PASSWORD 'your_secure_password';

-- データベースへの接続権限を付与
GRANT CONNECT ON DATABASE your_database TO mcp_readonly;

-- publicスキーマの使用権限を付与
GRANT USAGE ON SCHEMA public TO mcp_readonly;

-- 全テーブルに対してSELECT権限を付与
GRANT SELECT ON ALL TABLES IN SCHEMA public TO mcp_readonly;

-- 将来作成されるテーブルにも自動的にSELECT権限を付与
ALTER DEFAULT PRIVILEGES IN SCHEMA public 
GRANT SELECT ON TABLES TO mcp_readonly;

3. MCPサーバーの追加

Claude CodeにPostgreSQLのMCPサーバーを追加します:

claude mcp add postgres-mydb -- \
  npx -y mcp-postgres-server \
  --dsn "postgresql://mcp_readonly:your_secure_password@localhost:5432/your_database"

4. 接続確認

設定が正しく行われたか確認します:

claude mcp list

✅ 「postgres-mydb: ... - ✓ Connected」と表示されれば成功です!

使用例

データベース構造の確認

「usersテーブルのスキーマを見せて」
「データベースにあるテーブル一覧を表示して」
「ordersテーブルのカラム情報を詳しく教えて」

データの検索・分析

「直近1週間の新規ユーザー数を教えて」
「売上金額が最も高い商品TOP10を表示」
「キャンセルされた注文の理由を集計して」

複雑なクエリの実行

「月別のアクティブユーザー数の推移をSQLで取得して」
「商品カテゴリごとの平均価格を計算」

セキュリティのベストプラクティス

1. 環境変数でパスワード管理

# .envファイルに設定
export MCP_DB_PASSWORD=your_secure_password

# MCPサーバー追加時に環境変数を使用
claude mcp add postgres-mydb -- \
  npx -y mcp-postgres-server \
  --dsn "postgresql://mcp_readonly:${MCP_DB_PASSWORD}@localhost:5432/your_database"

2. アクセス制限の実装

特定のテーブルのみアクセス可能にする場合:

-- 特定のテーブルのみに権限を付与
GRANT SELECT ON TABLE users, orders, products TO mcp_readonly;

3. 本番環境での注意点

  • ❌ 本番データベースへの直接接続は避ける
  • ✅ 開発環境やレプリカデータベースを使用
  • ✅ VPNやSSHトンネル経由での接続を検討

トラブルシューティング

接続エラーが発生する場合

  1. PostgreSQLサービスの確認

    # Homebrewの場合
    brew services list | grep postgresql
    
  2. ファイアウォール設定

    • localhost:5432へのアクセスが許可されているか確認
  3. 認証設定

    • pg_hba.confでローカル接続が許可されているか確認

MCPサーバーの再設定

# 既存の設定を削除
claude mcp remove postgres-mydb

# 再度追加
claude mcp add postgres-mydb -- \
  npx -y mcp-postgres-server \
  --dsn "postgresql://..."

実践的な活用シナリオ

1. 開発中のデータ確認

開発者: 「user_id = 123のユーザーの最新の注文情報を表示して」
Claude: [SQLを実行し、結果を表示]

2. データ品質チェック

開発者: 「NULLが含まれるカラムを持つテーブルを一覧表示」
Claude: [データ品質の問題を検出]

3. パフォーマンス分析

開発者: 「最もレコード数が多いテーブルTOP5を教えて」
Claude: [テーブルサイズを分析]

まとめ

MCP PostgreSQL連携により、Claude Codeがデータベースと直接対話できるようになります。これにより:

  • 🚀 開発効率が大幅に向上
  • 🔍 データ探索が簡単に
  • 📊 即座にデータ分析が可能
  • 🛡️ 読み取り専用で安全

セキュリティに配慮しながら設定すれば、開発体験を大きく向上させる強力なツールとなります。ぜひ、あなたのプロジェクトでも試してみてください!

参考リンク

Discussion