/ ディレクトリ / プレイグラウンド / db-mcp-server
● コミュニティ FreePeak ⚡ 即起動

db-mcp-server

作者 FreePeak · FreePeak/db-mcp-server

1つのMCPサーバーで複数のデータベースに対応 — MySQL、Postgres、SQLite、Oracle、TimescaleDB。各接続ごとにクエリ・スキーマ・パフォーマンスのツールセットが自動生成されます。

db-mcp-server(FreePeak)は複数のデータベースへ同時に接続します。設定された各接続に対して、クエリ・実行・トランザクション・スキーマ・パフォーマンスのツールが自動生成されます。TimescaleDB(ハイパーテーブル、連続集約)やOracle固有機能(RAC、ウォレット)にも対応しています。

なぜ使うのか

主な機能

ライブデモ

実際の動作

db.replay ▶ 準備完了
0/0

インストール

クライアントを選択

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "db": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/FreePeak/db-mcp-server"
      ],
      "_inferred": true
    }
  }
}

Claude Desktop → Settings → Developer → Edit Config を開く。保存後、アプリを再起動。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "db": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/FreePeak/db-mcp-server"
      ],
      "_inferred": true
    }
  }
}

Cursor は Claude Desktop と同じ mcpServers スキーマを使用。プロジェクト設定はグローバルより優先。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "db": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/FreePeak/db-mcp-server"
      ],
      "_inferred": true
    }
  }
}

Cline サイドバーの MCP Servers アイコンをクリックし、"Edit Configuration" を選択。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "db": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/FreePeak/db-mcp-server"
      ],
      "_inferred": true
    }
  }
}

Claude Desktop と同じ形式。Windsurf を再起動して反映。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "db",
      "command": "TODO",
      "args": [
        "See README: https://github.com/FreePeak/db-mcp-server"
      ]
    }
  ]
}

Continue はマップではなくサーバーオブジェクトの配列を使用。

~/.config/zed/settings.json
{
  "context_servers": {
    "db": {
      "command": {
        "path": "TODO",
        "args": [
          "See README: https://github.com/FreePeak/db-mcp-server"
        ]
      }
    }
  }
}

context_servers に追加。保存時に Zed がホットリロード。

claude mcp add db -- TODO 'See README: https://github.com/FreePeak/db-mcp-server'

ワンライナー。claude mcp list で確認、claude mcp remove で削除。

ユースケース

実用的な使い方: db-mcp-server

Claudeからクロスデータベース分析を実行する

👤 データエンジニア ⏱ ~25 min intermediate

使うタイミング: Postgres(アプリ用)とMySQL(レガシー)の両方から、ツールを切り替えずに1つの会話内でデータを取得したい場合。

前提条件
  • 両方の接続を記述したconfig.json — リポジトリのドキュメントに構成例があります。認証情報はインラインではなく環境変数参照で保存してください
フロー
  1. サーバーを起動する
    ./bin/server -t sse -c config.jsonを実行し、両方の接続が確立されたことを確認してください。✓ コピーしました
    → サーバーログに2件の接続成功が表示される
  2. 各DBにクエリを実行する
    prod(Postgres)から先週サインアップしたユーザーを取得。legacy(MySQL)からそのユーザーに紐づく注文を取得。メモリ上で結合してください。✓ コピーしました
    → 統合されたデータセット

結果: データウェアハウスなしでクロスシステムのインサイトを取得できます。

注意点
  • 読み取り専用の前提が崩れる — エージェントがINSERTを実行してしまう — 各接続にDB側で読み取り専用ユーザーを使用してください。エージェントの自制に頼らないこと
組み合わせ: google-sheets

ClaudeからTimescaleDBのハイパーテーブルを管理する

👤 オブザーバビリティ / IoTチーム ⏱ ~20 min advanced

使うタイミング: TimescaleのDDLを暗記せずに、ハイパーテーブルや連続集約の作成・確認を行いたい場合。

