
MariaDB / MySQL Database Access MCP Server

2025.04.08
4
JavaScript数据库访问数据安全数据库
MariaDB / MySQL Database Access MCP Server 是一个提供对MariaDB / MySQL数据库访问的MCP服务器。它允许用户列出可用的数据库、列出数据库中的表、描述表结构以及执行SQL查询。该服务器默认提供只读访问权限,支持SELECT、SHOW、DESCRIBE和EXPLAIN操作,并通过查询验证、查询超时和行限制等安全特性来防止SQL注入和资源滥用。
View on GitHub
Overview
基本能力
产品定位
MariaDB / MySQL Database Access MCP Server 是一个专门用于提供对MariaDB / MySQL数据库安全访问的中间件服务。
核心功能
- 列出可用的数据库
- 列出指定数据库中的表
- 描述表的结构
- 执行SQL查询
安全特性
- 只读访问默认:支持SELECT, SHOW, DESCRIBE, 和 EXPLAIN操作
- 查询验证:防止SQL注入和阻止任何数据修改尝试
- 查询超时:防止长时间运行的查询消耗资源
- 行限制:防止返回过多数据
适用场景
- 需要安全访问MariaDB / MySQL数据库的应用程序
- 需要限制数据库操作权限的场景
- 需要防止SQL注入和数据滥用的环境
工具列表
- list_databases:列出MariaDB / MySQL服务器上所有可访问的数据库。
- list_tables:列出指定数据库中的所有表。
- describe_table:显示特定表的结构。
- execute_query:执行SQL查询。
常见问题解答
- 如何解决连接问题?
- 检查服务器日志中的错误消息
- 验证MariaDB/MySQL凭据和连接详细信息
- 确保MariaDB/MySQL用户具有适当的权限
- 如何确保查询是只读的?
- 确保MARIADB_ALLOW_INSERT、MARIADB_ALLOW_UPDATE和MARIADB_ALLOW_DELETE环境变量设置为false
使用教程
使用依赖
确保已安装Node.js和npm。
安装教程
选项1:从NPM安装(推荐)
# 全局安装
npm install -g mariadb-mcp-server
# 或在项目中本地安装
npm install mariadb-mcp-server
选项2:从源代码构建
# 克隆仓库
git clone https://github.com/rjsalgado/mariadb-mcp-server.git
cd mariadb-mcp-server
# 安装依赖并构建
npm install
npm run build
配置环境变量
服务器需要以下环境变量: - MARIADB_HOST: 数据库服务器主机名 - MARIADB_PORT: 数据库服务器端口(默认:3306) - MARIADB_USER: 数据库用户名 - MARIADB_PASSWORD: 数据库密码 - MARIADB_DATABASE: 默认数据库名称(可选) - MARIADB_ALLOW_INSERT: false - MARIADB_ALLOW_UPDATE: false - MARIADB_ALLOW_DELETE: false - MARIADB_TIMEOUT_MS: 10000 - MARIADB_ROW_LIMIT: 1000
添加到MCP设置
将以下配置添加到您的MCP设置文件中:
如果通过npm安装(选项1):
{
"mcpServers": {
"mariadb": {
"command": "npx",
"args": ["mariadb-mcp-server"],
"env": {
"MARIADB_HOST": "your-host",
"MARIADB_PORT": "3306",
"MARIADB_USER": "your-user",
"MARIADB_PASSWORD": "your-password",
"MARIADB_DATABASE": "your-database",
"MARIADB_ALLOW_INSERT": "false",
"MARIADB_ALLOW_UPDATE": "false",
"MARIADB_ALLOW_DELETE": "false",
"MARIADB_TIMEOUT_MS": "10000",
"MARIADB_ROW_LIMIT": "1000",
},
"disabled": false,
"autoApprove": []
}
}
}
如果从源代码构建(选项2):
{
"mcpServers": {
"mariadb": {
"command": "node",
"args": ["/path/to/mariadb-mcp-server/dist/index.js"],
"env": {
"MARIADB_HOST": "your-host",
"MARIADB_PORT": "3306",
"MARIADB_USER": "your-user",
"MARIADB_PASSWORD": "your-password",
"MARIADB_DATABASE": "your-default-database",
"MARIADB_ALLOW_INSERT": "false",
"MARIADB_ALLOW_UPDATE": "false",
"MARIADB_ALLOW_DELETE": "false",
"MARIADB_TIMEOUT_MS": "10000",
"MARIADB_ROW_LIMIT": "1000",
},
"disabled": false,
"autoApprove": []
}
}
}
调试方式
1. 设置测试数据库
export MARIADB_HOST=localhost
export MARIADB_PORT=3306
export MARIADB_USER=your_username
export MARIADB_PASSWORD=your_password
export MARIADB_ALLOW_INSERT=false
export MARIADB_ALLOW_UPDATE=false
export MARIADB_ALLOW_DELETE=false
export MARIADB_TIMEOUT_MS=10000
export MARIADB_ROW_LIMIT=1000
npm run test:setup
2. 测试MCP工具
export MARIADB_HOST=localhost
export MARIADB_PORT=3306
export MARIADB_USER=your_username
export MARIADB_PASSWORD=your_password
export MARIADB_DATABASE=mcp_test_db
export MARIADB_ALLOW_INSERT=false
export MARIADB_ALLOW_UPDATE=false
export MARIADB_ALLOW_DELETE=false
export MARIADB_TIMEOUT_MS=10000
export MARIADB_ROW_LIMIT=1000
npm run test:tools
3. 运行所有测试
export MARIADB_HOST=localhost
export MARIADB_PORT=3306
export MARIADB_USER=your_username
export MARIADB_PASSWORD=your_password
export MARIADB_ALLOW_INSERT=false
export MARIADB_ALLOW_UPDATE=false
export MARIADB_ALLOW_DELETE=false
export MARIADB_TIMEOUT_MS=10000
export MARIADB_ROW_LIMIT=1000
npm test