MariaDB / MySQL Database Access MCP Server

MariaDB / MySQL Database Access MCP Server

site icon
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注入和数据滥用的环境

工具列表

  1. list_databases:列出MariaDB / MySQL服务器上所有可访问的数据库。
  2. list_tables:列出指定数据库中的所有表。
  3. describe_table:显示特定表的结构。
  4. execute_query:执行SQL查询。

常见问题解答

  1. 如何解决连接问题?
  2. 检查服务器日志中的错误消息
  3. 验证MariaDB/MySQL凭据和连接详细信息
  4. 确保MariaDB/MySQL用户具有适当的权限
  5. 如何确保查询是只读的?
  6. 确保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

许可证

该项目遵循 MIT 开源许可条款,请参阅 MIT 了解完整条款。