Skip to main content
Glama
gistrec

mcp-mysql-client

MySQL MCP

npm CI License: MIT

MySQL MCP 将 AI 应用连接到单个 MySQL 或 MariaDB 数据库:查看结构、用自然语言向数据提问、分析慢查询——并且,如果您自己允许,还可以修改数据。

服务器绑定到单个数据库:该数据库由配置指定,任何工具都无法切换到其他数据库。默认情况下仅可读。

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

一个服务器——一个数据库。如果需要多个数据库:添加多条带有各自凭据的配置;这样权限保持隔离,连接到测试数据库的服务器在物理上无法看到生产数据库。

Related MCP server: MySQL MCP Server

可以交给它做什么

请求

服务器做什么

“这个数据库里到底有什么?”

list_tables — 表、大小、行数估算

“orders 表的结构是怎样的?”

describe_table — 列、索引、双向外键

“七月份有多少订单,总金额是多少?”

query — 带聚合的 SELECT

“为什么这个查询很慢?”

explain — 计划、索引、行数估算

“我以什么身份连接,有哪些权限?”

server_info — 数据库、用户、GRANT、服务器限制

“给已取消的订单设置状态”

execute — 仅在 ALLOW_UPDATE_OPERATION=true 时可用

什么可能会改变

默认情况下——什么都不会改变:服务器以只读模式启动。写入按操作逐个启用:

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

与此同时,以下操作仍然不可能:

  • DDLCREATEALTERDROPTRUNCATERENAME — 在任何设置下都不行。

  • 切换数据库、SETCALLPREPARELOAD DATA、锁、GRANT 以及其他会改变下一条查询语义或执行未经验证文本的操作。

  • SELECT ... INTO OUTFILE — 向数据库服务器写入文件。

  • 没有 WHEREUPDATEDELETE — 需要在调用中显式确认 allow_full_table=true

  • 一次调用中的多条语句 — 只执行一条。

MySQL 权限是这之上的另一层限制。ALLOW_UPDATE_OPERATION 不会给没有 GRANT UPDATE 的用户增加任何权限。实际做法:使用具有最小权限的独立用户,而不是 root

环境变量

变量

默认值

用途

MYSQL_HOST

127.0.0.1

服务器主机

MYSQL_PORT

3306

端口

MYSQL_SOCKET_PATH

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

单个响应中的行数上限

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 必填——服务器始终绑定到单个数据库;

  • 响应受 MYSQL_MAX_ROWS 限制并标记为 truncated

  • 即使写权限已启用,DDL 也不可用;

  • 没有 WHEREUPDATE/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