はじめに
皆さん、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設定欄が以下のようになっていることを確認してください。
緑色の丸が付いていたら一旦問題ないです。
次に、Cursorのチャットで、以下のように問い合わせてみてください。
〇〇テーブルからデータを取得してください
以下のようにデータを返してくれたら成功です。
上手く動かない場合
Ctrl + Shift + U
で「出力」を開き、右上のプルダウンから「Cursor MCP」を開いてください。
MCPに関連するログが出力されているので、エラー解決のヒントになるはずです。
また、それでも上手く動かない場合は、CursorのMCPの設定から更新ボタンを押すか、Cursorを再起動してみると上手く動く可能性があります。
Cursorは絶賛開発中のエディタなので、このあたりの挙動はやや不安定なのかもしれません。
まとめ
Cursorが非常に便利だと感じる一方、ここまで便利ならデータベース側の操作も自動でやってくれないだろうかと思っていました。
このMCPサーバーを使うことで、データベースの操作までもAIが行ってくれるようになります。
実際に業務で使用する場合は、セキュリティやハルシネーションなどの課題を検討する必要があると思いますが、とても可能性を感じる素晴らしいMCPサーバーだと思いました。