MCPサーバ - MySQL

提供: MochiuWiki : SUSE, EC, PCB

📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

概要

MySQL MCPサーバは、Model Context Protocol (MCP) を通じてAIアシスタントがMySQLデータベースと対話するための標準化されたインターフェースを提供するサーバである。
MCPとは、AIアシスタントが外部ツールやデータソースと通信するためのオープンプロトコルであり、AIとデータベースをシームレスに統合する役割を担う。

MySQL MCPサーバを使用することにより、AIアシスタントが自然言語による指示でSQLクエリを実行し、データベースの内容を取得・操作できるようになる。

代表的なMySQL MCPサーバとして、以下の2種類が広く使用されている。

  • benborla/mcp-server-mysql
    Node.js (TypeScript) ベースのMCPサーバ
    読み取り専用アクセスをデフォルトとし、SSHトンネルやDDL操作、マルチデータベース対応、SSL/TLS接続などの高度な機能を備える。
  • designcomputer/mysql_mcp_server
    PythonベースのMCPサーバ
    セキュリティ優先の設計で、包括的なログ機能を持ち、シンプルな構成で利用できる。


両サーバともMITライセンスで公開されており、Claude Desktop、Claude Code等の主要なMCPクライアント環境で動作する。

主な特徴は以下の通りである。

  • MCP標準に準拠したMySQLデータベース操作インターフェース
  • SQLクエリの実行、テーブル情報の取得をAIアシスタントから直接操作可能
  • Claude Desktop、Claude Code、OpenCode等の主要なMCPクライアントをサポート
  • セキュリティ重視の設計 (認証情報は環境変数で管理)
  • Windows、MacOS、Linuxの主要なOSで動作



MCPサーバの比較

2つのMySQL MCPサーバの主な違いを以下の表に示す。

MySQL MCPサーバの比較
項目 benborla/mcp-server-mysql designcomputer/mysql_mcp_server
実装言語 Node.js (TypeScript) Python
パッケージ名 @benborla29/mcp-server-mysql mysql-mcp-server
実行コマンド npx uvx
パスワード環境変数 MYSQL_PASS MYSQL_PASSWORD
データベース環境変数 MYSQL_DB MYSQL_DATABASE
ツール名 mysql_query execute_sql
SSHトンネル 対応 非対応
DDL操作 対応 (環境変数で制御) 非対応
マルチDB対応 対応 (MYSQL_DB未設定時) 非対応
レート制限 対応 非対応
文字セット設定 非対応 対応 (MYSQL_CHARSET)
コレーション設定 非対応 対応 (MYSQL_COLLATION)
ライセンス MIT MIT



benborla/mcp-server-mysql

概要

benborla/mcp-server-mysqlは、Node.js (TypeScript) で実装されたMySQL向けのMCPサーバである。
読み取り専用アクセスをデフォルトとし、必要に応じて環境変数でINSERT、UPDATE、DELETE、DDL操作を許可できる。

主な特徴は以下の通りである。

  • 読み取り専用アクセスがデフォルト (書き込み操作は環境変数で明示的に許可が必要)
  • SSHトンネルによるリモートデータベースへのセキュアなアクセスに対応
  • DDL操作 (CREATE TABLE等) に対応
  • MYSQL_DBを未設定にすることで全データベースへのアクセスが可能 (マルチDB対応)
  • スキーマ固有の権限管理に対応
  • レート制限によるDDoS対策
  • SSL/TLS接続に対応


動作要件

benborla/mcp-server-mysqlの動作に必要な環境を以下に示す。

  • Node.js v20以上 (推奨)
    node --version で現在のバージョンを確認できる。
  • npm v9以上 または pnpm
    npmはNode.jsに同梱されている
  • MySQL 5.7以上
    MySQL 8.0以上を推奨


インストール

