7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

なぜもっと早く使わなかったのか...データベース系MCPでデータ分析が楽しい!

Last updated at Posted at 2025-09-10

はじめに

こんにちは。MCPを使ったデータ分析をやって感動したのでシェアします。
私は、社内チームで使えるLLMサービス(以下、部内ツール)をチームメンバー限定で運用しています。
日毎の利用状況はどうか?どのLLMが使われていなくて置き換えた方がいいのか?よく使うユーザーは誰か?など、知りたいとは思っていても、なかなかSQLを叩いて分析するのは面倒だなと感じていました。
(部内ツールのDBはSQLiteなので)SQLite MCPを導入してからというもの、日本語で分析して欲しいことを指示するだけで、これらのデータ分析がものの2分でできるようになりました!とにかくデータ分析をするのが楽で、楽しくなりました。
本記事では、MCPの導入、実際の分析のやり方を説明します。

筆者の環境

  • M4 Macbook Pro: Sequoia 15.6.1
  • Claude Code: 1.0.100
  • sqlite3: 3.43.2
  • Node.js: 21.6.2
  • npx: 10.5.2

前提条件について

私はClaude CodeでMCPを使っています。お使いのクライアント(Claude Desktop等)のMCP設定方法に読み替えてください。
npxでMCPサーバが起動するため、Node.jsのインストールが必要になっています。Node.jsのインストール後、npx --versionでバージョンが表示されることを確認してください。

データベース系MCPの導入

メジャーなRDBのMCPの接続方法について記載します。
MySQL, PostgreSQL, SQL Server, MariaDB, SQLiteに接続できるMCPサーバーのDBHubについて紹介します。
SSL接続やSSH Tunnelもサポートしているようなので、気になった方はGitHubのページを見てください。

Claude CodeでMCPを起動するには、プロジェクトのルートディレクトリに.mcp.jsonを書く必要があります。
各DBの.mcp.jsonの書き方は以下のようになります。

SQLiteの場合

sqlite://以下のDBファイルを書き換えてください。

.mcp.json
{
    "mcpServers": {
        "dbhub": {
            "command": "npx",
            "args": [
                "-y",
                "@bytebase/dbhub",
                "--transport",
                "stdio",
                "--dsn",
                "sqlite:///Users/yshikeda/sqlite-mcp-test/conversations.db"
            ]
        }
    }
}

PostgreSQLの場合

ユーザー名・パスワード・ホスト・ポートを書き換えて使ってください。

.mcp.json
{
    "mcpServers": {
        "dbhub": {
            "command": "npx",
            "args": [
                "-y",
                "@bytebase/dbhub",
                "--transport",
                "stdio",
                "--dsn",
                "postgres://user:password@localhost:5432/dbname?sslmode=disable"
            ]
        }
    }
}

MySQLの場合

ユーザー名・パスワード・ホスト・ポートを書き換えて使ってください。

.mcp.json
{
    "mcpServers": {
        "dbhub": {
            "command": "npx",
            "args": [
                "-y",
                "@bytebase/dbhub",
                "--transport",
                "stdio",
                "--dsn",
                "mysql://user:password@localhost:3306/dbname?sslmode=disable"
            ]
        }
    }
}

安全な実行のために設定すること

[注意] DBHubはexecute_sqlという権限のみでやっているので、これをClaude Codeで自動承認してしまうと勝手にSQLが実行されます

ということで、データを勝手に書き換えられないようにするため、DBHubのREADモードを設定します。
先ほどの .mcp.json--readonlyを加えてください。

.mcp.json
    "args": [
        "-y",
        "@bytebase/dbhub",
        "--readonly",
        "--transport",
        ...
    ]

これでデータを挿入したり
スクリーンショット 2025-09-09 11.53.08.png

テーブルを削除したりしようとしても、エラーになります。
スクリーンショット 2025-09-09 11.54.42.png

データ分析を実演

部内ツールのデータベースのテーブル構成は以下のようになっています。

  • users - ユーザー情報
  • conversations - 会話データ
  • messages - メッセージデータ
  • shared_conversations - 共有会話
  • その他のFTS(全文検索)関連テーブル

日毎の利用状況はどうか?どのLLMが使われていなくて置き換えた方がいいのか?よく使うユーザーは誰か?
を分析してみます。

Tips: 最初に「テーブルの構造を確認してください。」と実行してから、分析したいことを送ると成功確率が上がります

claudeとプロジェクトルートで実行します。Claude Codeが起動したら、/mcpと打って、MCPサーバと接続できているかチェックします。
スクリーンショット 2025-09-09 13.05.42.png

connectedになっていれば、正常です。

日別の利用状況は?

日毎の利用状況を教えてください と話しかけてみました。
スクリーンショット 2025-09-09 12.06.01.png

いいですね。日別の会話数がちゃんと表示されました。

よく使われているモデルは何?

どのLLMがよく使われていますか と話しかけてみます。
スクリーンショット 2025-09-09 13.08.28.png

いいですね。使用率も出力してくれました。

よく使うユーザーは誰?

よく使うユーザーは誰かと話しかけてみます。
スクリーンショット 2025-09-09 13.12.21.png

ちゃんとユーザーIDごとに出力してくれました。とても便利ですね。

まとめ

  • 日本語での自然な指示だけでSQLクエリを自動生成・実行できる
  • データ分析が格段に簡単で楽しくなった
  • 複雑なSQL知識なしでも高度な分析が可能

MCPを活用することでデータ分析の敷居を大幅に下げ、楽しく分析することができます。ぜひ、やってみてください。

7
0
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
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?