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でMySQL用MCPサーバーを使ってみる

Posted at

はじめに

皆さん、Cursorは使っていますでしょうか。
自分は最近Cursorを導入し、大変便利だと感じたため、Pro会員に課金しました。

そして最近、こうしたAIチャットツールと外部ツールを連携するための、MCPサーバーなるものがあることを知りました。
試しにMySQLのMCPサーバーを導入してみたところ、Cursorのチャットから直接MySQLのデータベースへアクセスできるようになりました。
これによって、Cursorが直接データベースにアクセスして、クエリを実行してくれるようになります。
エラー時にデータベースへアクセスしてデータを取得したり、テーブル定義を変更したりしてくれます。
非常に便利です。

この記事では、備忘録も兼ねて、MySQLのMCPサーバーを導入する方法と、CursorからMCPサーバーにアクセスする方法を紹介します。

MCPサーバーとは

そもそもMCPサーバーとは何かというと、自分の理解では「AI生成ツール」と「外部ツール」を連携するためのものです。

これまでも、ChatGPTのFunctionCallingやプラグインなど、類似の仕組みは存在していました。
しかし、これらの仕組みは、今や多数存在する他の生成AI(Claude、DeepSeek、etc...)に対して普遍的に使えるようなものではありません。
そのため、他の生成AIに対して連携しようとすると、その度に新しくコードを書き直さなければなりませんでした。

ところが、MCPサーバーの登場によって、こういった規格が統一されました。
つまり、一度規格に従って生成AIと外部ツールとの連携用のコードを書いたら、ClaudeだろうがDeepSeekだろうが、後はずっとそれを使いまわせるようになったということです。

この部分に筆を割き過ぎると、この記事の主題から外れてしまうので、詳しく知りたい方は以下のような記事を参考にしてください。
https://zenn.dev/nanami_bitwise/articles/966efd5438e75b

MySQLのMCPサーバーを使ってみる

今回、こちらのネットで検索して一番上に出てきた、こちらのMCPサーバーを使うことにします。

https://github.com/designcomputer/mysql_mcp_server

Github Desktop、コマンドライン、Visual Studioなど、お好みの方法で落としてきてください。

前提: 実行環境

自身の実行環境は以下の通りです。

  • Windows 11
  • Cursor 0.48.9
  • PowerShell 7.5.0
  • 方法1の場合
    • python 3.13
    • pip 25.0.1
    • uv 0.6.13
  • 方法2の場合
    • npm 10.9.2

MCPサーバーを利用するに際して、pythonとpipとuv、またはnpmが必要となります。
各自、ローカル環境で実行できるようにしておいてください。

方法1: MCPサーバーアプリケーションをローカルに持ってきて起動

まずは、ローカルで以下のコマンドを実行します。
後々このコマンドを実行したパスを使用することになるので、自分で管理しやすい任意の場所に保存しておいてください。

pip install mysql-mcp-server

次に、Cursorの設定から、MCP→Add new global MCP serverを選択し、以下の通り設定します。

{
  "mcpServers": {
    "mysql": {
      "command": "uvへのフルパス",
      "args": [
        "--directory",
        "src\\mysql_mcp_serverへのフルパス",
        "run",
        "mysql_mcp_server"
      ],
      "env": {
        "MYSQL_HOST": "ホスト名",
        "MYSQL_PORT": "3306(ホスト側の設定に合わせてください)",
        "MYSQL_USER": "ユーザー名",
        "MYSQL_PASSWORD": "パスワード",
        "MYSQL_DATABASE": "データベース名"
      }
    },
  }
}

いくつか注意点を挙げます。

uvへのフルパスを記載する

Windows環境では、uvとだけ記載すると、コマンドを見つけることができないという旨のエラーが出ました。
そのため、uvコマンド(uv.exe)へのフルパスを記載する必要がありました。
おそらく、C:\\Users\\ユーザー名\\.local\\bin\\uvのような記載になるはずです。

パスの記載方法について

Windows環境では、\(バックスラッシュ)を用いるべきケースがほとんどですが、どうやら現在のWindowsのシェルはそのあたりを上手く変換してくれるようです。
そのため、/(スラッシュ)でも問題なく認識してくれます。
自分は念のためバックスラッシュ2つ(jsonでのエスケープのため)で記載していますが、お好みでいいと思います。
このあたりは今後検証してみたいです。

MySQLのホスト名とデータベース名

自分はこの部分を勘違いしており、かなり時間を取ってしまいました。
今回、自分が接続しようとしていたデータベースのURLは、プログラム上だと以下のような文字列になっていました。

jdbc:mysql://hoge.com:3306/fuga

上記文字列は、hoge.comにあるfugaテーブルに対して、jdbcでmysqlに接続する、という意味です。
つまりこの時、ホスト名はhoge.comであり、データベース名はfugaとなります。
Cursorの設定ファイルで言うと、MYSQL_HOSTにはhoge.com、MYSQL_DATABASEにはfugaを指定する必要があります。

方法2: Smitheryを通して起動

こちらの方法を使えば、ローカルにデータを落としてくる必要がなくなるようなのですが、自分の環境だと上手く動作しませんでした。
挑戦したい方は、以下から確認してみてください。

https://smithery.ai/server/mysql-mcp-server

動作確認

まず、CursorのMCP設定欄が以下のようになっていることを確認してください。
緑色の丸が付いていたら一旦問題ないです。

mysql-mcp-setting.png

次に、Cursorのチャットで、以下のように問い合わせてみてください。

〇〇テーブルからデータを取得してください

以下のようにデータを返してくれたら成功です。

mysql-mcp-screen-shot.png

上手く動かない場合

Ctrl + Shift + U で「出力」を開き、右上のプルダウンから「Cursor MCP」を開いてください。
MCPに関連するログが出力されているので、エラー解決のヒントになるはずです。

また、それでも上手く動かない場合は、CursorのMCPの設定から更新ボタンを押すか、Cursorを再起動してみると上手く動く可能性があります。
Cursorは絶賛開発中のエディタなので、このあたりの挙動はやや不安定なのかもしれません。

まとめ

Cursorが非常に便利だと感じる一方、ここまで便利ならデータベース側の操作も自動でやってくれないだろうかと思っていました。
このMCPサーバーを使うことで、データベースの操作までもAIが行ってくれるようになります。
実際に業務で使用する場合は、セキュリティやハルシネーションなどの課題を検討する必要があると思いますが、とても可能性を感じる素晴らしいMCPサーバーだと思いました。

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?