benborla/mcp-server-mysql のインストール方法を以下に示す。

  • グローバルインストールする場合
     npm install -g @benborla29/mcp-server-mysql
    

  • npxを使用して直接実行する場合 (インストール不要)
     npx @benborla29/mcp-server-mysql
    


通常、MCPクライアントの設定ファイルにnpxコマンドを記述することで自動的に実行されるため、別途インストールは不要である。

環境変数

benborla/mcp-server-mysqlの動作をカスタマイズするための環境変数を以下に示す。

下表に、基本接続設定の環境変数を示す。

基本接続設定
環境変数 説明 デフォルト値
MYSQL_HOST データベースホスト 127.0.0.1
MYSQL_PORT ポート番号 3306
MYSQL_USER ユーザ名 (必須)
MYSQL_PASS パスワード (必須)
MYSQL_DB ターゲットデータベース名。省略時はマルチデータベースモードで動作する。 (省略可能)
MYSQL_SOCKET_PATH Unix ソケットパス (省略可能)


下表に、セキュリティ設定の環境変数を示す。

セキュリティ設定
環境変数 説明 デフォルト値
ALLOW_INSERT_OPERATION INSERT操作の許可 false
ALLOW_UPDATE_OPERATION UPDATE操作の許可 false
ALLOW_DELETE_OPERATION DELETE操作の許可 false
ALLOW_DDL_OPERATION DDL操作 (CREATE TABLE等) の許可 false
MYSQL_RATE_LIMIT レート制限 (分あたりのクエリ数) 100
MYSQL_SSL SSL接続の有効化 (省略可能)
MYSQL_DISABLE_READ_ONLY_TRANSACTIONS 読み取り専用トランザクションの無効化 (省略可能)


下表に、パフォーマンス設定の環境変数を示す。

パフォーマンス設定
環境変数 説明 デフォルト値
MYSQL_POOL_SIZE コネクションプール数 10
MYSQL_QUERY_TIMEOUT クエリタイムアウト (ミリ秒) 30000
MYSQL_CACHE_TTL キャッシュTTL (ミリ秒) 60000
MYSQL_QUEUE_LIMIT キューイング制限 100
MYSQL_CONNECT_TIMEOUT 接続タイムアウト (ミリ秒) 10000
MYSQL_MAX_QUERY_COMPLEXITY クエリ複雑度制限 1000


下表に、SSHトンネル設定の環境変数を示す。

SSHトンネル設定
環境変数 説明 デフォルト値
SSH_ENABLED SSHトンネルの有効化 (true / false) false
SSH_HOST SSHホスト名 (必須)
SSH_PORT SSHポート番号 22
SSH_USER SSHユーザ名 (必須)
SSH_KEY_PATH 秘密鍵ファイルのパス (必須)


ツール

下表に、benborla/mcp-server-mysqlが提供するツールを示す。

提供ツール一覧
ツール名 説明 パラメータ
mysql_query SQLクエリを実行する唯一のツール
SELECTをはじめ、環境変数で許可された操作を実行できる。
SQLクエリ文字列



designcomputer/mysql_mcp_server

概要

designcomputer/mysql_mcp_serverは、Pythonで実装されたMySQL向けのMCPサーバである。
セキュリティ優先の設計を採用しており、包括的なログ機能を持つ。

主な特徴は以下の通りである。

  • テーブルリストの取得、コンテンツ読み取り、SQLクエリ実行をサポート
  • 包括的なログ機能による操作の追跡
  • セキュリティ最優先の設計 (最小権限の原則)


動作要件

designcomputer/mysql_mcp_serverの動作に必要な環境を以下に示す。

  • Python 3.11以上 (推奨: 3.12以上)
    python --version で現在のバージョンを確認できる。
  • uv (Pythonパッケージマネージャー)
    uvxコマンドの実行に必要
  • MySQL 5.7以上
    MySQL 8.0以上を推奨


インストール

