go-mcp-mysql について
go-mcp-mysqlは、MySQLデータベースやテーブルを操作するGo製MCPサーバーです。スキーマ管理とCRUDツールを備え、読み取り専用モードや任意のクエリプラン検査に対応しますが、READMEでは本番利用の準備が整っていない可能性が示されています。
主な機能
- 01データベースとテーブルの一覧
- 02テーブルの作成と変更
- 03データの読み取りと更新
- 04読み取り専用モード
- 05EXPLAINによるプラン検査
活用シーン
- 01MySQLスキーマの確認
- 02データベースレコードの検索
- 03テーブル定義の管理
- 04読み取り操作に限定
MCP 対応
MCPクライアントにMySQLのスキーマおよびデータ操作ツールを提供します。読み取り専用モードを使えるほか、クエリ実行時にEXPLAINによるプラン検査を行えます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
go-mcp-mysql
概要
MySQL との連携や自動化にすぐ使える、負担のない Model Context Protocol(MCP)サーバーです。Node.js や Python の環境は必要ありません。このサーバーは、MySQL データベースやテーブルに対する CRUD 操作用のツールと、予期しない書き込み操作を防ぐ読み取り専用モードを提供します。また、--with-explain-check フラグを追加すると、クエリの実行前に EXPLAIN ステートメントを使用してクエリプランを確認するよう、MCP サーバーに設定できます。
このプロジェクトは開発中のため、まだ本番環境での使用には適さない場合があります。
インストール
-
最新のリリースを入手し、
$PATHまたは簡単にアクセスできる場所に配置します。 -
または、Go がインストールされている場合は、ソースからビルドできます。
go install -v github.com/optimisticdur/go-mcp-mysql@latest
使い方
方法 A:コマンドライン引数を使用する
{
"mcpServers": {
"mysql": {
"command": "go-mcp-mysql",
"args": [
"--host", "localhost",
"--user", "root",
"--pass", "password",
"--port", "3306",
"--db", "mydb"
]
}
}
}
方法 B:カスタムオプションを指定した DSN を使用する
{
"mcpServers": {
"mysql": {
"command": "go-mcp-mysql",
"args": [
"--dsn", "username:password@tcp(localhost:3306)/mydb?parseTime=true&loc=Local"
]
}
}
}
詳しくはMySQL DSNを参照してください。
注:バイナリを $PATH の外に配置した場合は、go-mcp-mysql をバイナリへのフルパスに置き換える必要があります。たとえば、バイナリを Downloads フォルダーに配置した場合は、次のパスを使用できます。
{
"mcpServers": {
"mysql": {
"command": "C:\\Users\\<username>\\Downloads\\go-mcp-mysql.exe",
"args": [
...
]
}
}
}
オプションのフラグ
--read-onlyフラグを追加すると、読み取り専用モードが有効になります。このモードでは、list、read_、desc_で始まるツールのみが使用できます。このフラグを追加した後は、MCP サーバーを更新または再起動してください。- デフォルトでは、生成されたクエリプランが想定されるパターンと一致するかどうかを確認するため、CRUD クエリは最初に
EXPLAIN ?ステートメントで実行されます。この動作を無効にするには、--with-explain-checkフラグを追加します。
ツール
スキーマツール
-
list_database- MySQL サーバー内のすべてのデータベースを一覧表示します。
- パラメーター:なし
- 戻り値:一致するデータベース名の一覧。
-
list_table- MySQL サーバー内のすべてのテーブルを一覧表示します。
- パラメーター:
name:指定した場合、指定された名前を含むテーブルを一覧表示します。SQL のSHOW TABLES LIKE '%name%'と同じです。指定しない場合は、すべてのテーブルを一覧表示します。
- 戻り値:一致するテーブル名の一覧。
-
create_table- MySQL サーバーに新しいテーブルを作成します。
- パラメーター:
query:テーブルを作成する SQL クエリ。
- 戻り値:影響を受けた行数。
-
alter_table- MySQL サーバー内の既存のテーブルを変更します。既存のテーブルやカラムを削除しないよう、LLM に指示されています。
- パラメーター:
query:テーブルを変更する SQL クエリ。
- 戻り値:影響を受けた行数。
-
desc_table- テーブルの構造を説明します。
- パラメーター:
name:構造を確認するテーブルの名前。
- 戻り値:テーブルの構造。
データツール
-
read_query- 読み取り専用の SQL クエリを実行します。
- パラメーター:
query:実行する SQL クエリ。
- 戻り値:クエリの結果。
-
write_query- 書き込み用の SQL クエリを実行します。
- パラメーター:
query:実行する SQL クエリ。
- 戻り値:影響を受けた行数、最後に挿入された ID:<last_insert_id>。
-
update_query- 更新用の SQL クエリを実行します。
- パラメーター:
query:実行する SQL クエリ。
- 戻り値:影響を受けた行数。
-
delete_query- 削除用の SQL クエリを実行します。
- パラメーター:
query:実行する SQL クエリ。
- 戻り値:影響を受けた行数。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。