Skip to main content
Glama
gistrec

mcp-mysql-client

MySQL MCP

npm CI License: MIT

MySQL MCP は、AI アプリケーションを 1 つの MySQL または MariaDB データベースに接続します。構造を確認したり、自然言語でデータに質問したり、遅いクエリを調査したり、そして自分で許可した場合にはデータを変更したりできます。

サーバーは 1 つのデータベースにバインドされています。データベースは構成で指定され、どのツールも別のデータベースにアクセスできません。デフォルトでは読み取り専用です。

  • 6 つのツール。 接続と権限、テーブル一覧、テーブル構造、読み取りクエリ、クエリプラン、変更クエリ。

  • クエリの種類はサーバーが決定します。 SQL は接続前に解析されます。書き込み権限が有効でも、読み取りツールでの DELETE は拒否されます。

  • 読み取りは書き込みできません。 読み取りクエリは START TRANSACTION READ ONLY 内で実行されます。SQL 解析を回避しようとしても、MySQL 自体が書き込みを拒否します。

  • 応答がコンテキストをあふれさせません。 行はストリームで読み取られ、すべてをダウンロードするのではなく制限で打ち切られます。応答には正直な truncated フラグが含まれます。

  • 権限は外部からのみ。 INSERT、UPDATE、DELETE は環境変数で有効になり、再起動が必要です。ダイアログから取得することはできません。DDL は常に使用できません。

データを読み取るだけのクエリから始めましょう。

データベースの構造を表示して、先週追加されたレコードの数を数えてください。


クイックスタート

Claude Code:

claude mcp add mysql-myapp \
  -e MYSQL_HOST=db.example.com \
  -e MYSQL_USER=myapp_ro \
  -e MYSQL_PASS='пароль' \
  -e MYSQL_DB=myapp \
  -e MYSQL_SSL=true \
  -- npx -y mcp-mysql-client

または .mcp.json / claude_desktop_config.json 内:

{
  "mcpServers": {
    "mysql-myapp": {
      "command": "npx",
      "args": ["-y", "mcp-mysql-client"],
      "env": {
        "MYSQL_HOST": "db.example.com",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "myapp_ro",
        "MYSQL_PASS": "пароль",
        "MYSQL_DB": "myapp",
        "MYSQL_SSL": "true"
      }
    }
  }
}

1 つのサーバーは 1 つのデータベースに接続します。複数のデータベースが必要な場合は、それぞれの資格情報を追加してください。これにより権限が分離され、テストデータベースに接続されたサーバーは本番データベースを物理的に認識できません。

Related MCP server: MySQL MCP Server

実行できること

クエリ

サーバーの動作

「このデータベースには何がある?」

list_tables — テーブル、サイズ、行数の見積もり

「orders テーブルの構造は?」

describe_table — 列、インデックス、双方向の外部キー

「7月の注文数と合計金額は?」

query — 集計付き SELECT

「このクエリが遅いのはなぜ?」

explain — プラン、インデックス、行数の見積もり

「誰として接続していて、何ができる?」

server_info — データベース、ユーザー、GRANT、サーバー制限

「キャンセルされた注文にステータスを設定して」

executeALLOW_UPDATE_OPERATION=true の場合のみ

変更できること

デフォルトでは何も変更できません。サーバーは読み取り専用モードで起動します。書き込みは操作ごとに有効にします。

"ALLOW_INSERT_OPERATION": "true",
"ALLOW_UPDATE_OPERATION": "true",
"ALLOW_DELETE_OPERATION": "false"

それでも不可能なこと:

  • DDLCREATEALTERDROPTRUNCATERENAME — いかなる設定でも不可。

  • データベースの変更、SETCALLPREPARELOAD DATA、ロック、GRANT など、次のクエリの意味を変えたり、未検証のテキストを実行したりするもの。

  • SELECT ... INTO OUTFILE — データベースサーバーへのファイル書き込み。

  • WHERE 句のない UPDATE および DELETE — 呼び出しで allow_full_table=true の明示的な確認が必要。

  • 1 回の呼び出しでの複数ステートメント — 実行されるのは正確に 1 つのみ。

MySQL の権限は、これに加えて別の制限です。ALLOW_UPDATE_OPERATION を許可しても、GRANT UPDATE を持たないユーザーには何も追加されません。実践的な方法は、root ではなく、最小限の権限を持つ専用ユーザーを使用することです。

