Token导航 LogoToken导航TokenDH.com
Mysql MCP Server Secure logo
数据服务未说明官方级别未说明来源级核验

Mysql MCP Server Secure

MCP Server

一个安全的MySQL Model Context Protocol (MCP)服务器,为AI数据库操作提供可配置的权限控制,支持多数据源管理和细粒度访问控制。

工具数

6

提示词数

0

GitHub Stars

0

资源数

0
JavaScriptWindsurf权限控制Windsurf

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

lmaonewhow

提供方

lmaonewhow

最后核验

2026/5/17 20:23

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

安全MySQL MCP服务器

English | 中文

一个安全的MySQL模型上下文协议(MCP)服务器,具有可配置的AI数据库操作权限控制。

✨ 特性

  • 🔒 权限控制:可配置的SQL类型分配列表、表模式分配列表和数据库限制
  • 🎯 基于模式的表访问:支持glob模式,如 open_* 对于表权限
  • 👁️ 只读模式:默认只读,带有启用写入操作的选项
  • 🛡️ 多语句保护:默认情况下不允许危险的多语句查询
  • 🧩 多源支持:配置多个MySQL源(不同的主机/用户/默认数据库/权限),并通过以下方式进行选择 source
  • 🔧 标准MCP工具:查询执行、数据库列表、带模式的表列表、表结构

🚀 快速开始

先决条件

  • Node.js>=18.0.0
  • MySQL>=8.0

安装

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

# Install dependencies
npm install

# Build project
npm run build

配置

环境变量

数据库连接

变量描述默认值必填
DB_HOSTMySQL服务器主机127.0.0.1没有
DB_PORTMySQL服务器端口3306没有
DB_USERMySQL用户名root没有
DB_PASSWORDMySQL密码-
DB_NAME默认数据库名称-

多源(可选)

变量描述默认值必填
MYSQL_SOURCESJSON对象映射 sourceName -> sourceConfig-没有
DEFAULT_SOURCE默认源名称 source 未提供已配置源的第一个密钥或 default没有
TEST_ALL_SOURCES启动时测试所有来源false没有

权限配置

变量描述默认值
READ_ONLY只允许SELECT查询true
ALLOWED_SQL_TYPES允许使用逗号分隔的SQL类型SELECT
TABLE_PATTERNS逗号分隔的表名模式* (所有表格)
ALLOWED_DATABASES逗号分隔的数据库名称* (所有数据库)
ALLOW_MULTI_STATEMENT允许在一个查询中使用多个语句false
如果 MYSQL_SOURCES 如果提供,每个源都可以独立覆盖权限。

配置文件(建议用于多源)

创建 ./.mysql-mcp-server-secure/config.json (相对于MCP服务器进程工作目录)。您还可以设置 MYSQL_MCP_CONFIG_PATH 一条明确的路径。

支持的格式:

  1. 明确的 sources 对象:
{
  "defaultSource": "prod",
  "sources": {
    "prod": {
      "connection": {
        "host": "127.0.0.1",
        "port": 3306,
        "user": "readonly",
        "password": "***",
        "database": "production_db"
      },
      "permissions": {
        "readOnly": true,
        "allowedSqlTypes": ["SELECT"],
        "allowedDatabases": ["production_db"],
        "tablePatterns": ["open_*"],
        "allowMultiStatement": false
      }
    }
  }
}
  1. 顶级来源(更简洁):
{
  "defaultSource": "prod",
  "prod": {
    "host": "127.0.0.1",
    "port": 3306,
    "user": "readonly",
    "password": "***",
    "database": "production_db",
    "permissions": {
      "readOnly": true,
      "allowedSqlTypes": ["SELECT"],
      "allowedDatabases": ["production_db"],
      "tablePatterns": ["open_*"],
      "allowMultiStatement": false
    }
  }
}

当两者都提供时,合并/覆盖顺序:

  • 首先加载配置文件源
  • MYSQL_SOURCES (env)覆盖同名源

与Windsurf一起使用

增添 .windsurf/mcp.json:

{
  "mcpServers": {
    "mysql": {
      "command": "node",
      "args": ["/path/to/mysql-mcp-server-secure/dist/index.js"],
      "env": {
        "DB_HOST": "127.0.0.1",
        "DB_PORT": "3306",
        "DB_USER": "your_username",
        "DB_PASSWORD": "your_secure_password",
        "DB_NAME": "your_database",
        "READ_ONLY": "true",
        "TABLE_PATTERNS": "table_prefix_*,another_table_*",
        "ALLOWED_DATABASES": "your_database"
      }
    }
  }
}
⚠️ 安全通知:用实际配置替换所有占位符值。切勿提交包含真实凭据的文件。

多源示例(Windsurf)

