Skip to main content
Glama
dpflucas

MySQL Database Access

npmバージョン 鍛冶屋のバッジ

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": {}
}

リストテーブル

指定されたデータベース内のすべてのテーブルを一覧表示します。

パラメータ:

  • database (オプション): データベース名(指定されていない場合はデフォルトを使用)

{
  "server_name": "mysql",
  "tool_name": "list_tables",
  "arguments": {
    "database": "my_database"
  }
}

テーブルの説明

特定のテーブルのスキーマを表示します。

パラメータ:

  • database (オプション): データベース名(指定されていない場合はデフォルトを使用)

  • table (必須): テーブル名

{
  "server_name": "mysql",
  "tool_name": "describe_table",
  "arguments": {
    "database": "my_database",
    "table": "my_table"
  }
}

クエリ実行

読み取り専用の 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

トラブルシューティング

問題が発生した場合:

  1. サーバーログでエラーメッセージを確認してください

  2. MySQLの資格情報と接続の詳細を確認する

  3. MySQLユーザーに適切な権限があることを確認する

  4. クエリが読み取り専用であり、適切にフォーマットされていることを確認してください

ライセンス

このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細についてはLICENSEファイルを参照してください。

Install Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dpflucas/mysql-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server