概要
前回 open-webui から mcp サーバに接続する方法法を紹介しました
今回は localhost にある mysql サーバに接続しいろいろな操作を試してみます
なお INSERT,UPDATE,DELETE も行える設定なのでテスト用のテーブルなどに対して行いましょう
環境
- Ubuntu 24.04
- OpenWebUI 0.6.7
- LiteLLM Proxy 1.68.1
- Python 3.12.9
- mcpo 0.0.13
- mcp 1.8.0
- @benborla29/mcp-server-mysql - v0.1.18
nodejs 環境準備
mcp-server-mysql は nodejs で動作するので nodejs が動作する環境を準備します
何でも OK ですが今回は nvm を使う方法を紹介します
-
nvm use --save 20.19.0
ここで保存された .nvmrc があるパスで MCPO を動かします
config.json
mcpServers に追記します
今回は INSERT,UPDATE,DELETE も試したいので ALLOW_INSERT_OPERATION などは true に設定しています
{
"mcpServers": {
"time": {
"command": "docker",
"args": ["run", "-i", "--rm", "mcp/time"]
},
"mcp_server_mysql": {
"command": "npx",
"args": [
"-y",
"@benborla29/mcp-server-mysql"
],
"env": {
"MYSQL_HOST": "127.0.0.1",
"MYSQL_PORT": "3306",
"MYSQL_USER": "test",
"MYSQL_PASS": "xxx",
"MYSQL_DB": "devops",
"ALLOW_INSERT_OPERATION": "true",
"ALLOW_UPDATE_OPERATION": "true",
"ALLOW_DELETE_OPERATION": "true"
}
}
}
}
localhost で mysql -u test-p devops -h 127.0.0.1 でアクセスできれば上記でもアクセスできます
MCPO 起動
先ほど作成した .nvmrc と config.json があるパスで実行します
-
pipenv run mcpo --port 8000 --host 0.0.0.0 --config ./config.json --api-key "top-secret"
MCP サーバの接続
open-webui から行います
uri の部分は config.json に定義した MCP サーバのキー情報を入力します
Bearer は api_key で指定した情報をしていします
接続テストもしておきましょう
動作確認
チャット上のツールが増えていることを確認します
あとはテーブル情報などを含めて質問することでいろいろな操作をしてくれます
MCPO のログを見ると実際に投げている SQL の情報なども確認できます
最後に
open-webui + mcp-server-mysql を試してみました
自然言語でデータベースを操作できる時代が本格的に到来したなと実感しました
以下は試してみた感想です
本番ではまだ使わないほうが安全かなと思います
命令を詳細にすれば実用レベルになる気はします
- 雑なSQLを投げたりするので本番では更新削除追加系はやらないほうがよさそう
- WHERE 句 id などのユニークキーを使わずに更新や削除を行ったりする
- 命令をしっかりすれば id を使ってやってはくれそうだが雑な質問だとやらない
- コンテキストがおかしくなる場合があるのでSQLを投げたい場合は新規のチャットを作成したほうがいい
- 外部キー制約などがある場合はそれも伝えるとやってくれる
- 「先にAテーブルの外部キーを削除してからBテーブルのレコードも削除して」など
- データをINSERTするときは各カラムの情報を正確に伝えないとやってくれない
- テーブルの各カラムに制約がある場合などはちゃんと伝えなければダメそう
- 適当な値でお願いしますと命令もできるがその場合はテーブルのスキーマ情報から適当な数値や文字列を入れようとはする
0 件のコメント:
コメントを投稿