M

MySQL只读MCP服务器

@dpflucas/mysql-mcp-server
Hosted
18 Stars 6.7k 次浏览 dpflucas 更新于 2026-08-23

提供对MySQL数据库只读访问的MCP服务器。

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

{
  "mcpServers": {
    "mysql": {
      "args": [
        "mysql-mcp-server"
      ],
      "autoApprove": [],
      "command": "npx",
      "disabled": false,
      "env": {
        "MYSQL_DATABASE": "your-default-database",
        "MYSQL_HOST": "your-mysql-host",
        "MYSQL_PASSWORD": "your-mysql-password",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "your-mysql-user"
      }
    }
  }
}

该服务需要配置环境变量:MYSQL_DATABASE、MYSQL_HOST、MYSQL_PASSWORD、MYSQL_PORT、MYSQL_USER

服务介绍

MySQL 数据库访问 MCP 服务器

该 MCP 服务器提供对 MySQL 数据库的只读访问。它允许您:

  • 列出可用数据库
  • 列出数据库中的表
  • 描述表结构
  • 执行只读 SQL 查询

安全特性

  • 只读访问:仅允许 SELECT、SHOW、DESCRIBE 和 EXPLAIN 语句
  • 查询验证:防止 SQL 注入并阻止任何数据修改尝试
  • 查询超时:防止长时间运行的查询消耗资源
  • 行数限制:防止返回过多数据

安装

选项 1:从 NPM 安装(推荐)

# Install globally
npm install -g mysql-mcp-server

# Or install locally in your project
npm install mysql-mcp-server

选项 2:从源代码构建

# Clone the repository
git clone https://github.com/dpflucas/mysql-mcp-server.git
cd mysql-mcp-server

# Install dependencies and build
npm install
npm run build

2. 配置环境变量

服务器需要以下环境变量:

  • MYSQL_HOST:数据库服务器主机名
  • MYSQL_PORT:数据库服务器端口(默认:3306)
  • MYSQL_USER:数据库用户名
  • MYSQL_PASSWORD:数据库密码
  • MYSQL_DATABASE:默认数据库名称(可选)

3. 添加到 MCP 设置

将以下配置添加到您的 MCP 设置文件中:

如果您通过 npm 安装(选项 1):

{
  "mcpServers": {
    "mysql": {
      "command": "npx",
      "args": ["mysql-mcp-server"],
      "env": {
        "MYSQL_HOST": "your-mysql-host",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "your-mysql-user",
        "MYSQL_PASSWORD": "your-mysql-password",
        "MYSQL_DATABASE": "your-default-database"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

如果您从源代码构建(选项 2):

{
  "mcpServers": {
    "mysql": {
      "command": "node",
      "args": ["/path/to/mysql-mcp-server/build/index.js"],
      "env": {
        "MYSQL_HOST": "your-mysql-host",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "your-mysql-user",
        "MYSQL_PASSWORD": "your-mysql-password",
        "MYSQL_DATABASE": "your-default-database"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

可用工具

list_databases

列出 MySQL 服务器上所有可访问的数据库。

参数:无

示例

{
  "server_name": "mysql",
  "tool_name": "list_databases",
  "arguments": {}
}

list_tables

列出指定数据库中的所有表。

参数

  • database(可选):数据库名称(未指定时使用默认值)

示例

{
  "server_name": "mysql",
  "tool_name": "list_tables",
  "arguments": {
    "database": "my_database"
  }
}

describe_table

显示特定表的结构。

参数

  • database(可选):数据库名称(未指定时使用默认值)
  • table(必需):表名称

示例

{
  "server_name": "mysql",
  "tool_name": "describe_table",
  "arguments": {
    "database": "my_database",
    "table": "my_table"
  }
}

execute_query

执行只读 SQL 查询。

参数

  • query(必需):SQL 查询(仅允许 SELECT、SHOW、DESCRIBE 和 EXPLAIN 语句)
  • database(可选):数据库名称(未指定时使用默认值)

示例

{
  "server_name": "mysql",
  "tool_name": "execute_query",
  "arguments": {
    "database": "my_database",
    "query": "SELECT * FROM my_table LIMIT 10"
  }
}

测试

服务器包含测试脚本来验证您的 MySQL 设置的功能:

1. 设置测试数据库

此脚本创建一个测试数据库、表和示例数据:

# Set your MySQL credentials as environment variables
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=your_username
export MYSQL_PASSWORD=your_password

# Run the setup script
npm run test:setup

2. 测试 MCP 工具

此脚本针对测试数据库测试每个 MCP 工具:

# Set your MySQL credentials as environment variables
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=your_username
export MYSQL_PASSWORD=your_password
export MYSQL_DATABASE=mcp_test_db

# Run the tools test script
npm run test:tools

3. 运行所有测试

要同时运行设置和工具测试:

# Set your MySQL credentials as environment variables
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=your_username
export MYSQL_PASSWORD=your_password

# Run all tests
npm test

故障排除

如果您遇到问题:

  1. 检查服务器日志中的错误消息
  2. 验证您的 MySQL 凭据和连接详情
  3. 确保您的 MySQL 用户具有适当的权限
  4. 检查您的查询是否为只读且格式正确

许可证

该项目根据 MIT 许可证许可 - 有关详细信息,请参阅 LICENSE 文件。

相关 MCP 服务