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

Claude CodeとMySQLを連携する方法をまとめてみた

0
Posted at

「Claude Codeは使っているけど、毎回スキーマをコピペして渡すのが面倒くさい」「自然言語でSQLを書いてほしいのに、テーブル構造を説明するところから始まる」——そんな経験、ありませんか?

この記事では、MCP(Model Context Protocol)を使ってClaude CodeとMySQLを直接つなぐ方法を、設定手順から実践的な使い方まで丁寧にまとめました。一度設定してしまえば、Claudeが自分でスキーマを読んでくれるので、毎回説明する手間がゼロになります。


結論:MCP経由でつなぐだけで、Claudeがスキーマを自律的に理解してくれる

「Claude CodeとMySQLを連携したいけど、何から始めればいいかわからない」と悩んでいませんか?

結論はシンプルです。MySQL用のMCPサーバーをclaude mcp addコマンドで登録するだけで、Claude Codeが直接MySQLに接続できるようになります。一度つながれば「先月の売上をカテゴリ別に集計して」と自然言語で頼むだけでSQLが走ります。設定ファイルを書いて、接続確認して、それだけです。


そもそもMCPって何?という方へ

MCPは、Anthropicが2024年11月に公開したオープンスタンダードのプロトコルで、AIと外部ツール・データベース・APIを安全につなぐための仕組みです。よく「USB-Cの革命」と例えられます。

スマートフォンの充電がUSB-Cに統一されたように、AIと外部サービスの接続がMCPという一つのプロトコルに統一されるイメージです。MySQLだけでなく、PostgreSQL、GitHub、Slack、Notionなど数百のサービスと同じインターフェースで連携できます。

比較項目 MCP連携あり MCP連携なし
スキーマ情報の渡し方 Claudeが自動で取得 毎回コピペして渡す
SQLの実行 Claude Codeから直接実行 手動でMySQLクライアントで実行
テーブル名の認識 リアルタイムで把握 都度説明が必要
開発体験 ◎ 会話の流れで完結 ❌ 文脈が途切れやすい

エンジニアなら読むべき本を30冊以上紹介しています。
正直、私の仕事のやり方をガラッと変えた神本やSQLのチューニングに悩んだ時にめちゃくちゃ役に立ったもあります👇
→記事を読む


主なMySQL MCPサーバーの選択肢

設定前に、どのMCPサーバーを使うかを決めましょう。代表的なものを比較します。

パッケージ名 言語 特徴 向いている用途
@benborla29/mcp-server-mysql Node.js Claude Code最適化・SSH対応 開発・本番DB連携
mysql-mcp-server(PyPI) Python uvxで手軽に動く ローカル開発
@lakshya-mcp/mysql-mcp-server-claude Node.js 書き込み権限を細かく制御可 セキュリティ重視の現場
mysql-mcp-server(Go製) Go 高速・読み取り専用・監査ログ 本番参照・分析用途

私は@benborla29/mcp-server-mysqlをよく使っています。Claude Code向けに最適化されており、SSHトンネル対応もあるので、リモートDBにも使いやすいと感じています。


セットアップ手順(Node.js版)

① 事前準備

Node.js(v18以上)がインストールされていればすぐ使えます。

node -v  # v18以上であることを確認

claude mcp addで登録する(コマンド1行)

ターミナルで以下を実行します。

claude mcp add mcp_server_mysql \
  -e MYSQL_HOST=localhost \
  -e MYSQL_PORT=3306 \
  -e MYSQL_USER=your_username \
  -e MYSQL_PASS=your_password \
  -e MYSQL_DB=your_database \
  -e ALLOW_INSERT_OPERATION=false \
  -e ALLOW_UPDATE_OPERATION=false \
  -e ALLOW_DELETE_OPERATION=false \
  -- npx @benborla29/mcp-server-mysql

✅ パスワードなどの認証情報は環境変数で渡すのが基本です。.mcp.jsonにパスワードを直書きすると、Gitにコミットしてしまうリスクがあります。

.mcp.jsonで管理する場合(チーム共有向け)

プロジェクトルートに.mcp.jsonを置くと、チームメンバー全員が同じ設定を使えます。ただし認証情報は環境変数参照にしましょう。

