1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CursorのMCPにDBHubを導入したら素敵すぎた

1
Posted at

みなさん、エディタには何を使っていますか?
2年ほど前はVSCodeでしたが、最近はCursorを使っています。
このCursorは、AIがチャットで質問に答えてくれたり、コードの提案をしてくれます。

とても便利なのですが、DBにアクセスすることが面倒でしたが、DBhubというMCPを導入したら開発効率が上がったので紹介します。特にデバッグ作業に効果的です。

どんな変化があった?

例えば、商品の取得APIのデバッグを行っていたとします。商品テーブルには在庫数や販売期間などのカラムがあります。APIはこれらの値からあるロジックに従って、商品を返すかどうかを判別します。このAPIについて、返り値に表示すべき商品Aの情報が含まれていないから修正しなければならないとします。
(大抵の場合、このような処理は商品テーブル以外の関連テーブルの情報を判定条件に使ったりするので、if文などの分岐が多い印象です)

従来の方法

以前の私であれば、商品Aのデータ構造やAPIの仕様などから怪しい箇所の仮説を立てます。その予想を検証できるようにデバッグコードを仕込んで、実際にAPIを叩いて検証。仮説が正しければ、そこを修正し、違っていればまた別の仮説を立てます。

DBHubを活用した方法

DBHubを使うと、AIがDBの情報にアクセスできるので、AIが考えるための材料が一気に増える印象です。DBの商品Aの情報を直接取得できるので、「商品Aの〇〇_flgがfalseになっているので、この分岐処理に入りません」などといった回答がすぐに出てきます。
また、自分はやっていませんが、SELECT文以外も実行できるので、DBHubにデータを書き換えてもらって、それで本当に望む挙動になるかどうかなどといった検証もすぐにやってくれると思います。

作業環境の変化

今まではデュアルディスプレイで、片方はCursorを表示して、もう片方はDBクライアントツールを表示して開発を行っていました。従来はCursorが「〇〇カラムのこの値がおかしいのでは?」といった提案を受けて、私がDBクライアントで実際の値を確認するという作業を行っていました。
しかしこれがCursor単体でもDBの値を確認することができるようになったので、検証の手間が減り、開発スピードが向上しました。

DBHubとは?

MCPのDBHubは、Model Context Protocolを通じてデータベースに安全かつ効率的にアクセスできる拡張機能です。クエリ実行、スキーマ確認、データ閲覧を統一的に行えます。
https://github.com/bytebase/dbhub

導入方法

アクセスしたりMySQLサーバーは、クラウド上に存在し、踏み台経由でアクセスしていました。
そこで、sshトンネルをローカルから踏み台サーバーまで設定しました。

具体的な方法は、公式や以下のドキュメントを参考にしました。
https://medium.com/@tamilnambicse/supercharge-cursor-with-mcp-connect-remote-mysql-using-dbhub-5165b6a14454

以下は実際に使用している様子です。
image.png

会員情報を検索して、という曖昧な自然言語でしたので、最初はmembersテーブルを検索しに行きました。しかし、membersテーブルが存在しないということがわかると、テーブルを確認してt_memberテーブルの存在に行きつき、そのまま自動的にt_memberテーブルに対してクエリを実行しました。

設定の方法もかなり簡単だったにも関わらず、開発効率はかなり上がると思います。ぜひ試してみてください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?