MySQL Database Access MCP Server について
MySQL Database Access MCP Server は、MySQL データベース向けの読み取り専用 MCP サーバーです。データベースやテーブルの一覧表示、スキーマの確認、読み取り専用クエリの実行に対応し、検証、タイムアウト、行数制限によりアクセスを制御します。AI アシスタントに安全にデータベースを参照させたい場合に適しています。
主な機能
- 01アクセス可能なデータベースとテーブルの一覧表示
- 02テーブルスキーマの確認
- 03SELECT、SHOW、DESCRIBE、EXPLAIN に限定したクエリ実行
- 04クエリのタイムアウトと行数制限
- 05BIGINT と DECIMAL を文字列で返す仕様
- 06接続プールの設定オプション
活用シーン
- 01AI アシスタントによるデータベース構造の調査
- 02データを変更せずに業務データを照会
- 03データ分析向けの読み取り専用 SQL 入口
MCP 対応
MCP サーバーとして、list_databases、list_tables、describe_table、execute_query などのツールを MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MySQL データベースアクセス MCP サーバー
この MCP サーバーは、MySQL データベースへの読み取り専用アクセスを提供します。次の操作を行えます。
- 利用可能なデータベースの一覧表示
- データベース内のテーブルの一覧表示
- テーブルスキーマの確認
- 読み取り専用 SQL クエリの実行
セキュリティ機能
- 読み取り専用アクセス:SELECT、SHOW、DESCRIBE、EXPLAIN ステートメントのみ許可されます。ファイル操作が可能な
SELECT INTOとLOAD_FILE形式は拒否されます - クエリの検証:SQL インジェクションを防ぎ、データの変更を試みる操作をすべてブロックします
- クエリのタイムアウト:長時間実行されるクエリによるリソース消費を防ぎます
- 行数制限:過剰なデータの返却を防ぎます
- 大きな数値の正確性:精度の損失を防ぐため、BIGINT と DECIMAL の値は文字列として返されます
インストール
1. 次のいずれかの方法でインストールします。
NPM からインストール
# Install globally
npm install -g mysql-mcp-server
# Or install locally in your project
npm install mysql-mcp-server
ソースからビルド
# Clone the repository
git clone https://github.com/dpflucas/mysql-mcp-server.git
cd mysql-mcp-server
# Install dependencies and build
npm install
npm run build
2. 環境変数を設定する
サーバーには次の環境変数が必要です。
MYSQL_HOST:データベースサーバーのホスト名MYSQL_PORT:データベースサーバーのポート(デフォルト:3306)MYSQL_USER:データベースのユーザー名MYSQL_PASSWORD:データベースのパスワード(任意ですが、安全な接続のために推奨されます)MYSQL_DATABASE:デフォルトのデータベース名(任意)
3. MCP 設定に追加する
次の設定を MCP 設定ファイルに追加します。
npm 経由でインストールした場合(オプション 1):
{
"mcpServers": {
"mysql": {
"command": "npx",
"args": ["mysql-mcp-server"],
"env": {
"MYSQL_HOST": "your-mysql-host",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your-mysql-user",
"MYSQL_PASSWORD": "your-mysql-password",
"MYSQL_DATABASE": "your-default-database"
},
"disabled": false,
"autoApprove": []
}
}
}
ソースからビルドした場合(オプション 2):
{
"mcpServers": {
"mysql": {
"command": "node",
"args": ["/path/to/mysql-mcp-server/build/index.js"],
"env": {
"MYSQL_HOST": "your-mysql-host",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your-mysql-user",
"MYSQL_PASSWORD": "your-mysql-password",
"MYSQL_DATABASE": "your-default-database"
},
"disabled": false,
"autoApprove": []
}
}
}
利用可能なツール
list_databases
MySQL サーバーでアクセス可能なデータベースをすべて一覧表示します。
パラメーター:なし
例:
{
"server_name": "mysql",
"tool_name": "list_databases",
"arguments": {}
}
list_tables
指定したデータベース内のテーブルをすべて一覧表示します。
パラメーター:
database(任意):データベース名(指定しない場合はデフォルトを使用)
例:
{
"server_name": "mysql",
"tool_name": "list_tables",
"arguments": {
"database": "my_database"
}
}
describe_table
指定したテーブルのスキーマを表示します。
パラメーター:
database(任意):データベース名(指定しない場合はデフォルトを使用)table(必須):テーブル名
例:
{
"server_name": "mysql",
"tool_name": "describe_table",
"arguments": {
"database": "my_database",
"table": "my_table"
}
}
execute_query
読み取り専用 SQL クエリを実行します。
パラメーター:
query(必須):SQL クエリ(SELECT、SHOW、DESCRIBE、EXPLAIN ステートメントのみ許可されます)database(任意):データベース名(指定しない場合はデフォルトを使用)
例:
{
"server_name": "mysql",
"tool_name": "execute_query",
"arguments": {
"database": "my_database",
"query": "SELECT * FROM my_table LIMIT 10"
}
}
高度な接続プール設定
MySQL 接続プールの動作をより細かく制御するには、追加のパラメーターを設定できます。
{
"mcpServers": {
"mysql": {
"command": "npx",
"args": ["mysql-mcp-server"],
"env": {
"MYSQL_HOST": "your-mysql-host",
"MYSQL_PORT": "3306",
"MYSQL_USER": "your-mysql-user",
"MYSQL_PASSWORD": "your-mysql-password",
"MYSQL_DATABASE": "your-default-database",
"MYSQL_CONNECTION_LIMIT": "10",
"MYSQL_QUEUE_LIMIT": "0",
"MYSQL_CONNECT_TIMEOUT": "10000",
"MYSQL_IDLE_TIMEOUT": "60000",
"MYSQL_MAX_IDLE": "10"
},
"disabled": false,
"autoApprove": []
}
}
}
これらの高度なオプションを使用すると、次の設定を行えます。
MYSQL_CONNECTION_LIMIT:プール内の最大接続数を設定します(デフォルト:10)MYSQL_QUEUE_LIMIT:キューに入れる接続リクエストの最大数を設定します(デフォルト:0、無制限)MYSQL_CONNECT_TIMEOUT:接続タイムアウトをミリ秒単位で設定します(デフォルト:10000)MYSQL_IDLE_TIMEOUT:接続を解放するまでのアイドル時間を設定します(ミリ秒単位)MYSQL_MAX_IDLE:プール内に保持するアイドル接続の最大数を設定します
テスト
このサーバーには、MySQL のセットアップで動作を検証するためのテストスクリプトが含まれています。
1. テスト用データベースをセットアップする
このスクリプトは、テスト用データベース、テーブル、サンプルデータを作成します。
# Set your MySQL credentials as environment variables
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=your_username
export MYSQL_PASSWORD=your_password
# Run the setup script
npm run test:setup
2. MCP ツールをテストする
このスクリプトは、テスト用データベースに対して各 MCP ツールをテストします。
# Set your MySQL credentials as environment variables
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=your_username
export MYSQL_PASSWORD=your_password
export MYSQL_DATABASE=mcp_test_db
# Run the tools test script
npm run test:tools
3. すべてのテストを実行する
セットアップとツールのテストを両方実行するには、次のようにします。
# Set your MySQL credentials as environment variables
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=your_username
export MYSQL_PASSWORD=your_password
# Run all tests
npm test
トラブルシューティング
問題が発生した場合は、次の点を確認してください。
- サーバーログにエラーメッセージがないか確認します
- MySQL の認証情報と接続の詳細を確認します
- MySQL ユーザーに適切な権限があることを確認します
- クエリが読み取り専用で、正しい形式であることを確認します
ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細は LICENSE ファイルを参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。