
MySQLデータベースアクセスMCPサーバー
このMCPサーバーは、MySQLデータベースへの読み取り専用アクセスを提供します。これにより、以下のことが可能になります。
利用可能なデータベースの一覧
データベース内のテーブルを一覧表示する
テーブルスキーマを説明する
読み取り専用SQLクエリを実行する
セキュリティ機能
読み取り専用アクセス: SELECT、SHOW、DESCRIBE、および EXPLAIN ステートメントのみが許可されます
クエリ検証: SQLインジェクションを防ぎ、データ変更の試みをブロックします
クエリタイムアウト: 長時間実行されるクエリがリソースを消費するのを防ぎます
行制限: 過剰なデータ返送を防止
Related MCP server: MCP Server for MySQL
インストール
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
Smithery経由でインストール
Smithery経由で Claude AI 用の MySQL データベース アクセス MCP サーバーを自動的にインストールするには:
npx -y @smithery/cli install @dpflucas/mysql-mcp-server --client claude
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": []
}
}
}
利用可能なツール
データベース一覧
MySQL サーバー上のアクセス可能なすべてのデータベースを一覧表示します。
パラメータ: なし
例:
{
"server_name": "mysql",
"tool_name": "list_databases",
"arguments": {}
}
リストテーブル
指定されたデータベース内のすべてのテーブルを一覧表示します。
パラメータ:
例:
{
"server_name": "mysql",
"tool_name": "list_tables",
"arguments": {
"database": "my_database"
}
}
テーブルの説明
特定のテーブルのスキーマを表示します。
パラメータ:
例:
{
"server_name": "mysql",
"tool_name": "describe_table",
"arguments": {
"database": "my_database",
"table": "my_table"
}
}
クエリ実行
読み取り専用の SQL クエリを実行します。
パラメータ:
例:
{
"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ファイルを参照してください。