MCPサーバ - MySQL
概要
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サーバの主な違いを以下の表に示す。
| 項目 | 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_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" } } } }
- benborla/mcp-server-mysqlの設定例
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_HOST、MYSQL_PORT、MYSQL_USER、パスワードの認証情報が正しいか確認する。
|
| パーミッションエラー | MySQLユーザが対象データベースへの適切な権限 (SELECT等) を持っているか確認する。 MySQLで SHOW GRANTS FOR 'user'@'host'; を実行して権限を確認する。 |
| タイムアウトエラー | MYSQL_CONNECT_TIMEOUT および MYSQL_QUERY_TIMEOUT の値を増やす。ネットワーク接続が安定しているか確認する。 |
benborla/mcp-server-mysql 固有の問題
下表に、benborla/mcp-server-mysql で発生する可能性がある問題と対処法を示す。
| 問題 | 対処法 |
|---|---|
| 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 で発生する可能性がある問題と対処法を示す。
| 問題 | 対処法 |
|---|---|
| コレーションエラーが発生する | 環境変数 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 でインストールできる。 |