designcomputer/mysql_mcp_serverのインストール方法を以下に示す。

  • pipを使用してインストールする場合
     pip install mysql-mcp-server
    

  • uvxを使用して直接実行する場合
     uvx --from mysql-mcp-server mysql_mcp_server
    


通常、MCPクライアントの設定ファイルにuvxコマンドを記述することで自動的に実行されるため、別途インストールは不要である。

環境変数

下表に、designcomputer/mysql_mcp_serverの動作をカスタマイズするための環境変数を示す。

環境変数一覧
環境変数 説明 デフォルト値
MYSQL_HOST データベースホスト localhost
MYSQL_PORT ポート番号 3306
MYSQL_USER ユーザ名 (必須)
MYSQL_PASSWORD パスワード (benborla版のMYSQL_PASSとは異なる点に注意) (必須)
MYSQL_DATABASE ターゲットデータベース名 (benborla版のMYSQL_DBとは異なる点に注意) (必須)
MYSQL_CHARSET 文字セット (省略可能)
MYSQL_COLLATION コレーション設定 (省略可能)


ツール

下表に、designcomputer/mysql_mcp_serverが提供するツールを示す。

提供ツール一覧
ツール名 説明 パラメータ
execute_sql SQLクエリを実行する唯一のツール
SQLクエリ文字列を受け取り、結果を返す。
SQLクエリ文字列



設定

設定ファイルの場所

各MCPクライアントの設定ファイルの場所は以下の通りである。

Claude Desktopの設定ファイルを以下に示す。

  • Linux
    ~/.config/Claude/claude_desktop_config.json
  • MacOS
    ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows
    %APPDATA%\Claude\claude_desktop_config.json


Claude Codeの設定ファイルを以下に示す。

  • Linux
    ~/.config/claude/settings.json
  • MacOS
    ~/Library/Application Support/claude/settings.json
  • Windows
    %APPDATA%\claude\settings.json


OpenCodeの設定ファイルを以下に示す。

  • Linux / MacOS / Windows (共通)
    $HOME/.opencode.json


Claude Desktopでの設定

Claude Desktopの設定ファイルに以下の内容を追記する。
設定ファイルを保存した後、Claude Desktopを再起動して設定を反映する。

  • benborla/mcp-server-mysql を使用する場合
     {
        "mcpServers": {
           "mcp_server_mysql": {
              "command": "npx",
              "args": ["-y", "@benborla29/mcp-server-mysql"],
              "env": {
                 "MYSQL_HOST": "127.0.0.1",
                 "MYSQL_PORT": "3306",
                 "MYSQL_USER": "root",
                 "MYSQL_PASS": "password",
                 "MYSQL_DB": "mydb"
              }
           }
        }
     }
    

  • designcomputer/mysql_mcp_server を使用する場合
     {
        "mcpServers": {
           "mysql": {
              "command": "uvx",
              "args": ["--from", "mysql-mcp-server", "mysql_mcp_server"],
              "env": {
                 "MYSQL_HOST": "localhost",
                 "MYSQL_PORT": "3306",
                 "MYSQL_USER": "your_username",
                 "MYSQL_PASSWORD": "your_password",
                 "MYSQL_DATABASE": "your_database"
              }
           }
        }
     }
    


Claude Codeでの設定