{
  "mcpServers": {
    "mysql": {
      "command": "node",
      "args": ["/path/to/mysql-mcp-server-secure/dist/index.js"],
      "env": {
        "DEFAULT_SOURCE": "prod",
        "MYSQL_SOURCES": "{\"prod\":{\"host\":\"127.0.0.1\",\"port\":3306,\"user\":\"readonly\",\"password\":\"***\",\"database\":\"production_db\",\"permissions\":{\"readOnly\":true,\"allowedSqlTypes\":[\"SELECT\"],\"allowedDatabases\":[\"production_db\"],\"tablePatterns\":[\"open_*\"],\"allowMultiStatement\":false}},\"analytics\":{\"host\":\"127.0.0.1\",\"port\":3306,\"user\":\"analyst\",\"password\":\"***\",\"database\":\"analytics_db\",\"permissions\":{\"readOnly\":true,\"allowedSqlTypes\":[\"SELECT\",\"SHOW\"],\"allowedDatabases\":[\"analytics_db\"],\"tablePatterns\":[\"*\"],\"allowMultiStatement\":false}}}"
      }
    }
  }
}

🛠️ 可用工具

mysql_query

使用权限验证执行MySQL查询。

参数:

  • source (可选):源名称(使用 DEFAULT_SOURCE /config.json defaultSource 如果未指定)
  • sql (必填):要执行的SQL查询
  • database (可选):目标数据库

mysql_databases

列出所有可访问的数据库(按筛选 ALLOWED_DATABASES).

参数:

  • source (可选):源名称

mysql_tables

列出数据库中具有可选模式筛选的表。

参数:

  • source (可选):源名称
  • database (可选):数据库名称(使用 DB_NAME 如果未指定)
  • pattern (可选):用于过滤表的Glob模式(例如。, open_*)

mysql_describe

描述带有权限检查的表结构。

参数:

  • source (可选):源名称
  • table (必填):表名
  • database (可选):数据库名称

mysql_sources

列出已配置的源和默认源。

mysql_get_permissions

获取当前权限配置。

参数:

  • source (可选):源名称

📋 配置示例

对特定表的只读访问

READ_ONLY=true
TABLE_PATTERNS=open_*,user_*
ALLOWED_DATABASES=production_db

选择性写入权限

READ_ONLY=false
ALLOWED_SQL_TYPES=SELECT,INSERT,UPDATE,DELETE
TABLE_PATTERNS=open_*,log_*
ALLOWED_DATABASES=production_db,analytics_db

🔒 安全最佳实践

  1. 始终使用READ_ONLY=true 用于生产AI访问
  2. 限制表位 仅限所需表格
  3. 设置允许的数据库 限制数据库访问
  4. 保持ALLOW_MULTI_STATE=false 防止注射攻击
  5. 使用强数据库密码 并限制MySQL用户权限
  6. 定期审计ALLOWED_SQL_TYPES 配置

📝 许可证

MIT许可证-请参阅 许可证 文件以获取详细信息。

______________________________________________________________________

安全MySQL MCP服务器

中文 | English

一个安全的 MySQL Model Context Protocol (MCP) 服务器,为 AI 数据库操作提供可配置的权限控制。

✨ 特性

  • 🔒 权限控制: 可配置的 SQL 类型白名单、表名模式白名单和数据库限制
  • 🎯 基于模式的表访问: 支持 open_* 等 glob 模式进行表权限控制
  • 👁️ 只读模式: 默认只读,可选启用写入操作
  • 🛡️ 多语句保护: 默认禁止危险的多语句查询
  • 🧩 多数据源支持: 支持配置多个 MySQL 数据源(不同 host/user/默认库/权限),并通过 source 选择
  • 🔧 标准 MCP 工具: 查询执行、数据库列表、带模式的表列表、表结构查询

🚀 快速开始

环境要求

  • Node.js>=18.0.0
  • MySQL>=8.0

安装

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

# 安装依赖
npm install

# 构建项目
npm run build

配置

环境变量

数据库连接

变量描述默认值是否必填
DB_HOSTMySQL 服务器地址127.0.0.1
DB_PORTMySQL 服务器端口3306
DB_USERMySQL 用户名root
DB_PASSWORDMySQL 密码-
DB_NAME默认数据库名-

多数据源(可选)

变量描述默认值是否必填
MYSQL_SOURCESJSON 对象:sourceName -> sourceConfig-
DEFAULT_SOURCE未提供 source 时使用的数据源名已配置 sources 的第一个 key 或 default
TEST_ALL_SOURCES启动时测试所有数据源连接false

权限配置

变量描述默认值
READ_ONLY仅允许 SELECT 查询true
ALLOWED_SQL_TYPES逗号分隔的允许 SQL 类型SELECT
TABLE_PATTERNS逗号分隔的表名模式* (所有表)
ALLOWED_DATABASES逗号分隔的数据库名* (所有数据库)
ALLOW_MULTI_STATEMENT允许单个查询中包含多语句false
如果提供了 MYSQL_SOURCES,每个 source 都可以单独覆盖权限配置。

配置文件(推荐用于多数据源)

在工作目录下创建 ./.mysql-mcp-server-secure/config.json(相对于 MCP server 进程的 working directory)。也可以通过环境变量 MYSQL_MCP_CONFIG_PATH 指定绝对路径。

支持两种格式:

1)显式 sources

