はじめに
今はやりの生成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 仕様書