Claude Codeでは、claude mcp add コマンドを使用してMCPサーバを追加できる。

  • benborla/mcp-server-mysql をCLIコマンドで追加する場合
     claude mcp add mcp_server_mysql \
        -e MYSQL_HOST="127.0.0.1" \
        -e MYSQL_PORT="3306" \
        -e MYSQL_USER="root" \
        -e MYSQL_PASS="password" \
        -e MYSQL_DB="mydb" \
        -- npx -y @benborla29/mcp-server-mysql
    

  • 設定ファイルを使用する場合
    • benborla/mcp-server-mysqlの設定例
       {
          "mcpServers": {
             "mcp_server_mysql": {
                "command": "npx",
                "args": ["-y", "@benborla29/mcp-server-mysql"],
                "env": {
                   "MYSQL_HOST": "127.0.0.1",
                   "MYSQL_PORT": "3306",
                   "MYSQL_USER": "root",
                   "MYSQL_PASS": "password",
                   "MYSQL_DB": "mydb"
                }
             }
          }
       }
      

    • designcomputer/mysql_mcp_serverの設定例
       {
          "mcpServers": {
             "mysql": {
                "command": "uvx",
                "args": ["--from", "mysql-mcp-server", "mysql_mcp_server"],
                "env": {
                   "MYSQL_HOST": "localhost",
                   "MYSQL_PORT": "3306",
                   "MYSQL_USER": "your_username",
                   "MYSQL_PASSWORD": "your_password",
                   "MYSQL_DATABASE": "your_database"
                }
             }
          }
       }
      


OpenCodeでの設定

OpenCodeの設定ファイル (~/.opencode.json) に以下の内容を追記する。

  • benborla/mcp-server-mysqlを使用する場合
     {
        "mcpServers": {
           "mcp_server_mysql": {
              "type": "stdio",
              "command": "npx",
              "args": ["-y", "@benborla29/mcp-server-mysql"],
              "env": {
                 "MYSQL_HOST": "127.0.0.1",
                 "MYSQL_PORT": "3306",
                 "MYSQL_USER": "root",
                 "MYSQL_PASS": "password",
                 "MYSQL_DB": "mydb"
              }
           }
        }
     }
    

  • designcomputer/mysql_mcp_serverを使用する場合
     {
        "mcpServers": {
           "mysql": {
              "type": "stdio",
              "command": "uvx",
              "args": ["--from", "mysql-mcp-server", "mysql_mcp_server"],
              "env": {
                 "MYSQL_HOST": "localhost",
                 "MYSQL_PORT": "3306",
                 "MYSQL_USER": "your_username",
                 "MYSQL_PASSWORD": "your_password",
                 "MYSQL_DATABASE": "your_database"
              }
           }
        }
     }
    



使用方法

MySQL MCPサーバの各ツールは、AIアシスタントが自然言語の指示を受けて自動的に呼び出す。

SQLクエリの実行例

SQLクエリの実行に関する操作例を以下に示す。

  • テーブルの全データを取得する場合
     # プロンプト例 :
     
     usersテーブルの全データを取得してください。
    

  • 条件を指定してデータを取得する場合
     # プロンプト例 :
     
     ordersテーブルからステータスが「completed」のレコードを取得してください。
    

  • テーブルの件数を取得する場合
     # プロンプト例 :
     
     productsテーブルのレコード数を教えてください。
    


テーブル情報の取得例

テーブル構造やデータベース情報の取得に関する操作例を以下に示す。

  • データベース内のテーブル一覧を取得する場合
     # プロンプト例 :
     
     このデータベースにどのようなテーブルがありますか?
    

  • テーブルの定義を確認する場合
     # プロンプト例 :
     
     usersテーブルのカラム定義を教えてください。
    

  • テーブル間の関連を確認する場合
     # プロンプト例 :
     
     ordersテーブルとusersテーブルの関係を説明してください。
    



セキュリティ

benborla/mcp-server-mysql のセキュリティ設定

benborla/mcp-server-mysql は以下のセキュリティ機能を提供する。

セキュリティ機能の一覧
機能 説明
読み取り専用トランザクション(デフォルト) デフォルトでSELECT操作のみ許可し、データ変更は環境変数で明示的に許可が必要
プリペアドステートメント SQLインジェクション攻撃を防ぐためにプリペアドステートメントを使用
レート制限 環境変数 MYSQL_RATE_LIMIT で分あたりのクエリ数を制限できる。
コネクション暗号化 環境変数 MYSQL_SSL でSSL/TLS接続を有効化できる。
スキーマ保護 DROP、TRUNCATE、ALTER等の破壊的なDDL操作はデフォルトで禁止
きめ細かいアクセス制御 INSERT、UPDATE、DELETE、DDL操作を個別の環境変数で制御できる。


