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

Mysql Local MCP

MCP Server

@kk-2004/sql-mcp-server

面向Claude Desktop/Claude Code的MCP数据库代理服务,支持MySQL和SQLite,提供权限控制、SSH隧道及多场景数据库操作功能。

工具数

5

提示词数

0

GitHub Stars

1

资源数

0
权限控制JavaScriptClaudeClaude DesktopClaude

安装说明

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

作者 / 组织

kK-2004

提供方

kK-2004

最后核验

2026/5/17 20:21

运行时

Node.js

快速接入

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

命令预览

npx -y @kk-2004/sql-mcp-server \

详细介绍

SQL MCP Server

面向 Claude Desktop / Claude Code 的 MCP 数据库服务,支持 MySQL 和 SQLite,内置表白名单、操作限制和 SSH 隧道。

目录


✨ 亮点

  • 零安装npx 即可直接运行,无需全局安装
  • 双数据库 — 同时支持 MySQL 和 SQLite
  • SSH 隧道 — 内置 MySQL + SSH 隧道支持,轻松连接远程数据库
  • 权限控制 — 支持表白名单与操作白名单,双重防护
  • 开箱即用 — 兼容 Claude Desktop 配置格式

使用场景

1. 本地开发,批量插入测试数据

让 LLM 通过 db_insert 往开发库或 SQLite 文件里批量写入测试数据,快速准备联调环境、演示数据或回归测试样本。

2. 联调时快速理解数据库结构

让 LLM 先执行 db_connectdb_describe_schema,快速了解有哪些表、字段类型和约束,减少手动翻表结构的时间。

3. 排查脏数据或线上问题

在只开放 connect,schema,query 的前提下,让 LLM 帮你查询异常记录、比对状态字段、定位重复数据或缺失数据。

4. 做项目统计、报表和运营分析

适合统计提交人数、重复提交、逾期提交、订单汇总、用户活跃度等场景,让 LLM 把查询结果整理成可读报告。

5. 通过 SSH 隧道安全访问远程 MySQL

当数据库只能从堡垒机或跳板机访问时,可以结合 SSH 隧道能力,把远程数据库以受控方式接给 Claude 使用。

6. 分权限开放数据库能力

你可以按环境控制能力范围:开发环境开放 insert/delete,生产环境只开放 connect/schema/query,降低误操作风险。


效果预览

下面两张图分别展示了典型使用流程和最终输出效果:

工具调用过程

LLM 先按 MCP 协议连接数据库、识别表结构,再分步发起查询。

统计结果输出

查询完成后,LLM 会基于工具返回结果生成结构化报告。


🔍 工作原理

ALLOWED_METHODS 双层校验

ALLOWED_METHODS 通过以下机制控制 LLM 可调用的操作:

  1. 工具隐藏 — 服务启动时解析白名单,ListTools 阶段只向 LLM 暴露被允许的工具
  2. 执行拦截CallTool 执行时再次校验,未授权方法直接返回错误,不执行任何数据库操作
# 示例:LLM 只能查询,不能写入
ALLOWED_METHODS='connect,schema,query' npx -y @kk-2004/sql-mcp-server \
  --mode=sqlite \
  --db-path=/path/to/database.db \
  --tables='*'

LLM 如何操作数据库?

LLM 本身不会直接连接数据库,而是通过 MCP 工具间接操作:

用户提问
  └─▶ LLM 决策(调用哪个工具、传什么参数)
        └─▶ MCP 客户端发起工具调用
              └─▶ 服务端:权限检查 → 参数校验 → 执行 SQL
                    └─▶ 返回 JSON 结果给 LLM
                          └─▶ LLM 生成最终回复

服务端返回给 LLM 的格式示例:

{
  "content": [
    {
      "type": "text",
      "text": "{\"rowCount\": 2, \"rows\": [...]}"
    }
  ]
}

🚀 快速开始

方式一:npx(推荐)

SQLite

npx -y @kk-2004/sql-mcp-server \
  --mode=sqlite \
  --db-path=/path/to/database.db \
  --tables='*'

SQLite + 环境变量

DB_MODE=sqlite \
SQLITE_DB_PATH=/path/to/database.db \
ALLOWED_TABLES='users,orders' \
ALLOWED_METHODS='connect,schema,query' \
DEFAULT_LIMIT=50 \
MAX_LIMIT=500 \
npx -y @kk-2004/sql-mcp-server

MySQL

npx -y @kk-2004/sql-mcp-server \
  --mysql-host=127.0.0.1 \
  --mysql-port=3306 \
  --mysql-user=root \
  --mysql-password=password \
  --mysql-database=mydb \
  --tables='*'

MySQL + 连接串

npx -y @kk-2004/sql-mcp-server \
  --mysql-url='mysql://root:password@127.0.0.1:3306/mydb' \
  --tables='users,orders' \
  --methods='connect,schema,query,insert'

