mcp_mysql_server について
mcp_mysql_server_pro は、ロールベースの権限管理により MySQL データベースを安全に操作する MCP サーバーです。基本的な CRUD に加え、データベースの異常分析機能を備えています。STDIO、SSE、Streamable HTTP の各トランスポートに対応し、カスタムツールで拡張できます。
主な機能
- 01STDIO、SSE、Streamable HTTP トランスポートに対応
- 02OAuth2.0 認証のサポート
- 03readonly、writer、admin の3つの権限ロール
- 04SQL 実行計画の分析と最適化の提案
- 05データベースの健全性とテーブルロックの分析
- 06テーブルコメントに基づくテーブル検索
活用シーン
- 01AI アシスタントに権限管理された MySQL アクセスを提供
- 02低速 SQL の実行計画とインデックスの分析
- 03デッドロックやロック競合の調査
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mcp_mysql_server_pro
はじめに
mcp_mysql_server_pro は、MySQL の CRUD 操作だけでなく、データベースの異常分析機能も備えており、開発者がカスタムツールで簡単に拡張できます。
- すべての Model Context Protocol(MCP)の転送モード(STDIO、SSE、Streamable Http)をサポート
- OAuth2.0 をサポート
- 「;」で区切った複数の SQL 実行をサポート
- テーブルコメントに基づくデータベースのテーブル名とフィールドの検索をサポート
- SQL 実行計画の分析をサポート
- 中国語のフィールド名のピンイン変換をサポート
- テーブルロック分析をサポート
- データベースのヘルス状態分析をサポート
- readonly、writer、admin の3つのロールによる権限制御をサポート
"readonly": ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN"], # 読み取り専用権限 "writer": ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN", "INSERT", "UPDATE", "DELETE"], # 読み書き権限 "admin": ["SELECT", "SHOW", "DESCRIBE", "EXPLAIN", "INSERT", "UPDATE", "DELETE", "CREATE", "ALTER", "DROP", "TRUNCATE"] # 管理者権限 - プロンプトテンプレートの呼び出しをサポート
ツール一覧
| ツール名 | 説明 |
|---|---|
| execute_sql | 権限設定に基づいて、["SELECT", "SHOW", "DESCRIBE", "EXPLAIN", "INSERT", "UPDATE", "DELETE", "CREATE", "ALTER", "DROP", "TRUNCATE"] コマンドを実行できる SQL 実行ツール |
| get_chinese_initials | 中国語のフィールド名をピンインの頭文字に変換します |
| get_db_health_running | MySQL の健全性ステータス(接続ステータス、トランザクションステータス、実行ステータス、ロックステータス)を分析します |
| get_table_desc | テーブル名に基づいてデータベース内のテーブル構造を検索します。複数テーブルのクエリに対応しています |
| get_table_index | テーブル名に基づいてデータベース内のテーブルインデックスを検索します。複数テーブルのクエリに対応しています |
| get_table_lock | 現在の MySQL サーバーに行レベルまたはテーブルレベルのロックがあるかどうかを確認します |
| get_table_name | テーブルのコメントと説明に基づいて、データベース内のテーブル名を検索します |
| get_db_health_index_usage | 現在接続中の mysql データベースのインデックス使用状況を取得します。冗長なインデックス、パフォーマンスの低いインデックス、およびクエリ時間が 30 秒を超える未使用インデックスの上位 5 件を含みます |
| optimize_sql | MySQL の実行計画、テーブル構造情報、テーブルデータ量、テーブルインデックスに基づいて、専門的な最適化案を提供する SQL パフォーマンス最適化ツールです。 |
| use_prompt_queryTableData | 組み込みのプロンプトを使用して、モデルに mcp のツールチェーン呼び出しを構築させます(一般的に使用される固定ツールではありません。有効にするにはコードの変更が必要です。詳細はこのクラスを参照してください) |
プロンプト一覧
| プロンプト名 | 説明 |
|---|---|
| analyzing-mysql-prompt | MySQL 関連の問題を分析するためのプロンプトです |
| query-table-data-prompt | ツールを使ってテーブルデータをクエリするためのプロンプトです。説明が空の場合、MySQL データベースクエリアシスタントとして初期化されます |
使用方法
インストールと設定
- パッケージをインストール
pip install mysql_mcp_server_pro
- 環境変数を設定
次の内容で
.envファイルを作成します。
# MySQL Database Configuration
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=your_username
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=your_database
# Optional, default is 'readonly'. Available values: readonly, writer, admin
MYSQL_ROLE=readonly
- サービスを起動
# SSE mode
mysql_mcp_server_pro --mode sse --envfile /path/to/.env
## Streamable Http mode (default)
mysql_mcp_server_pro --envfile /path/to/.env
# Streamable Http oauth Authentication
mysql_mcp_server_pro --oauth true
- MCP クライアント
「uv を使用してサービスを起動する」を参照してください。 ^_^
注意:
.envファイルはコマンドを実行するディレクトリに配置するか、--envfile パラメーターを使用してパスを指定してください。- これらの変数は、環境に直接設定することもできます。
- データベースの設定が正しく、接続可能であることを確認してください。
uvx で実行する場合のクライアント設定
- この方法は、ソースコードをダウンロードする必要がなく、MCP 対応クライアントで直接使用できます。たとえば、Tongyi Qianwen プラグイン、trae エディターなどです。
{
"mcpServers": {
"mysql": {
"command": "uvx",
"args": [
"--from",
"mysql_mcp_server_pro",
"mysql_mcp_server_pro",
"--mode",
"stdio"
],
"env": {
"MYSQL_HOST": "192.168.x.xxx",
"MYSQL_PORT": "3306",
"MYSQL_USER": "root",
"MYSQL_PASSWORD": "root",
"MYSQL_DATABASE": "a_llm",
"MYSQL_ROLE": "admin"
}
}
}
}
Streamable Http モードでのローカル開発
- uv を使用してサービスを起動
cursor、cline などの MCP クライアントツールに、次の内容を追加します。
mcp json は次のとおりです。
{
"mcpServers": {
"mysql_mcp_server_pro": {
"name": "mysql_mcp_server_pro",
"type": "streamableHttp",
"description": "",
"isActive": true,
"url": "http://localhost:3000/mcp/"
}
}
}
.env ファイルの内容を変更し、ご利用のデータベース接続情報に更新します。
# MySQL Database Configuration
MYSQL_HOST=192.168.xxx.xxx
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=root
MYSQL_DATABASE=a_llm
MYSQL_ROLE=admin
起動コマンド:
# Download dependencies
uv sync
# Start
uv run -m mysql_mcp_server_pro.server
# Custom env file location
uv run -m mysql_mcp_server_pro.server --envfile /path/to/.env
# oauth Authentication
uv run -m mysql_mcp_server_pro.server --oauth true
SSE モードでのローカル開発
- uv を使用してサービスを起動
cursor、cline などの MCP クライアントツールに、次の内容を追加します。
mcp json は次のとおりです。
{
"mcpServers": {
"mysql_mcp_server_pro": {
"name": "mysql_mcp_server_pro",
"description": "",
"isActive": true,
"url": "http://localhost:9000/sse"
}
}
}
.env ファイルの内容を変更し、ご利用のデータベース接続情報に更新します。
# MySQL Database Configuration
MYSQL_HOST=192.168.xxx.xxx
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=root
MYSQL_DATABASE=a_llm
MYSQL_ROLE=admin
起動コマンド:
# Download dependencies
uv sync
# Start
uv run -m mysql_mcp_server_pro.server --mode sse
# Custom env file location
uv run -m mysql_mcp_server_pro.server --mode sse --envfile /path/to/.env
STDIO モードでのローカル開発
cursor、cline などの MCP クライアントツールに、次の内容を追加します。
mcp json は次のとおりです。
{
"mcpServers": {
"operateMysql": {
"isActive": true,
"name": "operateMysql",
"command": "uv",
"args": [
"--directory",
"/Volumes/mysql_mcp_server_pro/src/mysql_mcp_server_pro", # Replace this with your project path
"run",
"-m",
"mysql_mcp_server_pro.server",
"--mode",
"stdio"
],
"env": {
"MYSQL_HOST": "localhost",
"MYSQL_PORT": "3306",
"MYSQL_USER": "root",
"MYSQL_PASSWORD": "123456",
"MYSQL_DATABASE": "a_llm",
"MYSQL_ROLE": "admin"
}
}
}
}
カスタムツールの拡張
-
handles パッケージに新しいツールクラスを追加し、BaseHandler を継承して、get_tool_description メソッドと run_tool メソッドを実装します。
-
init.py で新しいツールをインポートし、サーバーで使用できるようにします。
OAuth2.0 認証
- 認証サービスを起動します。デフォルトでは、組み込みの OAuth 2.0 パスワードモード認証を使用します。認証サービスのアドレスは、env ファイルで変更できます。
uv run -m mysql_mcp_server_pro.server --oauth true
-
http://localhost:3000/login で認証サービスにアクセスします。デフォルトのユーザー名とパスワードは env ファイルで設定されています。
-
トークンをコピーして、リクエストヘッダーに追加します。例:
{
"mcpServers": {
"mysql_mcp_server_pro": {
"name": "mysql_mcp_server_pro",
"type": "streamableHttp",
"description": "",
"isActive": true,
"url": "http://localhost:3000/mcp/",
"headers": {
"authorization": "bearer TOKEN_VALUE"
}
}
}
}
例
- 新しいテーブルを作成してデータを挿入します。プロンプトの形式は次のとおりです。
# Task
Create an organizational structure table with the following structure: department name, department number, parent department, is valid.
# Requirements
- Table name: department
- Common fields need indexes
- Each field needs comments, table needs comment
- Generate 5 real data records after creation
- テーブルコメントに基づいてデータをクエリします。プロンプトは次のとおりです。
Search for data with Department name 'Executive Office' in Department organizational structure table
- 遅い SQL を分析します。プロンプトは次のとおりです。
select * from t_jcsjzx_hjkq_cd_xsz_sk xsz
left join t_jcsjzx_hjkq_jcd jcd on jcd.cddm = xsz.cddm
Based on current index situation, review execution plan and provide optimization suggestions in markdown format, including table index status, execution details, and optimization recommendations
- SQL のデッドロック問題を分析します。プロンプトは次のとおりです。
update t_admin_rms_zzjg set sfyx = '0' where xh = '1' is stuck, please analyze the cause
- ヘルスステータスを分析します。プロンプトは次のとおりです。
Check the current health status of MySQL
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