環境変数

変数

デフォルト

説明

MYSQL_HOST

127.0.0.1

サーバーのホスト

MYSQL_PORT

3306

ポート

MYSQL_SOCKET_PATH

host/port の代わりの Unix ソケット

MYSQL_USER

ユーザー (必須)

MYSQL_PASS

パスワード (MYSQL_PASSWORD の別名)

MYSQL_PASS_FILE

変数の代わりにファイルからパスワードを読み取る

MYSQL_DB

データベース (必須、MYSQL_DATABASE の別名)

MYSQL_SSL

false

TLS を要求

MYSQL_SSL_CA

ルート証明書へのパス。これだけで TLS が有効になります

MYSQL_SSL_REJECT_UNAUTHORIZED

true

サーバー証明書を検証

ALLOW_INSERT_OPERATION

false

INSERT を許可

ALLOW_UPDATE_OPERATION

false

UPDATE を許可

ALLOW_DELETE_OPERATION

false

DELETE を許可

MYSQL_MAX_ROWS

1000

1 回の応答の最大行数

MYSQL_TIMEOUT_MS

30000

クエリのタイムアウト

MYSQL_CONNECT_TIMEOUT_MS

10000

接続タイムアウト

MYSQL_POOL_SIZE

3

プール内の接続数

MYSQL_MAX_RETRIES

2

接続断とデッドロック時の再試行

MYSQL_READ_ONLY_TX

true

読み取りを読み取り専用トランザクションで実行

ASKADS_TELEMETRY

0 で匿名の起動統計を無効化

MCP クライアントの構成では、パスワードは平文で保存されます。MYSQL_PASS_FILE を使用すると、適切な権限を持つファイルにパスワードを保持できます。

@benborla29/mcp-server-mysql からの移行

変数名は同じなので、起動コマンドのパッケージを置き換えるだけです。

-  "args": ["-y", "@benborla29/mcp-server-mysql"]
+  "args": ["-y", "mcp-mysql-client"]

動作の変更点:

  • MYSQL_DB は必須です。サーバーは常に 1 つのデータベースにバインドされます。

  • 応答は MYSQL_MAX_ROWS に制限され、truncated とマークされます。

  • 書き込み権限が有効でも DDL は使用できません。

  • WHERE 句のない UPDATE/DELETE は呼び出しでの確認が必要です。

  • ツールセットが異なります: queryexecuteexplainlist_tablesdescribe_tableserver_info

診断

まず server_info を確認します。サーバーが何に接続されているか、MySQL ユーザーが持つ権限、有効な制限が表示されます。

症状

原因

errno 1045

MYSQL_USER / MYSQL_PASS が正しくない

errno 1044

ユーザーは存在するが、データベースの権限がない

errno 1142

操作またはテーブルに対する GRANT が不足している — ALLOW_* では解決しない

errno 3159

サーバーが TLS を要求: MYSQL_SSL=true

ECONNREFUSED / ETIMEDOUT

ホスト、ポート、ファイアウォール、または VPN がオフ

ER_NOT_SUPPORTED_AUTH_MODE

caching_sha2_password には TLS が必要

サーバーが接続できない

構成エラーはダイアログに直接表示されます。サーバーは資格情報なしでも起動し、何が不足しているかを説明します。

技術ドキュメント

  • ツール — パラメータと応答

  • 開発 — ビルド、テスト、ライブチェック

  • 公開 — npm と MCP レジストリへのリリース

  • CLAUDE.md — AI エージェント向けリポジトリ構成

ライセンス

MIT

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that enables AI agents to safely explore and interact with MySQL databases through dynamic tool generation from stored procedures. It provides database discovery capabilities and intelligent procedure categorization while enforcing security restrictions to prevent data modification.
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to safely interact with MySQL/MariaDB databases, supporting read-only queries by default with optional write operations and access control.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to query and manage MySQL databases through a structured MCP interface, supporting SQL execution, table inspection, and database operations.
    9
    14
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A robust MCP server for interacting with MySQL databases through AI agents, providing tools for schema analysis, query execution, and dynamic connection management with read-only security.
    61
    MIT

View all related MCP servers

Related MCP Connectors

  • Analytical memory for AI agents: a real Postgres queried in plain English over MCP. One command.

  • Security firewall for AI agents — scans MCP calls for injection, secrets, and risks.

  • Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.

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/gistrec/mcp-mysql-client'

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