MySQL MCP Server
README.md
# MySQL MCP Server
> **AI-to-DB Secure Gateway** — 不只是一个 MCP Server,而是 AI 与数据库之间的安全执行网关。
基于 **NestJS + TypeScript** 构建,通过 MCP 协议为 Claude Code 等 AI 助手提供对 MySQL 数据库的受控访问能力。核心目标是在 AI 的灵活性与数据库的安全性之间建立可信边界。
---
## 设计理念
传统数据库工具直接暴露执行能力,对 AI 调用者而言风险极高。本项目的核心设计原则:
- **最小权限**:工具按风险分级,高危操作默认关闭
- **AST 级校验**:不依赖关键字匹配,通过 SQL Parser 解析语法树做严格校验
- **可审计**:每次操作完整记录,行为可追溯
- **可控执行**:AI 可以分析(EXPLAIN)但不能随意破坏
---
## 快速开始
```bash
npm install
cp .env.example .env
# 编辑 .env 填入 MySQL 连接信息
npm run start:dev # 开发模式
npm run build # 构建
npm run start:prod # 生产运行
```
### 在 Claude Code 中配置
先构建项目:
```bash
npm run build
```
使用 `claude mcp add` 命令注册(推荐,写入用户级全局配置):
```bash
claude mcp add mysql node /path/to/mysql-mcp-nest/dist/main.js \
--scope user \
-e DB_HOST=127.0.0.1 \
-e DB_PORT=3306 \
-e DB_USER=root \
-e DB_PASSWORD=your_password \
-e DB_DATABASE=your_database \
-e PERMISSION_MODE=read_write \
-e AUDIT_LOG_ENABLED=true \
-e AUDIT_LOG_DIR=/path/to/mysql-mcp-nest/logs
```
- `--scope user`:写入 `~/.claude.json`,所有项目均可使用
- `--scope project`:写入当前项目的 `.claude.json`,仅当前项目可用
注册后重启 `claude`,执行 `/mcp` 验证连接状态:
```
❯ /mcp
mysql connected
```
### 在 Codex 中配置
先构建项目:
```bash
npm run build
```
使用 `codex mcp add` 命令注册到 Codex:
```bash
codex mcp add mysql \
--env DB_HOST=127.0.0.1 \
--env DB_PORT=3306 \
--env DB_USER=root \
--env DB_PASSWORD=your_password \
--env DB_DATABASE=your_database \
--env PERMISSION_MODE=read_write \
--env AUDIT_LOG_ENABLED=true \
--env AUDIT_LOG_DIR=/path/to/mysql-mcp-nest/logs \
-- node /path/to/mysql-mcp-nest/dist/main.js
```
验证配置是否写入成功:
```bash
codex mcp list
codex mcp get mysql
```
注册后重启 Codex,或重新开启一个 Codex 会话,让 MCP 配置生效。
连接成功后即可直接使用:
```
列出 your_database 中的所有表
```
### 在 Cursor 中配置
项目已包含 `.cursor/mcp.json`,Cursor 打开本仓库后会注册 `mysql` MCP Server:
```json
{
"mcpServers": {
"mysql": {
"type": "stdio",
"command": "node",
"args": ["${workspaceFolder}/dist/main.js"],
"envFile": "${workspaceFolder}/.env",
"env": {
"AUDIT_LOG_DIR": "${workspaceFolder}/logs"
}
}
}
}
```
使用前先构建项目,并确认 `.env` 里已填好 MySQL 连接信息:
```bash
npm run build
```
然后重启 Cursor,或在 Cursor Settings → MCP 中刷新/启用 `mysql`。
TDQS
A3.9/5.0
Scored across 6 tools
Disambiguation5/5
Each tool targets a distinct operation (query, explain, list databases, list tables, describe table, execute DML). No overlap in purpose or usage.
Naming Consistency5/5
All tool names follow a consistent 'mysql_' prefix with verb_noun snake_case (mysql_query, mysql_explain, mysql_list_databases, etc.). Uniform and predictable.
Tool Count5/5
Six tools is well within the ideal 3-15 range. Each tool provides a clear, necessary capability for a MySQL server without redundancy.
Completeness4/5
The surface covers query execution, performance analysis, schema exploration (databases, tables, describe), and DML operations. Minor gap: no DDL (create/alter/drop) or transaction control, but for a focused MySQL MCP server the coverage is good.
Maintenance
ActivityInactive
ResponsivenessNo issues