MySQL + SSH 隧道(私钥路径)

npx -y @kk-2004/sql-mcp-server \
  --ssh-enabled=true \
  --ssh-host=jump.example.com \
  --ssh-port=22 \
  --ssh-user=ubuntu \
  --ssh-private-key-path=/Users/you/.ssh/id_rsa \
  --mysql-host=127.0.0.1 \
  --mysql-port=3306 \
  --mysql-user=root \
  --mysql-password=password \
  --mysql-database=mydb \
  --tables='*'

MySQL + SSH 隧道(私钥内容)

npx -y @kk-2004/sql-mcp-server \
  --ssh-enabled=true \
  --ssh-host=jump.example.com \
  --ssh-user=ubuntu \
  --ssh-private-key='-----BEGIN OPENSSH PRIVATE KEY-----\n...\n-----END OPENSSH PRIVATE KEY-----' \
  --ssh-passphrase='your-passphrase' \
  --mysql-host=127.0.0.1 \
  --mysql-user=root \
  --mysql-password=db-password \
  --mysql-database=mydb \
  --tables='*'

方式二:本地安装

# npm
npm install @kk-2004/sql-mcp-server

# pnpm
pnpm add @kk-2004/sql-mcp-server

# yarn
yarn add @kk-2004/sql-mcp-server

# bun
bun add @kk-2004/sql-mcp-server

安装后运行:

# 通过本地二进制
./node_modules/.bin/sql-mcp-server --mode=sqlite --db-path=/path/to/database.db --tables='*'

# 通过 npm exec
npm exec sql-mcp-server -- --mode=sqlite --db-path=/path/to/database.db --tables='*'

# 通过 node
node ./node_modules/@kk-2004/sql-mcp-server/server.js --mode=sqlite --db-path=/path/to/database.db --tables='*'

🔌 集成

以下配置可直接放入 Claude Desktop 配置文件。

macOS / Linux 可以直接使用 npx。 Windows 原生环境建议使用 cmd /c npx ...,避免 Claude 启动 MCP 服务时找不到 npx

SQLite

{
  "mcpServers": {
    "sql-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@kk-2004/sql-mcp-server",
        "--mode=sqlite",
        "--db-path=/path/to/database.db",
        "--tables=*"
      ]
    }
  }
}

Windows(npx 启动示例)

{
  "mcpServers": {
    "sql-mcp": {
      "command": "cmd",
      "args": [
        "/c",
        "npx",
        "-y",
        "@kk-2004/sql-mcp-server",
        "--mode=sqlite",
        "--db-path=C:\\path\\to\\database.db",
        "--tables=*"
      ]
    }
  }
}

MySQL

{
  "mcpServers": {
    "sql-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@kk-2004/sql-mcp-server",
        "--mysql-host=127.0.0.1",
        "--mysql-port=3306",
        "--mysql-user=root",
        "--mysql-password=password",
        "--mysql-database=mydb",
        "--tables=users,orders"
      ]
    }
  }
}

MySQL + SSH 隧道

{
  "mcpServers": {
    "sql-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@kk-2004/sql-mcp-server",
        "--ssh-enabled=true",
        "--ssh-host=jump.example.com",
        "--ssh-port=22",
        "--ssh-user=ubuntu",
        "--ssh-private-key-path=/Users/you/.ssh/id_rsa",
        "--mysql-host=127.0.0.1",
        "--mysql-port=3306",
        "--mysql-user=root",
        "--mysql-password=password",
        "--mysql-database=mydb",
        "--tables=*"
      ]
    }
  }
}

使用环境变量(推荐用于敏感信息)

{
  "mcpServers": {
    "sql-mcp": {
      "command": "npx",
      "args": ["-y", "@kk-2004/sql-mcp-server"],
      "env": {
        "DB_MODE": "mysql",
        "MYSQL_HOST": "127.0.0.1",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "root",
        "MYSQL_PASSWORD": "your-password",
        "MYSQL_DATABASE": "mydb",
        "ALLOWED_TABLES": "users,orders",
        "ALLOWED_METHODS": "connect,schema,query,insert,delete",
        "DEFAULT_LIMIT": "100",
        "MAX_LIMIT": "1000",
        "ALLOW_EMPTY_DELETE": "false"
      }
    }
  }
}

本地安装版配置

方式 A:直接调用本地二进制

{
  "mcpServers": {
    "sql-mcp": {
      "command": "/Users/you/project/node_modules/.bin/sql-mcp-server",
      "args": ["--mode=sqlite", "--db-path=/path/to/database.db", "--tables=*"]
    }
  }
}

方式 B:通过 node 调用入口文件

{
  "mcpServers": {
    "sql-mcp": {
      "command": "node",
      "args": [
        "/Users/you/project/node_modules/@kk-2004/sql-mcp-server/server.js",
        "--mode=mysql",
        "--mysql-host=127.0.0.1",
        "--mysql-user=root",
        "--mysql-database=mydb",
        "--tables=users,orders"
      ]
    }
  }
}

