スクリプトのお勉強 セキュリティ

MySQL MCP Serverを設定/動作確認してみる

投稿日:

はじめに

今はやりの生成AIとして、LLM(ローカルAPI)とMySQLのMCP Serverを使用してチャットシステムを作ろうと思います。

その前に、前回作成したDBへのMySQL MCP Serverを設定したいと思います。

MCP(Model Context Protocol)とは

いまいちMCP Serverってのがよくわかりません。色々設定してみて、今はなんとなく理解しただけです。

まず、MCPとはなにか、です。

MCPは実装上、要するにプロトコルです。といってもプロトコルというより、むしろ概念に近い内容になっています。

概念図

概念的には以下になります。要は、MCP Serverが持つリソースを、トランスポートタイプを通じて転送するものはすべてMCP Serverになります。

[MCP Client] <-トランスポートタイプ-> [MCP Server]
                                    <= {リソース}

組み込みトランスポートタイプ

現状で規定されているトランスポートタイプは以下の2つです。

  • 標準入出力(STDIO)
  • HTTP with Server-Sent Events(SSE)

MCP Serverとは

上記を踏まえて、MCP Serverとは以下のようなリソースを戻すプログラムです。

{
  contents:
    [
      0:
        {
          uri: "mysql://wp_options/data"
          mimeType: "text/plain"
          text: "option_id,option_name,option_value,autoload
                 1,siteurl,https://www.tech-law-pyscho.info,yes
                 2,home,ht..."
        }
    ]
  ...
}

通信の仕方、つまりトランスポートタイプが不思議でしたが、STDIOの場合、要するにコマンドを叩くのと同じです。

MCP ClientとMCP Serverにさしたる違いはありません。

以下で具体的な起動方法を示します。

環境

WindowsおよびWSL2は以下の通りです。

  • Windows
    • MySQL 8.4.5(Windows)
  • WSL2
    • ubuntu 24.04
    • uv 0.7.2
    • (WSL2側からMySQLに接続)

MySQL接続確認

以下でまずはMySQLをアクセスできるかどうかを確認します。

WSL2から見ると、192.168.0.11がWindows上のIPアドレスになります。

$ mysql -u wordpress2 -p -P 13316 -h 192.168.0.11 -e "show databases;"
Enter password:
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wordpress          |
+--------------------+

上記のようにwordpress DBが見えるのが分かります。

MySQL MCP Server

MySQL MCP Serverの設定は以下の通りです。

$ git clone https://github.com/designcomputer/mysql_mcp_server.git
$ cd mysql_mcp_server

今でもよくわかっていませんが、MySQL MCP Serverは色々なプログラムがあります。
以下で説明する設定は、このgithub用の設定に過ぎません。

以下の環境変数を指定します。

export MYSQL_HOST=192.168.0.11
export MYSQL_PORT=13316
export MYSQL_USER=wordpress2
export MYSQL_PASSWORD=XXXXXX
export MYSQL_DATABASE=wordpress

MySQL MCP Server 起動

以下で起動します。

### pwd==mysql_mcp_serverのcloneディレクトリ
$ pwd
$ ./mysql_mcp_server
$ uv --directory . run src/mysql_mcp_server/server.py
Starting MySQL MCP server with config:
Host: 192.168.0.11
Port: 13316
User: wordpress2
Database: wordpress
2025-05-06 13:22:41,492 - mysql_mcp_server - INFO - Starting MySQL MCP server...
2025-05-06 13:22:41,492 - mysql_mcp_server - INFO - Database config: 192.168.0.11/wordpress as wordpress2

動作確認(STDIO版)

使用したMySQL MCP ServerはSTDIO版なので、STDIO版のテストをします。
以下をWSL2内で起動します。

$ npx @modelcontextprotocol/inspector

そして、http://localhost:6274にアクセスし、以下の設定をします。

  • Command: uv
  • Arguments: –directory /home/tanino/script-plactice/pythonllmchatwithmcpmysql/mysqlmcpserver run src/mysqlmcp_server/server.py
  • Environment Valiable: 上記環境変数(MYSQL_HOST等)を設定する

「Connect」ボタンをクリックしたら以下の画面になります。

MCP Serverがよくわかりませんでしたが、トランスポートタイプがSTDIOの場合、MCP Serverというサーバがあると考えるより、MCP Serverは単なるコマンドであり、コマンドの入出力でリソースのやり取りをするだけと考えた方が良さそうです。

もちろんSSEの方式だと違うのでしょうけど。

終わりに

なくとなくですが、MCP Serverというものを理解した気がします。

同時にまだ発展途上でこれからも変わるのだろうなという気がします。

参考

  • https://github.com/designcomputer/mysqlmcpserver.git
    使用したMCPサーバ
  • https://modelcontextprotocol.io/
    MCP 仕様書

-スクリプトのお勉強, セキュリティ
-

執筆者:

関連記事

Python3 – django-webtest

忙しいので断片だけ。。 DjangoでWebブラウザからアクセスする感じでテストする、やり方の一つです。以前にやったように、 Seleniumからやってもいいのすが、そこまでじゃない場合の単体テスト方 …

yoyo-migrationsを使ってみる

勉強用に、PythonでPostgresqlを制御しようと思います。 その前に、Postgresqlの設定と、マイグレーションをしようかと思います。まずyoyo-migrationsを使用します。 y …

顔画像のモザイク方法(python + OpenCV + face_recognition)

Python3での顔画像モザイク方法 python3での顔画像モザイクの方法を調べてみました。 仕事とは関係なく、単なる趣味だったりしますが。。 この内容で、Djangoと統合する予定です。 Open …

祝合格! 令和5年度秋期 情報処理安全確保支援士試験(登録セキスペ)

合格しました! 情報処理安全確保支援士試験、合格しました~。 試験結果 合格 午前Ⅰ得点 ***.**点 午前Ⅱ得点 72.00点 午後得点 60点 午後得点、60点って(苦笑)まぁいいっすけどね、受 …

Djangoアプリサンプル – 画像ファイルアップロード + 顔モザイク(画像アップロード編)

仕事で使用している、Djangoについて、サンプルを作成してみようと思います。ここでは、画像ファイルのアップロードと顔モザイクを行うwebアプリを作成してみようと思います。 この記事ではファイルアップ …

google オプトアウト Click here to opt-out.