mcpField
M
MySQL MCP Server

MySQL MCP Server

ローカル
github.com/musaddiq-devデータベース023 週間前に更新

MySQL MCP Server について

MySQL MCP Serverは、MCPクライアントからMySQLデータベースを調査・検索するツールを提供します。安全確認付きの件数制限SELECTに加え、管理用途向けに書き込みやDDL操作も任意で利用できます。

主な機能

  1. 01テーブル一覧とスキーマ確認
  2. 02件数制限付きSELECTの実行
  3. 03テーブルDDLの取得
  4. 04クエリ実行計画の確認
  5. 05テーブルと行数の概要
  6. 06任意の書き込み・DDL操作

活用シーン

  1. 01データベーススキーマの調査
  2. 02MCPクライアントからの検索結果取得
  3. 03クエリ実行計画の確認
  4. 04承認済みのデータベース変更

MCP 対応

stdio経由で、MySQLの調査、検索、実行計画の確認、概要取得ツールをMCPクライアントに提供します。書き込みとDDLのツールは任意で、データを変更・削除できるかはデータベース権限によります。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"musaddiq-dev-mysql": {
"command": "uvx",
"args": [
"mdev-mysql-mcp-server"
],
"env": {
"MYSQL_HOST": "<MYSQL_HOST>",
"MYSQL_PORT": "<MYSQL_PORT>",
"MYSQL_USER": "<MYSQL_USER>",
"MYSQL_PASSWORD": "<MYSQL_PASSWORD>",
"MYSQL_DATABASE": "<MYSQL_DATABASE>",
"MYSQL_POOL_SIZE": "<MYSQL_POOL_SIZE>",
"LOG_LEVEL": "<LOG_LEVEL>",
"MYSQL_READ_QUERY_LIMIT": "<MYSQL_READ_QUERY_LIMIT>"
}
}
}
}
起動コマンドuvx mdev-mysql-mcp-server
設定が必要な環境変数
MYSQL_HOSTMySQL host
MYSQL_PORTMySQL port
MYSQL_USERMySQL username
MYSQL_PASSWORDシークレットMySQL password
MYSQL_DATABASEMySQL database name
MYSQL_POOL_SIZEMySQL connection pool size
LOG_LEVELPython logging level
MYSQL_READ_QUERY_LIMITMaximum rows returned by read queries

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

パッケージ
pypimdev-mysql-mcp-server0.1.2

ツール

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

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

詳細

MySQL MCP サーバー

MCP 対応クライアントから MySQL データベースを調査し、クエリを実行するための Python 製 Model Context Protocol(MCP)サーバーです。テーブルの検出、スキーマの確認、読み取りクエリの実行、DDL の取得、クエリの説明、および制御されたデータベース管理ワークフロー向けのオプションの書き込み/DDL ツールを提供します。

機能

  • テーブルの一覧表示とテーブルスキーマの説明
  • 安全性チェック付きの SELECT クエリ実行
  • SHOW CREATE TABLE の出力取得
  • クエリ実行計画の説明
  • テーブルと行数の概要表示
  • データベースの権限を意図的に昇格して実行するユーザー向けの、オプションの書き込み/DDL ツール

安全性モデル

mysql_execute_read_query は、SELECT で始まる単一のステートメントのみを受け付け、一般的なデータ変更用 SQL キーワードやリスクのあるファイル読み書き形式を拒否し、返却される行数を MYSQL_READ_QUERY_LIMIT で制限します。これは安全策であり、データベース権限の代わりにはなりません。安全に調査するには、専用の読み取り専用 MySQL ユーザーを使用してください。書き込みツールと DDL ツールは、設定されたデータベースユーザーに権限があればデータを変更または破壊する可能性があります。MCP クライアントでは、これらのツールを手動承認に設定してください。

要件

  • Python 3.11+
  • MySQL 5.7+ または MySQL 8.0+
  • Claude Desktop、Cursor、VS Code、その他の MCP ホストなどの MCP 対応クライアント

インストール

PyPI に公開されたら、標準的な Python MCP パッケージと同様にサーバーをインストールまたは実行してください。

uvx mdev-mysql-mcp-server

ソースからローカルで開発する場合:

git clone https://github.com/musaddiq-dev/mysql-mcp-server.git
cd mysql-mcp-server
python -m venv .venv
source .venv/bin/activate
pip install -e .

設定

環境変数のサンプルファイルをコピーし、データベース接続情報を設定してください。

cp .env.example .env
変数説明必須デフォルト
MYSQL_HOSTMySQL ホストいいえlocalhost
MYSQL_PORTMySQL ポートいいえ3306
MYSQL_USERMySQL ユーザー名いいえroot
MYSQL_PASSWORDMySQL パスワードいいえ空
MYSQL_DATABASEMySQL データベース名はい空
MYSQL_POOL_SIZE接続プールのサイズいいえ5
LOG_LEVELPython のログレベルいいえINFO
MYSQL_READ_QUERY_LIMIT読み取りクエリで返される最大行数いいえ1000

読み取り専用ユーザーの例:

CREATE USER 'mcp_readonly'@'localhost' IDENTIFIED BY 'change-me';
GRANT SELECT ON your_database.* TO 'mcp_readonly'@'localhost';
FLUSH PRIVILEGES;

実行

mdev-mysql-mcp-server

PyPI 公開前にローカルのチェックアウトから実行する場合:

python -m mysql_mcp_server.server

MCP クライアントの設定

公開済みのパッケージをインストールする場合は、uvx の使用を推奨します。stdio を使用する MCP サーバーは、プロトコルメッセージのみを stdout に書き込む必要があります。このサーバーは Python のログ機能を通じてログを stderr に書き込みます。

Claude Desktop / Cursor / Windsurf / Cline

ほとんどの MCP クライアントで、次の mcpServers JSON 形式を使用できます。

{
  "mcpServers": {
    "mysql": {
      "command": "uvx",
      "args": ["mdev-mysql-mcp-server"],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "mcp_readonly",
        "MYSQL_PASSWORD": "change-me",
        "MYSQL_DATABASE": "your_database"
      }
    }
  }
}

このリポジトリからローカルで開発する場合は、代わりにインストール済みのコンソールスクリプトのパスを使用してください。

{
  "mcpServers": {
    "mysql": {
      "command": "/absolute/path/to/mysql-mcp-server/.venv/bin/mdev-mysql-mcp-server",
      "args": [],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "mcp_readonly",
        "MYSQL_PASSWORD": "change-me",
        "MYSQL_DATABASE": "your_database"
      }
    }
  }
}
Claude Code CLI
claude mcp add mysql \
  --env MYSQL_HOST=localhost \
  --env MYSQL_PORT=3306 \
  --env MYSQL_USER=mcp_readonly \
  --env MYSQL_PASSWORD=change-me \
  --env MYSQL_DATABASE=your_database \
  -- uvx mdev-mysql-mcp-server
VS Code MCP

VS Code は MCP 設定で同じ command/args/env モデルを使用します。

{
  "servers": {
    "mysql": {
      "type": "stdio",
      "command": "uvx",
      "args": ["mdev-mysql-mcp-server"],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "mcp_readonly",
        "MYSQL_PASSWORD": "change-me",
        "MYSQL_DATABASE": "your_database"
      }
    }
  }
}

ツール

ツール目的安全性
mysql_list_tables設定済みデータベース内のテーブルを一覧表示読み取り専用
mysql_describe_tableテーブルのスキーマを表示読み取り専用
mysql_execute_read_query単一の行数制限付き SELECT クエリを実行読み取り専用の安全策
mysql_execute_write_query単一の INSERT、UPDATE、または DELETE を実行破壊的
mysql_execute_ddl単一の CREATE、DROP、ALTER、または TRUNCATE を実行破壊的
mysql_get_table_ddlSHOW CREATE TABLE の出力を返す読み取り専用
mysql_explain_query単一のクエリに対して EXPLAIN を実行読み取り専用
mysql_get_database_summaryテーブル一覧と行数を返す読み取り専用

スモークテスト

データベースを使わずに構文を確認するには:

python -m py_compile src/mysql_mcp_server/server.py

データベースを設定した状態でサーバーを起動し、MCP クライアントから list_tables を呼び出してください。

配布

このサーバーは、標準的な Python MCP 配布経路を通じて公開されています。

  • PyPI パッケージ:mdev-mysql-mcp-server
  • MCP Registry 名:io.github.musaddiq-dev/mysql-mcp-server
  • 実行時のヒント:uvx
  • トランスポート:stdio

この README の先頭にある mcp-name マーカーは、MCP Registry の所有権確認に必要です。ユーザーは、ローカルの MCP クライアント設定で uvx mdev-mysql-mcp-server を使用することを推奨します。

セキュリティに関する注意事項

  • 認証情報を含む .env や MCP クライアント設定をコミットしないでください。
  • 最小権限のデータベースユーザーを使用してください。
  • execute_write_query と execute_ddl は、明示的な手動承認が必要な状態にしてください。
  • 追加の認証とトランスポートセキュリティなしに、このサーバーを信頼できないネットワーク上に公開しないでください。

ライセンス

MIT

コメント

MCP は初めてですか?

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

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