designcomputer/mysql_mcp_server のセキュリティ設定

designcomputer/mysql_mcp_server は以下のセキュリティ機能を提供する。

セキュリティのベストプラクティス
ポイント 説明
環境変数による認証 データベース認証情報を設定ファイルに直接記述せず、環境変数で管理する。
最小権限の原則 データベースユーザに必要最小限の権限のみを付与することを推奨
エラーハンドリングとログ記録 包括的なログ機能により、操作の追跡とエラーの特定が容易
ユーザパーミッション検証 接続ユーザの権限を検証してから操作を実行する。


セキュリティに関する推奨事項

MySQL MCPサーバを安全に使用するための推奨事項を以下に示す。

  • データベースユーザには必要最小限の権限のみを付与する。
  • 本番環境では読み取り専用ユーザの使用を推奨する。
  • パスワードは強固なものを使用し、設定ファイルへの直接記述を避ける。
  • 本番環境ではSSL/TLS接続を有効化する。
  • リモートデータベースへのアクセスにはSSHトンネルを使用する。
  • 定期的にMCPサーバのバージョンを更新してセキュリティパッチを適用する。



トラブルシューティング

共通の問題

下表に、OS問わず発生する可能性がある問題と対処法を示す。

共通トラブルシューティング
問題 対処法
MySQLサーバへの接続エラー MySQLサーバが起動しているか確認する。
MYSQL_HOSTMYSQL_PORTMYSQL_USER、パスワードの認証情報が正しいか確認する。
パーミッションエラー MySQLユーザが対象データベースへの適切な権限 (SELECT等) を持っているか確認する。
MySQLで SHOW GRANTS FOR 'user'@'host'; を実行して権限を確認する。
タイムアウトエラー MYSQL_CONNECT_TIMEOUT および MYSQL_QUERY_TIMEOUT の値を増やす。
ネットワーク接続が安定しているか確認する。


benborla/mcp-server-mysql 固有の問題

下表に、benborla/mcp-server-mysql で発生する可能性がある問題と対処法を示す。

benborla版のトラブルシューティング
問題 対処法
dotenvパッケージエラーが発生する 以下のコマンドで実行する。
npx -y -p @benborla29/mcp-server-mysql -p dotenv mcp-server-mysql
Server disconnectedが発生する ログファイルを確認する。
MacOS: ~/Library/Logs/Claude/mcp-server-mysql.log
Could not connect to MCP serverが発生する MCPクライアントの設定ファイルの環境変数 PATH に、Node.jsやnpx等の必要なバイナリのパスを追加する。
npxコマンドが見つからない Node.js v20以上がインストールされているか確認する。
NVMを使用している場合は、Node.js実行ファイルへの完全なパスを設定ファイルに指定する。


designcomputer/mysql_mcp_server 固有の問題

下表に、designcomputer/mysql_mcp_server で発生する可能性がある問題と対処法を示す。

designcomputer版のトラブルシューティング
問題 対処法
コレーションエラーが発生する 環境変数 MYSQL_CHARSET および MYSQL_COLLATION を設定して
文字セットを明示的に指定する。
認証エラーが発生する (MySQL 8以降) MySQL 8以降で caching_sha2_password が問題になる場合、
対象ユーザの認証プラグインを mysql_native_password に変更する。
例: ALTER USER 'user'@'host' IDENTIFIED WITH mysql_native_password BY 'password';
デバッグが必要な場合 MCP Inspectorを使用してサーバの動作をテスト・トラブルシューティングできる。
uvxコマンドが見つからない uvパッケージマネージャーがインストールされているか確認する。
pip install uv でインストールできる。