🐘
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トンネル経由での接続を検討
トラブルシューティング
接続エラーが発生する場合
-
PostgreSQLサービスの確認
# Homebrewの場合 brew services list | grep postgresql
-
ファイアウォール設定
- localhost:5432へのアクセスが許可されているか確認
-
認証設定
- 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