Production Safe Mysql Mcp Server について
Production Safe Mysql Mcp Serverは、AIエージェントにMySQLのクエリ、スキーマ、データベース管理操作を提供します。トランザクションと複数データベースに対応し、指定された高リスクコマンドを遮断します。破壊的なDDLは明示的な有効化が必要です。
主な機能
- 01パラメーター化クエリとアトミックなトランザクション
- 02テーブルとデータベースの管理
- 03スキーマ確認とサーバー情報の取得
- 041セッションで複数データベースに対応
- 05高リスクコマンドの遮断と破壊的DDLの制限
活用シーン
- 01エージェントからMySQLデータを照会・更新
- 02複数のステートメントを一括トランザクションで実行
- 03テーブルとカラム定義の確認
- 04破壊的操作が既定で無効の状態でデータベースを管理
MCP 対応
MCPクライアント向けに、MySQLのクエリ、トランザクション、スキーマ、データベース管理ツールを公開するMCPサーバーです。各ツールのデータベース指定により、1セッションで複数のデータベースにアクセスできます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mysql-mcp
AI エージェントが MySQL データベースに直接アクセスできるようにする、Model Context Protocol(MCP)サーバーです。
できること
データのクエリと変更
execute_query— パラメーター化クエリ(?プレースホルダー)に対応し、SELECT、INSERT、UPDATE、DELETE ステートメントを実行しますexecute_transaction— 複数のステートメントをアトミックなバッチとして実行します。いずれかのステートメントが失敗すると、トランザクション全体が自動的にロールバックされます
スキーマ管理
create_table— 新しいテーブルを作成しますalter_table— カラムの追加・削除、カラム名の変更、インデックスの追加などを行いますdrop_table— テーブルを削除します(ALLOW_DESTRUCTIVE_DDL=trueが必要です)show_tables— データベース内のすべてのテーブルを一覧表示しますdescribe_table— テーブルのカラム構造を表示します
データベース管理
list_databases— すべてのユーザーデータベースを一覧表示します(システムデータベースを除く)create_database— 文字セットと照合順序を任意で指定して、新しいデータベースを作成しますdrop_database— データベースを削除します(ALLOW_DESTRUCTIVE_DDL=trueが必要です)
内部情報の取得
ping— MySQL 接続の状態を確認しますshow_columns— テーブルの詳細なカラム情報を表示しますget_server_info— MySQL のバージョン、文字セット、照合順序を返します(読み取り専用)
複数データベースのサポート
すべてのツールで database パラメーターを使用できます。追加の設定なしで、同じセッション内から異なるデータベースにクエリを実行できます。
できないこと
以下の操作はセキュリティフィルターによって恒久的にブロックされており、いかなる状況でも回避できません。
| カテゴリ | ブロックされるコマンド |
|---|---|
| MySQL の設定 | SET GLOBAL、SET @@global.*、SET @@SESSION.sql_mode |
| ユーザー管理 | CREATE USER、DROP USER、ALTER USER、RENAME USER |
| 権限管理 | GRANT、REVOKE |
| システムコマンド | FLUSH、KILL、SHUTDOWN |
| レプリケーション | RESET MASTER/REPLICA、START/STOP SLAVE/REPLICA、CHANGE MASTER |
| ファイルアクセス | LOAD DATA INFILE、SELECT INTO OUTFILE/DUMPFILE |
| プラグイン | INSTALL PLUGIN、UNINSTALL PLUGIN |
その他の制約:
- 1 回の呼び出しで
;で区切った複数のステートメントは実行できません。代わりにexecute_transactionを使用してください drop_tableとdrop_databaseはデフォルトで無効になっており、ALLOW_DESTRUCTIVE_DDL=trueが設定されていない場合はエラーを返します- クエリ結果の行数は
MAX_ROWSに制限されます(デフォルト:1000)。大きなテーブルではLIMIT句を追加してください
インストール
要件: Node.js 20+
git clone https://github.com/turkeryildirim/mysql-mcp
cd mysql-mcp
npm install
npm run build
環境変数のサンプルファイルをコピーし、認証情報を入力します。
cp .env.example .env
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=mcp_user
MYSQL_PASSWORD=your_password
# Optional
MYSQL_DATABASE=default_db
MYSQL_POOL_SIZE=10
MAX_ROWS=1000
ALLOW_DESTRUCTIVE_DDL=false
専用 MySQL ユーザーの作成(推奨)
MCP サーバー用に、最小限の権限を持つ MySQL ユーザーを作成します。
CREATE USER 'mcp_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, INDEX
ON *.* TO 'mcp_user'@'localhost';
FLUSH PRIVILEGES;
SUPER、FILE、RELOAD、GRANT OPTIONは付与しないでください。
Claude Desktop との連携
Claude Desktop の設定ファイルを開きます。
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
mcpServers の下に次のブロックを追加します。
{
"mcpServers": {
"mysql": {
"command": "node",
"args": ["/absolute/path/to/mysql-mcp/dist/index.js"],
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_PORT": "3306",
"MYSQL_USER": "mcp_user",
"MYSQL_PASSWORD": "your_password",
"MYSQL_DATABASE": "",
"MAX_ROWS": "1000",
"ALLOW_DESTRUCTIVE_DDL": "false"
}
}
}
}
Claude Desktop を再起動します。ツールパネルに mysql サーバーが表示されます。
Claude CLI との連携
オプション 1:.mcp.json — プロジェクト単位(推奨)
プロジェクトのルートに .mcp.json ファイルを作成します。
{
"mcpServers": {
"mysql": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/mysql-mcp/dist/index.js"],
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_PORT": "3306",
"MYSQL_USER": "mcp_user",
"MYSQL_PASSWORD": "your_password",
"ALLOW_DESTRUCTIVE_DDL": "false"
}
}
}
}
このディレクトリから claude を実行すると、サーバーが自動的に読み込まれます。
オプション 2:グローバル設定
claude mcp add mysql -- node /absolute/path/to/mysql-mcp/dist/index.js
環境変数を含めるには、次のようにします。
claude mcp add mysql \
-e MYSQL_HOST=localhost \
-e MYSQL_USER=mcp_user \
-e MYSQL_PASSWORD=your_password \
-- node /absolute/path/to/mysql-mcp/dist/index.js
設定を確認します。
claude mcp list
claude mcp get mysql
プロンプトの例
接続したら、自然言語でエージェントに指示できます。
Show me the structure of the users table in testdb
Fetch the last 10 orders from testdb.orders
Create a products table in testdb with id, name, price, and stock columns
Run the following two INSERTs as a single transaction: ...
開発
npm run dev # Watch mode (rebuilds on change)
npm test # Unit tests (no MySQL connection required)
npm run build # Production build → dist/
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。