DBHub MCPで複数のDBに接続する

先日、Claude Code + DBHub MCPが便利という話を書きました

Claude Code + DBHub MCPの開発体験が良すぎた件
ちょっと複雑なテーブル群の設計をしようと思って、まずはClaudeに相談して大体のDDLを作りました。いままでならそれをDB用のツールを使って実行してテーブルを作って、テストデータを入れてクエリを書いてみて試行錯誤するところですが、今回はそ...

とても便利なのですが、面倒なのがMCPの設定時に接続文字列を入れないといけないこと。
なので、接続先のDBを変更したい場合は、一度MCPを削除して再設定する必要があります。

しかし心配ご無用、DBHubには複数のDBの接続設定を管理する仕組みがあります。

まず、プロジェクト直下にdbhub.tomlを作成します。

TOML Configuration - DBHub, Minimal Database MCP Server
# Define database sources
[[sources]]
id = "production"
dsn = "postgres://user:pass@localhost:5432/mydb"
connection_timeout = 60

[[sources]]
id = "staging"
dsn = "mysql://root:pass@localhost:3306/myapp"

# Configure tools for each source
[[tools]]
name = "execute_sql"
source = "production"
readonly = true
max_rows = 1000

[[tools]]
name = "execute_sql"
source = "staging"
readonly = false

toolsの設定で、読み取り専用などにもできるので、もし重要なDBにMCP経由でアクセスしたい場合も安心ですね。
流石に本番DBに接続するのは怖いのでやめておきましょう。

この状態で、コマンドラインから

npx @bytebase/dbhub

を実行して動作確認しておきましょう。
何も指定しないとプロジェクト直下のdbhub.tomlが読み込まれます。

ではMCPの設定ですが、まず既存のDBHubのMCP設定を削除します。

% claude mcp remove dbhub

次に、もう一度DBHub MCPを設定します。

% claude mcp add -s project --transport stdio dbhub -- npx -y @bytebase/dbhub

-sで、スコープはプロジェクト単位にしています。

プロジェクト単位にすると、プロジェクト直下に .mcp.json が作られます。
ホームディレクトリの.claude以下のファイルは膨大な量で見づらいですが、.mcp.jsonはシンプルです。

{
  "mcpServers": {
    "dbhub": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@bytebase/dbhub"
      ],
      "env": {}
    }
  }
}

コメント

タイトルとURLをコピーしました