首页
学习
活动
专区
圈层
工具
发布
MCP广场 >详情页
MySQL只读MCP服务器2026-03-16122分享添加福利群:解决AI开发者的「MCP实战痛点」
提供对MySQL数据库只读访问的MCP服务器。
By dpflucas
2026-03-16122
github
详情内容
mysql-mcp-server MCP服务器

npm版本 smithery徽章

MySQL数据库访问MCP服务器

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

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

安全特性

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

安装

1. 使用以下方法之一安装:

通过NPM安装

# 全局安装
npm install -g mysql-mcp-server

# 或在项目中本地安装
npm install mysql-mcp-server

从源代码构建

# 克隆仓库
git clone https://github.com/dpflucas/mysql-mcp-server.git
cd mysql-mcp-server

# 安装依赖并构建
npm install
npm run build

通过Smithery安装

要通过Smithery为Claude AI自动安装MySQL数据库访问MCP服务器:

npx -y @smithery/cli install @dpflucas/mysql-mcp-server --client claude

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": "您的MySQL主机",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "您的MySQL用户",
        "MYSQL_PASSWORD": "您的MySQL密码",
        "MYSQL_DATABASE": "您的默认数据库"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

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

{
  "mcpServers": {
    "mysql": {
      "command": "node",
      "args": ["/path/to/mysql-mcp-server/build/index.js"],
      "env": {
        "MYSQL_HOST": "您的MySQL主机",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "您的MySQL用户",
        "MYSQL_PASSWORD": "您的MySQL密码",
        "MYSQL_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": "我的数据库"
  }
}

describe_table

显示特定表的架构。

参数

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

示例

{
  "server_name": "mysql",
  "tool_name": "describe_table",
  "arguments": {
    "database": "我的数据库",
    "table": "我的表"
  }
}

execute_query

执行只读SQL查询。

参数

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

示例

{
  "server_name": "mysql",
  "tool_name": "execute_query",
  "arguments": {
    "database": "我的数据库",
    "query": "SELECT * FROM 我的表 LIMIT 10"
  }
}

高级连接池配置

要更精细地控制MySQL连接池行为,您可以配置其他参数:

{
  "mcpServers": {
    "mysql": {
      "command": "npx",
      "args": ["mysql-mcp-server"],
      "env": {
        "MYSQL_HOST": "您的MySQL主机",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "您的MySQL用户",
        "MYSQL_PASSWORD": "您的MySQL密码",
        "MYSQL_DATABASE": "您的默认数据库",
        
        "MYSQL_CONNECTION_LIMIT": "10",
        "MYSQL_QUEUE_LIMIT": "0",
        "MYSQL_CONNECT_TIMEOUT": "10000",
        "MYSQL_IDLE_TIMEOUT": "60000",
        "MYSQL_MAX_IDLE": "10"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

这些高级选项允许您:

  • MYSQL_CONNECTION_LIMIT:控制池中的最大连接数(默认:10)
  • MYSQL_QUEUE_LIMIT:设置要排队的最大连接请求数(默认:0,无限制)
  • MYSQL_CONNECT_TIMEOUT:调整连接超时时间(毫秒)(默认:10000)
  • MYSQL_IDLE_TIMEOUT:配置连接在释放前可以保持空闲的时间(毫秒)
  • MYSQL_MAX_IDLE:设置池中要保持的最大空闲连接数

测试

服务器包含测试脚本以验证与您的MySQL设置的兼容性:

1. 设置测试数据库

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

# 将您的MySQL凭据设置为环境变量
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=您的用户名
export MYSQL_PASSWORD=您的密码

# 运行设置脚本
npm run test:setup

2. 测试MCP工具

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

# 将您的MySQL凭据设置为环境变量
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=您的用户名
export MYSQL_PASSWORD=您的密码
export MYSQL_DATABASE=mcp_test_db

# 运行工具测试脚本
npm run test:tools

3. 运行所有测试

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

# 将您的MySQL凭据设置为环境变量
export MYSQL_HOST=localhost
export MYSQL_PORT=3306
export MYSQL_USER=您的用户名
export MYSQL_PASSWORD=您的密码

# 运行所有测试
npm test

故障排除

如果您遇到问题:

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

许可证

该项目根据MIT许可证授权 - 详情请参阅LICENSE文件。

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档