{
  "servers": {
    "mysql": {
      "type": "stdio",
      "command": "npx",
      "args": ["@benborla29/mcp-server-mysql"],
      "env": {
        "MYSQL_HOST": "${MYSQL_HOST}",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "${MYSQL_USER}",
        "MYSQL_PASS": "${MYSQL_PASS}",
        "MYSQL_DB": "${MYSQL_DB}",
        "ALLOW_INSERT_OPERATION": "false",
        "ALLOW_UPDATE_OPERATION": "false",
        "ALLOW_DELETE_OPERATION": "false"
      }
    }
  }
}

❌ パスワードを.mcp.jsonに直書きしてGitにコミットしない
${ENV_VAR}形式で環境変数を参照する

④ 接続確認

Claude Codeを起動して/mcpと入力すると、登録されたサーバーの一覧が表示されます。

❯ 1. mcp_server_mysql ✔ connected

connectedと出ていれば成功です。


セキュリティを考えるなら「読み取り専用ユーザー」を作ろう

本番DBに接続する場合は特に、専用の読み取り専用ユーザーを用意するのがベストプラクティスです。

-- 読み取り専用ユーザーを作成
CREATE USER 'claude_readonly'@'localhost' IDENTIFIED BY 'secure_password';

-- SELECT権限のみを付与
GRANT SELECT ON your_database.* TO 'claude_readonly'@'localhost';

-- 権限を反映
FLUSH PRIVILEGES;
設定項目 推奨値 理由
ALLOW_INSERT_OPERATION false 誤ってINSERTが走るのを防ぐ
ALLOW_UPDATE_OPERATION false 予期しないデータ変更を防ぐ
ALLOW_DELETE_OPERATION false 削除事故を防ぐ
MySQLユーザー権限 SELECTのみ 二重の安全網として機能する

Claude CodeとMySQLを連携すると何ができるか

設定が完了すると、こんなことが自然言語でできるようになります。

スキーマの確認

> usersテーブルの構造を教えて

→ Claudeが自動でDESCRIBEを実行して返してくれます。

SQLの自動生成・実行

> 先月登録したユーザーのうち、購入履歴のある人を一覧で出して

→ JOINを含むSQLを生成して、そのまま実行してくれます。

データ分析

> 商品カテゴリ別の売上を月次で集計してグラフ用のCSVを出力して

→ 集計クエリの作成からCSV出力まで一気に進めてくれます。

私がいちばん便利だと感じるのは、スキーマを覚えていてくれる点です。「ordersテーブルのuser_idって外部キーどこに張ってたっけ」という確認作業が、会話の中でサクッと終わります。


スコープの使い分け:ローカル・ユーザー・プロジェクト

Claude CodeのMCP設定には3つのスコープがあります。

スコープ 用途 認証情報の扱い
local(デフォルト) 現在のプロジェクトのみ ✅ 個人のローカルに留まる
user-s user 全プロジェクトで使いたい共通DB ~/.claude.jsonに保存
project-s project チームで共有する設定 ❌ 認証情報は環境変数で参照

本番DBの接続情報はlocaluserスコープに留めておくのが安心です。


よくあるトラブルと対処法

症状 原因 対処
Connection closed. npxがPATHに見つからない 絶対パスを使うか、PATHを確認
/mcpdisconnected 認証情報の誤り or MySQLが起動していない mysql -u user -pで手動確認
JSONパースエラー .mcp.jsonに末尾カンマが入っている JSONリンターで検証する
nvm環境で動かない シェルのPATH設定が異なる nodeの絶対パスをcommandに指定する

まとめ

  • claude mcp addコマンド一行でMySQL連携は完結する
  • 認証情報は必ず環境変数参照にして、.mcp.jsonへの直書きを避ける
  • 本番DBには読み取り専用ユーザーを作って二重に安全を確保する
  • スキーマ確認・SQL生成・データ分析が自然言語だけで完結するようになる

「まず試してみよう」という方は、ローカルのMySQLに読み取り専用ユーザーを作るところからスタートするのがおすすめです。


エンジニアなら読むべき本を30冊以上紹介しています。
正直、私の仕事のやり方をガラッと変えた神本やSQLのチューニングに悩んだ時にめちゃくちゃ役に立ったもあります👇
→記事を読む

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