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是一个特殊的 DNS 名称,用于从 Docker 容器访问主机服务。连接到主机上运行的 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 响应
  • 使用host.docker.internal连接到主机 MySQL(兼容 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