⚙️ 配置参考

优先级:CLI 参数 > 环境变量 提示:使用 MYSQL_URL 时,建议将数据库名写入连接串,如 mysql://root:password@127.0.0.1:3306/mydb

通用参数

参数环境变量命令行参数必填默认值说明
数据库模式DB_MODE--modemysql支持 mysqlsqlite
表白名单ALLOWED_TABLES--tables允许访问的表,逗号分隔,* 表示全部
允许方法ALLOWED_METHODS--methodsconnect,schema,query,insert,delete允许的操作,逗号分隔
默认查询限制DEFAULT_LIMIT--default-limit100默认最大返回行数
最大查询限制MAX_LIMIT--max-limit1000返回行数上限
允许无条件删除ALLOW_EMPTY_DELETE--allow-empty-deletefalse是否允许不带 WHERE 的删除

MySQL 参数

参数环境变量命令行参数必填默认值说明
连接字符串MYSQL_URL--mysql-url完整的 MySQL 连接字符串
主机MYSQL_HOST--mysql-host127.0.0.1MySQL 服务器地址
端口MYSQL_PORT--mysql-port3306MySQL 服务器端口
用户名MYSQL_USER--mysql-userrootMySQL 用户名
密码MYSQL_PASSWORD--mysql-passwordMySQL 密码
数据库MYSQL_DATABASE--mysql-database数据库名称

SQLite 参数

参数环境变量命令行参数必填默认值说明
模式DB_MODE--modemysql设为 sqlite 启用 SQLite
数据库路径SQLITE_DB_PATH--db-path(SQLite 模式)SQLite 数据库文件路径

SSH 隧道参数

参数环境变量命令行参数必填默认值说明
启用 SSHSSH_ENABLED--ssh-enabledfalse是否启用 SSH 隧道
SSH 主机SSH_HOST--ssh-hostSSH 跳板机地址
SSH 端口SSH_PORT--ssh-port22SSH 端口
SSH 用户SSH_USER--ssh-userSSH 用户名
私钥内容SSH_PRIVATE_KEY--ssh-private-key直接传入私钥内容
私钥路径SSH_PRIVATE_KEY_PATH--ssh-private-key-path私钥文件路径
私钥密码SSH_PASSPHRASE--ssh-passphrase私钥密码(如有)
SSH 密码SSH_PASSWORD--ssh-passwordSSH 登录密码(替代私钥)
本地绑定主机SSH_LOCAL_HOST--ssh-local-host127.0.0.1SSH 隧道本地监听地址
本地绑定端口SSH_LOCAL_PORT--ssh-local-port0本地监听端口,0 表示自动分配
目标主机SSH_DST_HOST--ssh-dst-host自动推断SSH 隧道转发目标主机
目标端口SSH_DST_PORT--ssh-dst-port自动推断SSH 隧道转发目标端口

🛠️ 支持的工具

工具描述
db_connect连接数据库并验证连接
db_describe_schema查看表结构
db_query查询数据(SELECT)
db_insert插入数据(INSERT)
db_delete删除数据(DELETE)

📖 使用示例

db_connect

请求

{}

响应

{
  "connected": true,
  "database": "mydb",
  "tables": ["users", "orders"]
}

db_describe_schema

查询单表

{ "table": "users" }

查询所有允许的表

{}

db_query

{
  "table": "users",
  "columns": ["id", "name", "email"],
  "where": { "status": "active" },
  "orderBy": { "column": "created_at", "direction": "DESC" },
  "limit": 10
}

db_insert

{
  "table": "users",
  "data": {
    "name": "John Doe",
    "email": "john@example.com"
  }
}

db_delete

{
  "table": "users",
  "where": { "id": 123 }
}

🔒 安全注意事项

  • 标识符校验 — 表名和字段名均通过合法性校验,防止注入
  • 参数化查询 — 所有条件值使用参数化查询,杜绝 SQL 注入
  • 强制 WHEREDELETE 默认要求携带 WHERE 条件,可通过 ALLOW_EMPTY_DELETE=true 关闭
  • 结果限制 — 查询结果有最大行数限制,防止大量数据泄露

🧑‍💻 本地开发

git clone https://github.com/kK-2004/sql-mcp.git
cd sql-mcp
npm install
node server.js --mode=sqlite --db-path=/path/to/database.db --tables='*'

目录标签

目录标签

权限控制JavaScriptClaude数据库代理本地部署MySQL支持SQLite支持SSH隧道

支持客户端

Claude DesktopClaude

接入字段

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

stdio

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

none

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

@kk-2004/sql-mcp-server

工具数量(toolCount,工具数)

5

资源数量(resourceCount,资源数)

0

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

0

权限和风险

stdionone部署方式未说明

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

安装前确认

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

来源信息

继续浏览同类 MCP