只读 MySQL MCP 服务

MweiIO/mysql-readonly-mcp-server
Hosted
0 Stars 8 次浏览 mwei 更新于 2026-08-23

基于 MCP 协议的只读 MySQL 数据库访问服务,让 AI Agent 安全地查询表结构与数据。

MCP 服务配置

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

{
  "mcpServers": {
    "mysql-readonly": {
      "args": [
        "-y",
        "mysql-readonly-mcp-server"
      ],
      "command": "npx",
      "env": {
        "MYSQL_DATABASE": "db",
        "MYSQL_HOST": "127.0.0.1",
        "MYSQL_PASSWORD": "your_password",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "readonly_user"
      }
    }
  }
}

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

可用工具 (4 个)

该服务在 MCP 协议中暴露的工具,AI 可按需调用

list_connections

列出配置的所有 MySQL 命名连接(连接名、地址、数据库)并探测连通性。多库场景下请先用本工具确认可用的 connection 名称。

该工具无需必填参数,直接调用即可

query 3 个参数 需填 1 项

在指定 MySQL 连接上执行只读 SQL(SELECT / SHOW / DESCRIBE / EXPLAIN),返回 Markdown 表格。写操作(INSERT/UPDATE/DELETE/DDL)会被拒绝。未带 LIMIT 的 SELECT 会自动附加默认行数限制。

必填参数:sql

describe_table 2 个参数 需填 1 项

查看指定表的字段结构(字段名、类型、Null、键、默认值、Extra、注释)与表注释。

必填参数:table

list_tables 2 个参数

列出指定连接数据库中的表(表名、注释、估算行数),可按名称模糊过滤(支持 % 和 _ 通配符,或普通子串)。

该工具无需必填参数,直接调用即可

服务介绍

mysql-readonly-mcp

🚀 Readonly MySQL MCP Server — 基于 MCP 协议的只读 MySQL 数据库访问服务,让 AI Agent 安全地查询表结构与数据。

📚 文档导航

文档 内容
安装 全局安装(推荐) / 临时运行 / 源码构建三种方式
配置方式 环境变量(推荐) / 命令行参数 / 配置文件三种配置方式及优先级

✨ 功能特性

  • 🔒 双重只读保障:应用层 SQL 白名单(AST 校验)+ 数据库只读账号权限建议
  • 🌐 多库支持:同时连接同一服务器下的多个数据库,也支持多服务器/多账号(多服务条目)
  • 📊 四个核心工具list_connections / query / describe_table / list_tables
  • ⚙️ 灵活配置:支持全 env 环境变量配置、args 命令行参数与 config.json,三者可叠加、优先级明确
  • 📝 Markdown 输出:友好的表格格式返回,自动行数和结果截断保护
  • 📋 可配置日志:级别/目录/保留天数可配,密码绝不记录
  • MCP 规范:标准 stdio 传输协议

🧰 核心工具说明

工具 功能 主要参数
list_connections 查看所有配置的命名连接及连通状态
query 执行只读 SQL(SELECT/SHOW/DESCRIBE/EXPLAIN) sql(必填)、connection(多库时必须指定)、limit
describe_table 查看表的字段结构和表注释 table(必填)、connection
list_tables 列出数据库中所有表,支持模糊过滤 connectionpattern(LIKE 风格:% 任意字符,_ 单字符)

💡 无 LIMIT 的 SELECT 会自动附加 defaultLimit(固定 10)行限制,超限自动钳制到 maxLimit(默认 1000)。

🛡️ 安全说明

本 Server 使用 node-sql-parser 进行 AST 分析,严格拦截一切非只读语句:

  • 允许SELECT / SHOW / DESCRIBE / EXPLAIN
  • 拒绝INSERT / UPDATE / DELETE / DROP / ALTER / CREATE 等所有写操作

高级防护:多语句注入检测(含注释中的分号)、字符串字面量关键词不误杀、SELECT INTO OUTFILE/DUMPFILE 拦截、语法错误 SQL 拒绝并给出中文提示。

强烈建议使用数据库只读账号作为第二道防线:

CREATE USER 'readonly_user'@'%' IDENTIFIED BY '<强密码>';
GRANT SELECT, SHOW VIEW ON users.* TO 'readonly_user'@'%';
FLUSH PRIVILEGES;

🚀 快速开始

环境要求:Node.js >= 18。更多安装方式(含源码构建)见 安装,完整配置说明见 配置方式

在 MCP 客户端(如 Qoder、Claude Desktop、ChatGPT Dev Mode)的 mcpServers 配置中添加以下完整案例,即可通过 npx 一键拉起并使用:

{
  "mcpServers": {
    "mysql-readonly": {
      "command": "npx",
      "args": [
        "-y",
        "mysql-readonly-mcp-server"
      ],
      "env": {
        "MYSQL_HOST": "127.0.0.1",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "readonly_user",
        "MYSQL_PASSWORD": "your_password",
        "MYSQL_DATABASE": "db"
      }
    }
  }
}

配置完成后重启 MCP 客户端,即可调用 list_connections / query / describe_table / list_tables 四个工具。多库、多服务器及命令行参数/配置文件等其他配置方式,请阅读 配置方式


📄 License

MIT License · Copyright (c) 2026 Mwei

相关 MCP 服务