mcpField
M
MySQL Database Access MCP Server

MySQL Database Access MCP Server

ローカル
github.com/dpflucasデータベース745 週間前に更新

MySQL Database Access MCP Server について

MySQL Database Access MCP Server は、MySQL データベース向けの読み取り専用 MCP サーバーです。データベースやテーブルの一覧表示、スキーマの確認、読み取り専用クエリの実行に対応し、検証、タイムアウト、行数制限によりアクセスを制御します。AI アシスタントに安全にデータベースを参照させたい場合に適しています。

主な機能

  1. 01アクセス可能なデータベースとテーブルの一覧表示
  2. 02テーブルスキーマの確認
  3. 03SELECT、SHOW、DESCRIBE、EXPLAIN に限定したクエリ実行
  4. 04クエリのタイムアウトと行数制限
  5. 05BIGINT と DECIMAL を文字列で返す仕様
  6. 06接続プールの設定オプション

活用シーン

  1. 01AI アシスタントによるデータベース構造の調査
  2. 02データを変更せずに業務データを照会
  3. 03データ分析向けの読み取り専用 SQL 入口

MCP 対応

MCP サーバーとして、list_databases、list_tables、describe_table、execute_query などのツールを MCP クライアントに提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"mysql": {
"command": "npx",
"args": [
"-y",
"@smithery/cli"
]
}
}
}
起動コマンドnpx -y @smithery/cli

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@smithery/cli

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

mysql-mcp-server MCP サーバー

npm version

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

トラブルシューティング

問題が発生した場合は、次の点を確認してください。

  1. サーバーログにエラーメッセージがないか確認します
  2. MySQL の認証情報と接続の詳細を確認します
  3. MySQL ユーザーに適切な権限があることを確認します
  4. クエリが読み取り専用で、正しい形式であることを確認します

ライセンス

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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。