MySQL MCP Server

by xiangma9712
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Uses environment variables stored in .env files for configuration management, particularly for sensitive database connection credentials.

  • Runs as a containerized service with special configurations for host connectivity, allowing MySQL database access from Docker environments with proper networking setup.

  • Enables interaction with MySQL databases through read-only queries, schema exploration, and safe testing of write operations (with rollback). Provides tools for executing queries, listing tables, and describing table structures.

MySQL MCP サーバー

MySQL データベースと対話するための MCP サーバー。

このサーバーは、読み取り専用クエリ (query) と、最終的にロールバックされる書き込みクエリ (test_execute) の実行をサポートしています。

設定

環境変数

~/.mcp/.envに次の環境変数を追加します。

MYSQL_HOST=host.docker.internal # Hostname to access host services from Docker container MYSQL_PORT=3306 MYSQL_USER=root MYSQL_PASSWORD=your_password

host.docker.internal 、Docker コンテナからホストマシンのサービスにアクセスするための特別な DNS 名です。ホストマシン上で実行されている MySQL サーバーに接続する場合は、この設定を使用してください。別の MySQL サーバーに接続する場合は、適切なホスト名に変更してください。

mcp.json 構成

{ "mcpServers": { "mysql": { "command": "docker", "args": [ "run", "-i", "--rm", "--add-host=host.docker.internal:host-gateway", "--env-file", "/Users/username/.mcp/.env", "ghcr.io/xiangma9712/mcp/mysql" ] } } }

使用法

サーバーの起動

docker run -i --rm --add-host=host.docker.internal:host-gateway --env-file ~/.mcp/.env ghcr.io/xiangma9712/mcp/mysql

:OrbStackを使用している場合は、 host.docker.internalが自動的にサポートされるため、 --add-hostオプションは省略できます。Docker Desktopも通常はこれを自動的にサポートしますが、信頼性を高めるために--add-hostオプションを追加することをお勧めします。

利用可能なコマンド

1. 読み取り専用クエリを実行する

{ "type": "query", "payload": { "sql": "SELECT * FROM your_table" } }

応答:

{ "success": true, "data": [ { "id": 1, "name": "example" } ] }

2. クエリ実行のテスト

{ "type": "test_execute", "payload": { "sql": "UPDATE your_table SET name = 'updated' WHERE id = 1" } }

応答:

{ "success": true, "data": "The UPDATE SQL query can be executed." }

3. リストテーブル

{ "type": "list_tables" }

応答:

{ "success": true, "data": ["table1", "table2", "table3"] }

4. 表の説明

{ "type": "describe_table", "payload": { "table": "your_table" } }

応答:

{ "success": true, "data": [ { "Field": "id", "Type": "int(11)", "Null": "NO", "Key": "PRI", "Default": null, "Extra": "" }, { "Field": "name", "Type": "varchar(255)", "Null": "YES", "Key": "", "Default": null, "Extra": "" } ] }

実装の詳細

  • TypeScriptで実装
  • mysql2 パッケージを使用
  • Dockerコンテナとして実行
  • 標準入力を通じてJSONコマンドを受け入れる
  • 標準出力を通じてJSONレスポンスを返します
  • ホスト MySQL に接続するためにhost.docker.internalを使用します (OrbStack と Docker Desktop の両方と互換性があります)

セキュリティに関する考慮事項

  • 機密情報の管理に環境変数を使用する
  • SQLインジェクションの防止は実装者の責任である
  • 実稼働環境での使用には適切なネットワーク構成が必要
  • ホストマシンのサービスに接続する際に必要な適切なファイアウォール設定

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

JSON コマンドを介して MySQL データベースと対話できるようにし、読み取り専用クエリ、書き込みクエリのテスト実行、Docker を介したテーブル情報の取得をサポートします。

  1. Setup
    1. Environment Variables
    2. mcp.json Configuration
  2. Usage
    1. Starting the Server
    2. Available Commands
  3. Implementation Details
    1. Security Considerations
      ID: kucglstegf