フロー
  1. 既存のハイパーテーブルを確認する
    metrics DBの全ハイパーテーブルをチャンク間隔と行数とともに一覧表示してください。✓ コピーしました
    → ハイパーテーブルの一覧表
  2. 連続集約を作成する
    sensor_readingsに対してdevice_idでグループ化し、avg・max・minの1時間ロールアップを作成してください。✓ コピーしました
    → 連続集約が作成され、リフレッシュポリシーが設定される

結果: 検索に時間をかけず、数分でTimescaleの操作が完了します。

不慣れなスキーマを解説してもらい、素早くオンボーディングする

👤 データベースを引き継ぐエンジニア ⏱ ~30 min beginner

使うタイミング: 新しいチームに配属された初日。DBの全体像を把握したい場合。

フロー
  1. スキーマをダンプする
    prodに対してschema_<conn_id>を使用し、テーブル一覧・FK関係図・行数順を返してください。✓ コピーしました
    → スキーマ + FK関係図
  2. 用語集を生成する
    各テーブルについて、カラム名とサンプル行(テーブルごと5件まで)から1行の説明を推測してください。✓ コピーしました
    → オンボーディング用チートシート

結果: 30分で実用的なメンタルモデルが構築できます。

組み合わせ

他のMCPと組み合わせて10倍の力を

クエリ結果を共有シートにエクスポートし、技術者以外のステークホルダーに共有する

prodからLTV上位50件の顧客をクエリし、'Top LTV'シートに書き込んでください。✓ コピーしました

DBのスロークエリ分析結果をPrometheusのDB関連メトリクスと照合する

performance_prodで検出されたスロークエリについて、同じ時間帯のpg_stat_statementsメトリクスをPrometheusから表示してください。✓ コピーしました

ツール

このMCPが提供する機能

ツール入力呼び出すタイミングコスト
query_<db_id> sql: str (SELECT) データの読み取り 1 query
execute_<db_id> sql: str (DDL/DML) 書き込み操作 — DB権限によって制御されます 1 query
transaction_<db_id> statements: str[] 複数ステートメントのアトミックな変更 1 tx
schema_<db_id> table?: str スキーマの探索・オンボーディング metadata query
generate_schema_<db_id> format: sql|json ドキュメントやバージョン管理用にエクスポート metadata queries
performance_<db_id> sql?: str 遅いクエリのチューニング plan + stats

コストと制限

運用コスト

APIクォータ
ご利用のDBのキャパシティに依存します
呼び出しあたりのトークン
大きな結果セットはトークンを大量に消費します — LIMITを積極的に使用してください
金額
MCPは無料。DBのホスティング費用はご自身の負担です
ヒント
常にLIMITを付与して出力を制限してください。大量データの取得にはfilesystem MCPを使ってファイルにストリーミングするのが有効です

セキュリティ

権限、シークレット、影響範囲

最小スコープ: DB-level read-only user recommended for exploration
認証情報の保管: config.jsonで環境変数を参照してください。パスワードを直接記述したままコミットしないこと
データ送信先: 設定済みのDBホストにのみ送信されます
絶対に付与しない: DB superuser to the MCP connection unless absolutely needed

トラブルシューティング

よくあるエラーと対処法

Connection pool exhausted

config.jsonでプールサイズを調整してください。DB側でゾンビセッションを終了し、エージェントの無限ループが発生していないか確認してください

確認: SELECT * FROM pg_stat_activity (for Postgres)
Oracle wallet auth fails

TNS_ADMINパスがMCPプロセスから読み取り可能である必要があります。mac/linuxではSELinux/AppArmorの制限に注意してください

Tool names don't appear for one DB

該当の接続が初期化に失敗している可能性があります。サーバーログを確認してください — 多くの場合、認証情報の誤りかファイアウォールが原因です

代替案

db-mcp-server 他との比較

代替案代わりに使う場面トレードオフ
postgres-mcp (official)Postgresのみ必要な場合単一DBのみ対応
mysql-mcp (community)MySQLのみ必要な場合単一DBのみ対応

その他

リソース

📖 GitHub の公式 README を読む

🐙 オープンな issue を見る

🔍 400以上のMCPサーバーとSkillsを見る