go-mcp-mysql について
go-mcp-mysql は、Go で書かれた MySQL 操作用の MCP サーバーです。Node.js や Python の環境は不要です。CRUD ツールを提供し、任意で読み取り専用モードを利用できます。README では開発途上で、本番利用には未対応とされています。
主な機能
- 01データベースとテーブルの一覧・構造を取得するツール
- 02読み取り、書き込み、更新、削除のクエリツール
- 03利用可能なツールを制限する読み取り専用モード
- 04クエリ実行前に EXPLAIN で確認する任意の機能
活用シーン
- 01AI アシスタントによる MySQL スキーマの参照
- 02読み取り専用モードで LLM が業務データを安全に検索する
MCP 対応
本プロジェクトは MCP サーバーであり、MySQL のスキーマ参照とデータ操作のツールを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの 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/Zhwt/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 つのサーバーを複数のクライアントで再利用できます。