{
  "defaultSource": "prod",
  "sources": {
    "prod": {
      "connection": {
        "host": "127.0.0.1",
        "port": 3306,
        "user": "readonly",
        "password": "***",
        "database": "production_db"
      },
      "permissions": {
        "readOnly": true,
        "allowedSqlTypes": ["SELECT"],
        "allowedDatabases": ["production_db"],
        "tablePatterns": ["open_*"],
        "allowMultiStatement": false
      }
    }
  }
}

2)顶层直接写 sources(更简洁):

{
  "defaultSource": "prod",
  "prod": {
    "host": "127.0.0.1",
    "port": 3306,
    "user": "readonly",
    "password": "***",
    "database": "production_db",
    "permissions": {
      "readOnly": true,
      "allowedSqlTypes": ["SELECT"],
      "allowedDatabases": ["production_db"],
      "tablePatterns": ["open_*"],
      "allowMultiStatement": false
    }
  }
}

当同时提供配置文件与 MYSQL_SOURCES(env)时,合并/覆盖顺序:

  • 先加载配置文件 sources
  • MYSQL_SOURCES(env)对同名 source 覆盖

Windsurf 集成

.windsurf/mcp.json 中添加配置:

{
  "mcpServers": {
    "mysql": {
      "command": "node",
      "args": ["/path/to/mysql-mcp-server-secure/dist/index.js"],
      "env": {
        "DB_HOST": "127.0.0.1",
        "DB_PORT": "3306",
        "DB_USER": "your_username",
        "DB_PASSWORD": "your_secure_password",
        "DB_NAME": "your_database",
        "READ_ONLY": "true",
        "TABLE_PATTERNS": "table_prefix_*,another_table_*",
        "ALLOWED_DATABASES": "your_database"
      }
    }
  }
}
⚠️ 安全提示: 请将所有占位符值替换为实际配置。切勿提交包含真实凭证的文件。

多数据源示例(Windsurf)

{
  "mcpServers": {
    "mysql": {
      "command": "node",
      "args": ["/path/to/mysql-mcp-server-secure/dist/index.js"],
      "env": {
        "DEFAULT_SOURCE": "prod",
        "MYSQL_SOURCES": "{\"prod\":{\"host\":\"127.0.0.1\",\"port\":3306,\"user\":\"readonly\",\"password\":\"***\",\"database\":\"production_db\",\"permissions\":{\"readOnly\":true,\"allowedSqlTypes\":[\"SELECT\"],\"allowedDatabases\":[\"production_db\"],\"tablePatterns\":[\"open_*\"],\"allowMultiStatement\":false}},\"analytics\":{\"host\":\"127.0.0.1\",\"port\":3306,\"user\":\"analyst\",\"password\":\"***\",\"database\":\"analytics_db\",\"permissions\":{\"readOnly\":true,\"allowedSqlTypes\":[\"SELECT\",\"SHOW\"],\"allowedDatabases\":[\"analytics_db\"],\"tablePatterns\":[\"*\"],\"allowMultiStatement\":false}}}"
      }
    }
  }
}

🛠️ 可用工具

mysql_query

执行带权限验证的 MySQL 查询。

参数:

  • source (可选): 数据源名(未指定时使用 DEFAULT_SOURCE / config.json 的 defaultSource
  • sql (必填): 要执行的 SQL 查询
  • database (可选): 目标数据库

mysql_databases

列出所有可访问的数据库(受 ALLOWED_DATABASES 过滤)。

参数:

  • source (可选): 数据源名

mysql_tables

列出数据库中的表,支持可选的模式过滤。

参数:

  • source (可选): 数据源名
  • database (可选): 数据库名(未指定时使用 DB_NAME
  • pattern (可选): 用于过滤表的 glob 模式(如 open_*

mysql_describe

描述表结构并进行权限检查。

参数:

  • source (可选): 数据源名
  • table (必填): 表名
  • database (可选): 数据库名

mysql_get_permissions

获取当前权限配置。

参数:

  • source (可选): 数据源名

mysql_sources

列出已配置的数据源以及默认 source。

📋 配置示例

特定表的只读访问

READ_ONLY=true
TABLE_PATTERNS=open_*,user_*
ALLOWED_DATABASES=production_db

选择性写入权限

READ_ONLY=false
ALLOWED_SQL_TYPES=SELECT,INSERT,UPDATE,DELETE
TABLE_PATTERNS=open_*,log_*
ALLOWED_DATABASES=production_db,analytics_db

🔒 安全最佳实践

  1. 始终在生产环境使用 READ_ONLY=true 用于 AI 访问
  2. 限制 TABLE_PATTERNS 仅包含必需的表
  3. 设置 ALLOWED_DATABASES 限制数据库访问范围
  4. 保持 ALLOW_MULTI_STATEMENT=false 防止注入攻击
  5. 使用强数据库密码 并限制 MySQL 用户权限
  6. 定期审计 ALLOWED_SQL_TYPES 配置

📝 许可证

MIT 许可证 - 详见 许可证 文件。

目录标签

目录标签

JavaScriptWindsurf权限控制数据库安全本地部署AI集成MySQL代理多数据源管理

支持客户端

Windsurf

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

6

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP