Skip to main content
Glama
qq5032449

MySQL MCP Server

by qq5032449

Tests PyPI - Downloads AgentAudit Safe

MySQL MCP Server

モデルコンテキストプロトコル(Model Context Protocol、MCP)実装で、MySQL データベースとの安全な対話をサポートします。このサーバーコンポーネントは、AI アプリケーション(ホスト/クライアント)と MySQL データベースの間の通信を確立し、制御されたインターフェースを通じて、データベースの探索と分析をより安全かつ構造的に行えるようにします。

注記: MySQL MCP Server は、標準入出力(STDIO)と Streamable HTTP(SSE)の両方のトランスポートモードをサポートしています。リモート/セルフホスト型のデプロイメントでは、SSE モードを推奨します。

デプロイ方法

  • マネージドFronteir AI がサーバーを代行実行するため、ローカル設定は不要です。

  • ローカルSmithery がお使いのマシンにサーバーをインストールして実行します。

Related MCP server: MCP MySQL Server

機能

  • 利用可能な MySQL テーブルをリソースとして一覧表示

  • テーブル内容の読み取り

  • 堅牢なエラーハンドリングを備えた SQL クエリの実行

  • マルチデータベースモード(オプションの MYSQL_DATABASE

  • SSE/HTTP トランスポートサポートMCP_TRANSPORT=sse

  • SSH トンネルサポート

  • 完全なテーブルスキーマ情報

  • テーブルデータのサンプリング

  • 環境変数による安全なデータベースアクセス

  • 充実したロギング

インストール

手動インストール

pip install mysql-mcp-server

Smithery によるインストール

Smithery を使用して、Claude Desktop 用に MySQL MCP Server を自動インストールします:

npx -y @smithery/cli install designcomputer/mysql-mcp-server --client claude

Claude Code CLI によるインストール

claude mcp add --transport stdio designcomputer-mysql_mcp_server uvx mysql_mcp_server

Autohand Code CLI によるインストール

autohand mcp add mysql env MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_USER=your_username MYSQL_PASSWORD=your_password MYSQL_DATABASE=your_database uvx mysql_mcp_server

mcp add の後に --scope project を付けると、現在のワークスペースに登録情報を保持できます。現在の CLI の詳細は Autohand Code を参照してください。

設定

以下の環境変数を設定します:

MYSQL_HOST=localhost     # 数据库主机
MYSQL_PORT=3306         # 可选:数据库端口(不指定时默认 3306)
MYSQL_USER=your_username
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=your_database # 可选:留空则进入多数据库模式

# 高级配置
MYSQL_SSL_MODE=DISABLED  # DISABLED、REQUIRED、VERIFY_CA、VERIFY_IDENTITY
MYSQL_CONNECT_TIMEOUT=10 # 超时时间(秒)

# 连接行为(可选)
MYSQL_SQL_MODE=TRADITIONAL           # 连接所应用的 SQL mode(默认:TRADITIONAL)

# 兼容性(可选)
MYSQL_CHARSET=utf8mb4
MYSQL_COLLATION=utf8mb4_unicode_ci
MYSQL_AUTH_PLUGIN=       # 例如旧版 MySQL 使用 mysql_native_password
MYSQL_USE_PURE=false     # 强制使用纯 Python 连接器(默认:false)
MYSQL_RAISE_ON_WARNINGS=false        # 出现 SQL 警告时抛出异常(默认:false)

# SSE 传输(可选)
MCP_TRANSPORT=stdio      # stdio 或 sse
MCP_SSE_HOST=0.0.0.0     # 监听所有网卡(Docker/托管部署需要)
PORT=8000                # HTTP 端口(MCP_SSE_PORT 的回退值)
MCP_SSE_ALLOWED_HOSTS=   # 逗号分隔的允许 Host 头(默认:localhost:{port},127.0.0.1:{port})

# SSH 隧道(可选)
MYSQL_SSH_ENABLE=false   # 设为 true 启用
MYSQL_SSH_HOST=          # SSH 跳板机
MYSQL_SSH_PORT=22        # SSH 端口
MYSQL_SSH_USER=          # SSH 用户名
MYSQL_SSH_KEY_PATH=      # SSH 私钥路径
MYSQL_SSH_REMOTE_HOST=localhost # 从跳板机视角看的目标主机
MYSQL_SSH_REMOTE_PORT=3306
MYSQL_LOCAL_PORT=3330

.env ファイルの読み込み

サーバー起動時に python-dotenv を使用して .env ファイルを自動的に読み込みます。ローカルで使用するには、次のようにするだけです:

cp .env.example .env   # 然后填入你的凭据

このファイルはプロセスの作業ディレクトリ(およびその親ディレクトリ)から読み込まれるため、プロジェクトディレクトリでサーバーを自分で起動する場合は正常に機能します。

⚠️ Claude Code / Claude Desktop: これらのホストは独自の作業ディレクトリからサーバーを起動するため、プロジェクト内の .env見つからずMissing required database configuration というエラーが表示されます。MYSQL_* の値は、.env に依存するのではなく、MCP 設定の env ブロック(下記の「使用法」を参照)に記述してください。

マルチデータベースモード

MYSQL_DATABASE が設定されていない場合、サーバーはマルチデータベースモードで動作します:

  • list_resources はすべてのユーザーデータベースを返します(システムデータベースはフィルタリングされます)

  • SQL クエリでは mydb.mytable のように完全修飾テーブル名を使用します

  • 注意: 単一の SQL ステートメントのみサポートされており、複数ステートメントのクエリ(USE db; SELECT ... など)はサポートされていません。

管理ページとマルチデータベースエイリアス(SSE モード)

SSE モードでサーバーを起動し、組み込みの管理ページを開くと、複数のデータベース接続を管理でき、各接続に独立した読み取り/書き込みアカウントを設定できます:

# Windows PowerShell
$env:MCP_TRANSPORT="sse"; $env:MCP_SSE_PORT="8000"; python -m mysql_mcp_server
# Linux/macOS
MCP_TRANSPORT=sse MCP_SSE_PORT=8000 python -m mysql_mcp_server

管理ページ:http://127.0.0.1:8000/admin/(ループバックアクセスのみ許可されています。管理 API とページは、非ループバッククライアントと不明な Host ヘッダーを拒否します。リバースプロキシの背後に配置しないでください)。

各エイリアスで設定可能な項目:

フィールド

用途

接続(host/port/database)

接続先。database を空にするとマルチデータベースモードになります。

クエリユーザー(read_user)

SELECT / SHOW / DESCRIBE / EXPLAIN に使用

操作ユーザー(write_user)

確認後の DML/DDL に使用

write_policy

client_confirm(デフォルト):クライアントが elicitation をサポートしていない場合、クライアント自身のツール確認 UI を信頼して書き込み操作を続行します。elicitation_only:クライアントがサーバー確認ダイアログを表示できない場合、書き込み操作を拒否します。

allow_delete

DELETE / TRUNCATE / DROP のマスタースイッチ(デフォルトはオフ)

クライアントはエイリアスで接続します:http://127.0.0.1:8000/sse?alias=db1alias を省略した場合はデフォルトのエイリアスが使用されます)。config/databases.json にエントリがない場合、従来の MYSQL_* 環境変数が後方互換性のある単一データベースのフォールバックとして引き続き使用できます(このモードでは読み取りと書き込みで同じアカウントが使用されます)。

上記のマルチデータベースモードとの違いに注意してください。あちらは単一の接続で複数の スキーマ を公開するのに対し、エイリアスは複数の接続を管理し、各接続に独立したアカウントと書き込みポリシーがあります。

書き込み操作の確認方法: サーバーは各ステートメントを3段階(読み取り/書き込み/削除)で判定します。読み取り操作はクエリアカウントで実行されます。書き込み操作と削除操作は MCP elicitation ダイアログをトリガーして完全な SQL を表示します。受け入れると操作アカウントで実行され、拒否すると中止されます。クライアントが elicitation をサポートしていない場合、エイリアスの write_policy に従ってダウングレード動作が決定されます(上表を参照)。すべての書き込み操作の試行は、管理ページの監査リスト(ディスク上では logs/audit.log)に記録されます。

利用可能なツール

execute_sql

任意の標準 SQL クエリを実行します。

  • パラメータ: query(文字列)

  • 機能: SELECTSHOWDESCRIBE、および DML(INSERTUPDATEDELETE)をサポートします。DML 操作には破壊的なプロンプトのマークが付きます。

  • 制限: 単一ステートメントのみサポートされており、複数ステートメントのクエリはサポートされていません。

  • クロスデータベース: MYSQL_DATABASE の設定に関係なく、database.table 構文で任意のデータベースをクエリできます。

get_schema_info

データベーススキーマに関する詳細なメタデータを提供します。

  • パラメータ: table_name(オプションの文字列)

  • 出力: 列名、型、NULL 許容性、デフォルト値、コメント。

  • クロスデータベース: database.table を渡すと、MYSQL_DATABASE 以外のデータベースをクエリできます。ベアテーブル名は設定済みのデータベースを使用します。

  • 識別子ルール: 名前に使用できるのは英数字、アンダースコア、$ のみです(database.table の区切り文字としてドットを1つ使用できます)。

get_table_sample

代表的なデータサンプルを取得します。

  • パラメータ: table_name(文字列)、limit(オプションの整数、最大 20)

  • 用途: 大きな結果セットを取得することなく、データの形式と内容をすばやく把握できます。

  • クロスデータベース: database.table を渡すと、MYSQL_DATABASE 以外のデータベースをサンプリングできます。ベアテーブル名は設定済みのデータベースを使用します。

  • 識別子ルール: 名前に使用できるのは英数字、アンダースコア、$ のみです(database.table の区切り文字としてドットを1つ使用できます)。

利用可能なプロンプト

ツールに加えて、サーバーは MCP プロンプト も提供します。これは、クライアントが必要に応じて起動できるガイド付きのマルチステップワークフローです。Claude Code ではスラッシュコマンド(/mcp__<server>__<prompt>)として表示され、Claude Desktop ではプロンプト(+)メニューに表示されます。

プロンプト

パラメータ

説明

explore_database

(なし)

データベースを体系的に探索します。利用可能なテーブルの発見、テーブルスキーマの表示、データのサンプリング、内容の要約を行います。

analyze_table

table_name (必須)

指定されたテーブルを詳細に分析します。テーブルスキーマの取得、データのサンプリング、実用的なクエリの提案を行います。database.table 構文によるクロスデータベースクエリをサポートします。

例(Claude Code):

/mcp__mysql__explore_database
/mcp__mysql__analyze_table customers

どちらのプロンプトも、既存の get_schema_info ツールと get_table_sample ツールを調整します。explore_database はリソースリストも使用してテーブルを列挙します。

使用法

Claude Desktop と組み合わせる

claude_desktop_config.json に以下を追加します:

{
  "mcpServers": {
    "mysql": {
      "command": "uv",
      "args": [
        "--directory",
        "path/to/mysql_mcp_server",
        "run",
        "mysql_mcp_server"
      ],
      "env": {
        "MYSQL_HOST": "localhost",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "your_username",
        "MYSQL_PASSWORD": "your_password",
        "MYSQL_DATABASE": "your_database"
      }
    }
  }
}

より詳細な例とエージェント固有の手順については、MCP_USECASES.md を参照してください。

Visual Studio Code と組み合わせる

mcp.json に以下を追加します:

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

注:事前に uv をインストールする必要があります。

MCP Inspector でのデバッグ

MySQL MCP Server は、スタンドアロンで、または Python コマンドラインから直接起動するプログラムとして設計されていませんが、MCP Inspector を使用してデバッグできます。

MCP Inspector は、MCP 実装をテストおよびデバッグするための便利な方法を提供します:

# 安装依赖
pip install -r requirements.txt
# 使用 MCP Inspector 调试(不要直接用 Python 运行)

MySQL MCP Server は Claude Desktop などの AI アプリケーションに統合されるように設計されており、スタンドアロンの Python プログラムとして直接実行することは想定されていません。

開発

# 克隆仓库
git clone https://github.com/designcomputer/mysql_mcp_server.git
cd mysql_mcp_server
# 创建虚拟环境
python -m venv venv
source venv/bin/activate  # Windows 上用 `venv\Scripts\activate`
# 安装开发依赖
pip install -r requirements-dev.txt
# 复制示例配置并填入你的凭据
cp .env.example .env
# 编辑 .env,填入 MySQL 连接信息
# 运行测试
pytest

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

  • 識別子の検証: get_schema_infoget_table_sample に渡されるテーブル名とデータベース名は、厳格なホワイトリスト検証(英数字、アンダースコア、$ のみ許可。database.table の区切り文字としてドットを1つ許可)を受けます。SQL インジェクションを防ぐため、他の特殊文字はすべて拒否されます。

  • 暗号化アクセス: リモート接続を保護するために、SSL/TLS と SSH トンネルを完全にサポートしています。

  • ログのプライバシー: パスワードと SSH 秘密鍵は、サーバーログで自動的にマスクされます。

  • 最小権限: 常に最小限の権限を持つ専用の MySQL ユーザーを使用してください。

  • SSE トランスポートには組み込みの認証はありません。 SSE サーバーはデフォルトで 0.0.0.0 にバインドされ、資格情報なしの接続を受け入れます。localhost の外部に公開する場合は、認証を強制するリバースプロキシ(nginx、Caddy、Traefik)の背後に配置してください。nginx + HTTP Basic 認証の例:

    location /sse {
        auth_basic "MCP";
        auth_basic_user_file /etc/nginx/.htpasswd;
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_buffering off;
    }
    location /messages/ {
        auth_basic "MCP";
        auth_basic_user_file /etc/nginx/.htpasswd;
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
    }

    MCP_SSE_HOST=127.0.0.1 を設定すると、サーバーはループバックアドレスのみをリッスンし、プロキシが唯一のパブリックエントリポイントになります。MCP_SSE_ALLOWED_HOSTS をプロキシが転送するパブリックホスト名に設定します(例:MCP_SSE_ALLOWED_HOSTS=myserver.example.com:443)。

セキュリティで保護されたデプロイの完全なガイドについては、SECURITY.md を参照してください。

セキュリティのベストプラクティス

この MCP 実装が機能するには、データベースへのアクセス権限が必要です。安全のために:

  1. 専用の MySQL ユーザーを作成し、最小限の権限を付与します

  2. root 資格情報や管理者アカウントは絶対に使用しないでください

  3. データベースアクセスを必要な操作に制限します

  4. 監査のためにログを有効にします

  5. データベースアクセスを定期的にセキュリティレビューします

詳細な手順については、MySQL セキュリティ設定ガイド を参照してください。以下が含まれます:

  • 制限付き MySQL ユーザーの作成

  • 適切な権限の設定

  • データベースアクセスの監視

  • セキュリティのベストプラクティス

⚠️ 重要:データベースアクセスを構成するときは、必ず最小権限の原則に従ってください。

ライセンス

MIT ライセンス - 詳細は LICENSE ファイルを参照してください。

貢献

  1. このリポジトリをフォークします

  2. 機能ブランチを作成します(git checkout -b feature/amazing-feature

  3. 変更をコミットします(git commit -m 'Add some amazing feature'

  4. ブランチをプッシュします(git push origin feature/amazing-feature

  5. プルリクエストを送信します

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables read-only interaction with SQL databases through MCP, providing database metadata exploration, sample data retrieval, and secure query execution. Supports MySQL with multiple transport options and built-in security features including SQL injection protection and data sanitization.
    19
    5
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with MySQL databases through MCP, supporting query execution, table operations (insert, update, delete), and schema inspection for natural language database management.
    61
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables MySQL database operations through MCP, including executing SQL queries, listing databases and tables, and describing table structures.
    519
    5
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables safe querying and optional writing to MySQL databases via MCP tools, with support for schema inspection, connection management, and read-only mode.
    37
    3
    MIT

View all related MCP servers

Related MCP Connectors

  • 2,000+ MCP servers read at source level. Know what one does before you connect. Free, no key.

  • Connect to PlanetScale databases, branches, schema, query insights, and execute SQL

  • MCP server for managing Prisma Postgres.

View all MCP Connectors

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/qq5032449/mysql_mcp_server'

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