@xingyuchen/mysql-mcp-server 3.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +316 -240
- package/dist/httpServer.js +847 -0
- package/dist/index.js +1 -1
- package/package.json +81 -75
package/README.md
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
# MySQL MCP Server 3.
|
1
|
+
# MySQL MCP Server 3.1 🚀
|
2
2
|
|
3
|
-
一个功能强大且易用的MySQL数据库MCP(Model Context Protocol)服务器,让你的AI
|
3
|
+
一个功能强大且易用的MySQL数据库MCP(Model Context Protocol)服务器,让你的AI助手可以安全地进行完整的数据库操作。**v3.1 新增 StreamableHTTP 模式,支持 Header 预配置数据库连接,连接信息不会暴露给 AI!**
|
4
4
|
|
5
|
-
> **🎯 目标用户**: 希望在VSCode
|
5
|
+
> **🎯 目标用户**: 希望在 Claude Desktop、VSCode Cline 等 MCP 客户端中使用 AI 助手进行 MySQL 数据库操作的开发者
|
6
6
|
|
7
7
|
## 📖 目录
|
8
8
|
|
9
9
|
- [🌟 功能特性](#-功能特性)
|
10
|
+
- [🆕 v3.1 新特性](#-v31-新特性)
|
10
11
|
- [🔧 工具概览](#-工具概览)
|
11
|
-
- [☁️ Smithery云部署](#️-smithery云部署)
|
12
12
|
- [🛠️ 安装教程](#️-安装教程)
|
13
13
|
- [⚙️ 配置方法](#️-配置方法)
|
14
14
|
- [🎮 使用指南](#-使用指南)
|
@@ -17,160 +17,150 @@
|
|
17
17
|
- [❗ 故障排除](#-故障排除)
|
18
18
|
- [💡 使用技巧](#-使用技巧)
|
19
19
|
- [🔒 安全说明](#-安全说明)
|
20
|
-
|
20
|
+
|
21
|
+
---
|
21
22
|
|
22
23
|
## 🌟 功能特性
|
23
24
|
|
24
25
|
### ✨ 核心功能
|
25
26
|
- 📦 **NPM包支持**: 一键安装 `npm install -g @xingyuchen/mysql-mcp-server`,即装即用
|
26
|
-
-
|
27
|
+
- 🌐 **双模式部署**: 支持 stdio 模式(本地)和 StreamableHTTP 模式(服务器)
|
28
|
+
- 🔐 **Header 预配置**: 通过 HTTP Headers 传递数据库连接信息,不暴露给 AI
|
29
|
+
- 🔗 **多数据库连接**: 同时管理多个 MySQL 数据库连接,无需频繁切换
|
27
30
|
- 🎯 **智能连接管理**: 支持连接标识、活跃连接切换和连接状态监控
|
28
|
-
- 🔄 **完整CRUD操作**: 支持INSERT、UPDATE、DELETE、SELECT等所有SQL操作
|
31
|
+
- 🔄 **完整CRUD操作**: 支持 INSERT、UPDATE、DELETE、SELECT 等所有 SQL 操作
|
29
32
|
- 🛡️ **自动事务管理**: 修改操作自动开启事务,支持智能回滚
|
30
33
|
- 📊 **增强表查看**: 显示表结构概览、行数统计和样本数据
|
31
34
|
- 📝 **智能日志系统**: 详细记录所有操作,支持错误追踪和性能分析
|
32
35
|
- 🔙 **历史回滚功能**: 查看操作历史,选择性回滚到任意步骤
|
33
|
-
- 🚀 **双模式部署**: 支持stdio模式和HTTP/SSE模式
|
34
36
|
|
35
37
|
### 🎯 使用场景
|
36
|
-
- ✅ 完整的数据库CRUD操作(增删改查)
|
38
|
+
- ✅ 完整的数据库 CRUD 操作(增删改查)
|
37
39
|
- ✅ 数据库结构分析和优化建议
|
38
40
|
- ✅ 批量数据处理和迁移
|
39
41
|
- ✅ 事务安全的数据修改
|
40
42
|
- ✅ 数据备份前的安全测试
|
41
43
|
- ✅ 复杂查询的构建和调试
|
44
|
+
- ✅ 远程服务器数据库管理(HTTP 模式)
|
42
45
|
|
43
|
-
|
44
|
-
- 🔗 **多数据库连接**: 同时管理多个MySQL数据库,支持连接池
|
45
|
-
- 🎯 **连接管理**: 新增连接列表、切换活跃连接、移除连接等管理工具
|
46
|
-
- 📋 **灵活切换**: 所有操作支持指定`connection_id`参数选择目标数据库
|
47
|
-
- 🚀 **向后兼容**: 保持现有API不变,新功能通过可选参数提供
|
48
|
-
- 📊 **连接监控**: 显示连接状态、连接时间和数据库信息
|
46
|
+
---
|
49
47
|
|
50
|
-
|
51
|
-
- **2.0版本**: 工具简化、增强展示、完整回滚、实时监控、安全升级
|
52
|
-
- **1.0版本**: 基础CRUD操作、事务管理、日志系统
|
48
|
+
## 🆕 v3.1 新特性
|
53
49
|
|
54
|
-
|
50
|
+
### 🌐 StreamableHTTP 模式
|
55
51
|
|
56
|
-
|
52
|
+
全新的 HTTP 服务器模式,支持远程部署和多用户访问:
|
57
53
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
| `execute_query` | **万能SQL执行工具** | 执行任何SQL操作(CRUD、DDL等) |
|
62
|
-
| `show_tables` | 显示所有表及结构概览 | 快速了解数据库整体结构 |
|
63
|
-
| `describe_table` | 显示表详细结构和样本数据 | 深入了解特定表的结构和内容 |
|
64
|
-
| `begin_transaction` | 开始事务 | 手动控制事务开始 |
|
65
|
-
| `commit_transaction` | 提交事务 | 确认所有修改 |
|
66
|
-
| `rollback_transaction` | 回滚事务 | 撤销所有未提交修改 |
|
67
|
-
| `show_transaction_history` | 显示事务历史 | 查看所有操作记录 |
|
68
|
-
| `rollback_to_step` | 回滚到指定步骤 | 选择性撤销操作 |
|
69
|
-
| `full_rollback` | 完全回滚 | 撤销所有事务内操作 |
|
70
|
-
| `disconnect_database` | 断开数据库连接 | 安全关闭连接 |
|
71
|
-
| **`list_connections`** | **列出所有数据库连接** | **查看连接状态和信息** |
|
72
|
-
| **`switch_active_connection`** | **切换活跃连接** | **在多个数据库间切换** |
|
73
|
-
| **`remove_connection`** | **移除指定连接** | **清理不需要的连接** |
|
74
|
-
|
75
|
-
### 🎯 主要改进
|
54
|
+
```bash
|
55
|
+
# 启动 HTTP 服务器
|
56
|
+
npm run start:http
|
76
57
|
|
77
|
-
|
78
|
-
```
|
79
|
-
旧版本: 15个工具 (insert_data, update_data, delete_data, select_data, create_table, drop_table, get_table_info...)
|
80
|
-
新版本: 11个工具 (保留万能的execute_query,删除重复功能)
|
58
|
+
# 服务运行在 http://localhost:3000/mcp
|
81
59
|
```
|
82
60
|
|
83
|
-
|
84
|
-
```
|
85
|
-
show_tables 输出示例:
|
86
|
-
📋 数据库概览
|
87
|
-
📊 总共找到 3 个表:
|
61
|
+
### 🔐 Header 预配置连接 (推荐)
|
88
62
|
|
89
|
-
|
90
|
-
📊 行数: 1250
|
91
|
-
🏗️ 列: id(int), name(varchar), email(varchar), created_at(datetime)
|
63
|
+
**最大的安全改进**:数据库连接信息通过 HTTP Headers 预先配置,**不会暴露给 AI**!
|
92
64
|
|
93
|
-
|
94
|
-
📊 行数: 3420
|
95
|
-
🏗️ 列: id(int), user_id(int), amount(decimal), status(enum), order_date(datetime)
|
96
|
-
```
|
65
|
+
#### Claude Desktop 配置示例
|
97
66
|
|
98
|
-
|
67
|
+
```json
|
68
|
+
{
|
69
|
+
"mcpServers": {
|
70
|
+
"mysql-mcp-http": {
|
71
|
+
"type": "streamableHttp",
|
72
|
+
"url": "http://localhost:3000/mcp",
|
73
|
+
"timeout": 600,
|
74
|
+
"headers": {
|
75
|
+
"X-MySQL-Host": "localhost",
|
76
|
+
"X-MySQL-Port": "3306",
|
77
|
+
"X-MySQL-User": "your_username",
|
78
|
+
"X-MySQL-Password": "your_password",
|
79
|
+
"X-MySQL-Database": "your_database"
|
80
|
+
}
|
81
|
+
}
|
82
|
+
}
|
83
|
+
}
|
99
84
|
```
|
100
|
-
describe_table 输出示例:
|
101
|
-
🔍 表 "users" 的详细信息
|
102
85
|
|
103
|
-
|
104
|
-
|
105
|
-
|
86
|
+
**优点:**
|
87
|
+
- ✅ 数据库凭证不会暴露给 AI
|
88
|
+
- ✅ 预先配置,无需每次连接
|
89
|
+
- ✅ 更安全的部署方式
|
90
|
+
- ✅ 自动建立连接,开箱即用
|
106
91
|
|
107
|
-
|
108
|
-
字段名 | 类型 | 可为空 | 键 | 默认值 | 额外信息
|
109
|
-
================================================================================
|
110
|
-
id | int(11) | NO | PRI | NULL | auto_increment
|
111
|
-
name | varchar(100) | NO | | NULL |
|
112
|
-
email | varchar(255) | YES | UNI | NULL |
|
113
|
-
created_at | datetime | YES | | NULL |
|
92
|
+
### 🔧 兼容原有工具参数连接
|
114
93
|
|
115
|
-
|
116
|
-
[
|
117
|
-
{
|
118
|
-
"id": 1,
|
119
|
-
"name": "张三",
|
120
|
-
"email": "zhangsan@example.com",
|
121
|
-
"created_at": "2024-01-15T10:30:00.000Z"
|
122
|
-
},
|
123
|
-
...
|
124
|
-
]
|
125
|
-
```
|
94
|
+
保留原有的 `connect_database` 工具,AI 可以询问用户后动态连接:
|
126
95
|
|
127
|
-
|
96
|
+
```json
|
97
|
+
{
|
98
|
+
"mcpServers": {
|
99
|
+
"mysql-mcp": {
|
100
|
+
"command": "npx",
|
101
|
+
"args": ["-y", "@neigezhujiayi/mysql-mcp-server"]
|
102
|
+
}
|
103
|
+
}
|
104
|
+
}
|
128
105
|
```
|
129
|
-
自动功能:
|
130
|
-
- INSERT/UPDATE/DELETE操作自动开启事务
|
131
|
-
- 自动生成精确的回滚查询
|
132
|
-
- 记录每个操作的详细信息
|
133
|
-
- 支持选择性回滚到任意步骤
|
134
106
|
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
107
|
+
### 📋 两种模式对比
|
108
|
+
|
109
|
+
| 特性 | stdio 模式 | HTTP 模式 + Header 预配置 |
|
110
|
+
|------|-----------|--------------------------|
|
111
|
+
| **适用场景** | 本地使用 | 服务器部署 / 远程访问 |
|
112
|
+
| **启动方式** | `npx -y @xingyuchen/mysql-mcp-server` | `npm run start:http` |
|
113
|
+
| **数据库连接** | AI询问用户后连接 | Headers预配置,自动连接 |
|
114
|
+
| **安全性** | 中等(需告知AI) | 高(凭证不暴露给AI) |
|
115
|
+
| **配置复杂度** | 简单 | 中等(需配置Headers) |
|
116
|
+
| **推荐用途** | 个人开发、快速测试 | 生产部署、多用户、远程访问 |
|
117
|
+
|
118
|
+
### 🔍 连接来源标识
|
119
|
+
|
120
|
+
使用 `list_connections` 工具可以清楚地看到连接来源:
|
121
|
+
|
139
122
|
```
|
123
|
+
📋 数据库连接列表
|
140
124
|
|
141
|
-
|
125
|
+
📊 总连接数: 2
|
142
126
|
|
143
|
-
|
127
|
+
1. 🔗 header_connection_abc123 🔐(Header预配置) 🎯(活跃)
|
128
|
+
📍 主机: localhost:3306
|
129
|
+
🗄️ 数据库: production_db
|
130
|
+
👤 用户: prod_user
|
131
|
+
⏰ 连接时间: 2025-10-20 10:30:00
|
144
132
|
|
145
|
-
|
133
|
+
2. 🔗 localhost_test_1729401234 🔧(工具参数)
|
134
|
+
📍 主机: localhost:3306
|
135
|
+
🗄️ 数据库: test_db
|
136
|
+
👤 用户: test_user
|
137
|
+
⏰ 连接时间: 2025-10-20 10:35:00
|
138
|
+
```
|
146
139
|
|
147
|
-
|
140
|
+
---
|
148
141
|
|
149
|
-
|
150
|
-
```bash
|
151
|
-
https://github.com/guangxiangdebizi/MySQL_MCP
|
152
|
-
```
|
142
|
+
## 🔧 工具概览
|
153
143
|
|
154
|
-
|
155
|
-
- 访问 [Smithery.ai](https://smithery.ai)
|
156
|
-
- 使用GitHub账号登录
|
144
|
+
### 核心工具 (14个)
|
157
145
|
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
146
|
+
| 工具名称 | 功能描述 | 使用场景 |
|
147
|
+
|---------|----------|----------|
|
148
|
+
| `connect_database` | 连接MySQL数据库 | 建立数据库连接(支持连接ID) |
|
149
|
+
| `execute_query` | **万能SQL执行工具** | 执行任何SQL操作(CRUD、DDL等) |
|
150
|
+
| `show_tables` | 显示所有表及结构概览 | 快速了解数据库整体结构 |
|
151
|
+
| `describe_table` | 显示表详细结构和样本数据 | 深入了解特定表的结构和内容 |
|
152
|
+
| `begin_transaction` | 开始事务 | 手动控制事务开始 |
|
153
|
+
| `commit_transaction` | 提交事务 | 确认所有修改 |
|
154
|
+
| `rollback_transaction` | 回滚事务 | 撤销所有未提交修改 |
|
155
|
+
| `show_transaction_history` | 显示事务历史 | 查看所有操作记录 |
|
156
|
+
| `rollback_to_step` | 回滚到指定步骤 | 选择性撤销操作 |
|
157
|
+
| `full_rollback` | 完全回滚 | 撤销所有事务内操作 |
|
158
|
+
| `disconnect_database` | 断开数据库连接 | 安全关闭连接 |
|
159
|
+
| **`list_connections`** | **列出所有数据库连接** | **查看连接状态和来源** |
|
160
|
+
| **`switch_active_connection`** | **切换活跃连接** | **在多个数据库间切换** |
|
161
|
+
| **`remove_connection`** | **移除指定连接** | **清理不需要的连接** |
|
162
162
|
|
163
|
-
|
164
|
-
```json
|
165
|
-
{
|
166
|
-
"mcpServers": {
|
167
|
-
"mysql-database": {
|
168
|
-
"url": "https://server.smithery.ai/your-server-id/sse",
|
169
|
-
"type": "sse"
|
170
|
-
}
|
171
|
-
}
|
172
|
-
}
|
173
|
-
```
|
163
|
+
---
|
174
164
|
|
175
165
|
## 🛠️ 安装教程
|
176
166
|
|
@@ -178,8 +168,7 @@ DELETE → INSERT INTO table (col1, col2) VALUES (?, ?)
|
|
178
168
|
|
179
169
|
- ✅ **Node.js 18+** - [下载地址](https://nodejs.org/)
|
180
170
|
- ✅ **MySQL 5.7+ 或 8.0+** - 确保数据库服务正在运行
|
181
|
-
- ✅ **
|
182
|
-
- ✅ **Cline扩展** - 在VSCode扩展市场搜索"Cline"安装
|
171
|
+
- ✅ **MCP 客户端** - Claude Desktop、VSCode Cline 等
|
183
172
|
|
184
173
|
### 🚀 方法1: NPM安装(推荐)
|
185
174
|
|
@@ -194,7 +183,7 @@ guangxiang-mysql-mcp --help
|
|
194
183
|
### 🔧 方法2: 源码安装
|
195
184
|
|
196
185
|
```bash
|
197
|
-
# 下载项目
|
186
|
+
# 1. 下载项目
|
198
187
|
git clone https://github.com/guangxiangdebizi/MySQL_MCP.git
|
199
188
|
cd MySQL_MCP
|
200
189
|
|
@@ -203,124 +192,160 @@ npm install
|
|
203
192
|
|
204
193
|
# 3. 构建项目
|
205
194
|
npm run build
|
206
|
-
|
207
|
-
# 4. 测试安装
|
208
|
-
npm test
|
209
195
|
```
|
210
196
|
|
197
|
+
---
|
198
|
+
|
211
199
|
## ⚙️ 配置方法
|
212
200
|
|
213
|
-
###
|
201
|
+
### 🔐 方式1: HTTP模式 + Header预配置(最安全,推荐生产环境)
|
214
202
|
|
215
|
-
|
203
|
+
#### 1. 启动 HTTP 服务器
|
204
|
+
|
205
|
+
```bash
|
206
|
+
# 默认端口 3000
|
207
|
+
npm run start:http
|
208
|
+
|
209
|
+
# 或指定端口
|
210
|
+
PORT=3001 npm run start:http
|
211
|
+
```
|
212
|
+
|
213
|
+
#### 2. 配置 Claude Desktop
|
214
|
+
|
215
|
+
编辑配置文件(位置因系统而异):
|
216
|
+
|
217
|
+
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
|
218
|
+
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
219
|
+
**Linux**: `~/.config/Claude/claude_desktop_config.json`
|
216
220
|
|
217
221
|
```json
|
218
222
|
{
|
219
223
|
"mcpServers": {
|
220
|
-
"mysql-
|
221
|
-
"
|
222
|
-
"
|
224
|
+
"mysql-mcp-http": {
|
225
|
+
"type": "streamableHttp",
|
226
|
+
"url": "http://localhost:3000/mcp",
|
227
|
+
"timeout": 600,
|
228
|
+
"headers": {
|
229
|
+
"X-MySQL-Host": "localhost",
|
230
|
+
"X-MySQL-Port": "3306",
|
231
|
+
"X-MySQL-User": "your_username",
|
232
|
+
"X-MySQL-Password": "your_password",
|
233
|
+
"X-MySQL-Database": "your_database"
|
234
|
+
}
|
223
235
|
}
|
224
236
|
}
|
225
237
|
}
|
226
238
|
```
|
227
239
|
|
228
|
-
|
240
|
+
#### 3. 重启 Claude Desktop
|
229
241
|
|
230
|
-
|
242
|
+
配置生效后,数据库连接会自动建立,**无需告诉 AI 你的数据库密码**!
|
243
|
+
|
244
|
+
### 📌 方式2: stdio模式 + NPM全局安装(推荐本地开发)
|
231
245
|
|
232
246
|
```json
|
233
247
|
{
|
234
248
|
"mcpServers": {
|
235
249
|
"mysql-database": {
|
236
|
-
"command": "
|
237
|
-
"args": ["@xingyuchen/mysql-mcp-server"],
|
250
|
+
"command": "guangxiang-mysql-mcp",
|
238
251
|
"env": {}
|
239
252
|
}
|
240
253
|
}
|
241
254
|
}
|
242
255
|
```
|
243
256
|
|
244
|
-
### 📌
|
245
|
-
|
246
|
-
从源码安装后,在Cline设置中添加:
|
257
|
+
### 📌 方式3: stdio模式 + npx(无需安装)
|
247
258
|
|
248
259
|
```json
|
249
260
|
{
|
250
261
|
"mcpServers": {
|
251
262
|
"mysql-database": {
|
252
|
-
"command": "
|
253
|
-
"args": ["
|
263
|
+
"command": "npx",
|
264
|
+
"args": ["-y", "@neigezhujiayi/mysql-mcp-server"],
|
254
265
|
"env": {}
|
255
266
|
}
|
256
267
|
}
|
257
268
|
}
|
258
269
|
```
|
259
270
|
|
260
|
-
### 📌
|
271
|
+
### 📌 方式4: 源码安装配置
|
261
272
|
|
262
273
|
```json
|
263
274
|
{
|
264
275
|
"mcpServers": {
|
265
276
|
"mysql-database": {
|
266
|
-
"
|
267
|
-
"
|
277
|
+
"command": "node",
|
278
|
+
"args": ["C:/path/to/MySQL_MCP/dist/index.js"],
|
279
|
+
"env": {}
|
268
280
|
}
|
269
281
|
}
|
270
282
|
}
|
271
283
|
```
|
272
284
|
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
```
|
285
|
+
**📖 详细的 HTTP 配置指南**: 查看 [HTTP_CONFIG_EXAMPLE.md](./HTTP_CONFIG_EXAMPLE.md)
|
286
|
+
|
287
|
+
---
|
277
288
|
|
278
289
|
## 🎮 使用指南
|
279
290
|
|
280
291
|
### 🚀 基础连接
|
281
292
|
|
282
|
-
####
|
293
|
+
#### 使用 Header 预配置(HTTP 模式)
|
294
|
+
|
295
|
+
配置好 Headers 后,直接使用即可,无需连接步骤:
|
296
|
+
|
297
|
+
```
|
298
|
+
User: 显示所有数据库表
|
299
|
+
AI: [直接使用预配置的连接执行 show_tables]
|
300
|
+
```
|
301
|
+
|
302
|
+
#### 使用工具参数连接(stdio 模式)
|
303
|
+
|
283
304
|
```
|
284
|
-
|
305
|
+
User: 连接到我的数据库
|
306
|
+
AI: 请提供数据库连接信息...
|
307
|
+
User:
|
285
308
|
- 主机: localhost
|
286
309
|
- 端口: 3306
|
287
310
|
- 用户名: root
|
288
311
|
- 密码: your_password
|
289
312
|
- 数据库: test_db
|
313
|
+
AI: [使用 connect_database 工具连接]
|
290
314
|
```
|
291
315
|
|
292
|
-
|
316
|
+
### 🆕 多数据库连接管理
|
317
|
+
|
293
318
|
```
|
294
319
|
# 连接第一个数据库(自动成为活跃连接)
|
295
|
-
|
320
|
+
User: 连接到生产数据库:
|
296
321
|
- 主机: prod.mysql.com
|
297
322
|
- 数据库: production_db
|
298
323
|
- 连接ID: prod
|
299
324
|
|
300
325
|
# 连接第二个数据库
|
301
|
-
|
326
|
+
User: 连接到测试数据库:
|
302
327
|
- 主机: test.mysql.com
|
303
328
|
- 数据库: test_db
|
304
329
|
- 连接ID: test
|
305
330
|
|
306
331
|
# 查看所有连接
|
307
|
-
请列出所有数据库连接
|
332
|
+
User: 请列出所有数据库连接
|
308
333
|
|
309
334
|
# 切换活跃连接
|
310
|
-
请切换到test连接
|
335
|
+
User: 请切换到test连接
|
311
336
|
|
312
337
|
# 指定连接执行操作
|
313
|
-
请在prod连接上查询用户表
|
338
|
+
User: 请在prod连接上查询用户表
|
314
339
|
```
|
315
340
|
|
316
341
|
### 📊 查看数据库结构
|
317
342
|
|
318
343
|
```
|
319
344
|
# 查看所有表概览
|
320
|
-
请显示数据库中的所有表
|
345
|
+
User: 请显示数据库中的所有表
|
321
346
|
|
322
347
|
# 查看特定表详情
|
323
|
-
请描述users表的结构
|
348
|
+
User: 请描述users表的结构
|
324
349
|
```
|
325
350
|
|
326
351
|
### 🔄 执行CRUD操作
|
@@ -343,23 +368,25 @@ DELETE FROM users WHERE id = 123
|
|
343
368
|
|
344
369
|
```
|
345
370
|
# 查看事务历史
|
346
|
-
请显示当前事务的操作历史
|
371
|
+
User: 请显示当前事务的操作历史
|
347
372
|
|
348
373
|
# 回滚到特定步骤
|
349
|
-
请回滚到第3步操作之前
|
374
|
+
User: 请回滚到第3步操作之前
|
350
375
|
|
351
376
|
# 完全回滚
|
352
|
-
请完全回滚所有未提交的操作
|
377
|
+
User: 请完全回滚所有未提交的操作
|
353
378
|
|
354
379
|
# 提交事务
|
355
|
-
请提交当前事务
|
380
|
+
User: 请提交当前事务
|
356
381
|
```
|
357
382
|
|
383
|
+
---
|
384
|
+
|
358
385
|
## 🔄 事务管理
|
359
386
|
|
360
387
|
### 自动事务管理
|
361
388
|
|
362
|
-
- **自动开启**: INSERT/UPDATE/DELETE操作自动开启事务
|
389
|
+
- **自动开启**: INSERT/UPDATE/DELETE 操作自动开启事务
|
363
390
|
- **智能记录**: 记录每个操作的详细信息和回滚查询
|
364
391
|
- **精确回滚**: 支持回滚到任意操作步骤
|
365
392
|
|
@@ -383,6 +410,8 @@ DELETE FROM users WHERE id = 123
|
|
383
410
|
💡 使用 rollback_to_step 可以回滚到任意步骤
|
384
411
|
```
|
385
412
|
|
413
|
+
---
|
414
|
+
|
386
415
|
## 📊 日志系统
|
387
416
|
|
388
417
|
### 日志文件类型
|
@@ -405,32 +434,41 @@ npm run logs:errors
|
|
405
434
|
|
406
435
|
# 分析数据库操作
|
407
436
|
npm run logs:db-analysis
|
437
|
+
|
438
|
+
# 查看统计信息
|
439
|
+
npm run logs:stats
|
408
440
|
```
|
409
441
|
|
442
|
+
---
|
443
|
+
|
410
444
|
## 💡 使用技巧
|
411
445
|
|
412
446
|
### 🎯 最佳实践
|
413
447
|
|
414
|
-
1.
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
448
|
+
#### 1. 选择合适的部署模式
|
449
|
+
|
450
|
+
```
|
451
|
+
本地开发 → stdio 模式(简单快速)
|
452
|
+
生产环境 → HTTP 模式 + Header 预配置(安全可靠)
|
453
|
+
多用户场景 → HTTP 模式(支持并发)
|
454
|
+
```
|
455
|
+
|
456
|
+
#### 2. 数据探索流程
|
457
|
+
|
458
|
+
```
|
459
|
+
1. show_tables 了解整体结构
|
460
|
+
2. describe_table 查看具体表
|
461
|
+
3. execute_query 进行操作
|
462
|
+
```
|
463
|
+
|
464
|
+
#### 3. 安全修改策略
|
465
|
+
|
466
|
+
```
|
467
|
+
1. 重要操作前先 SELECT 确认数据
|
468
|
+
2. 使用事务保护批量修改
|
469
|
+
3. 及时查看事务历史
|
470
|
+
4. 必要时使用回滚功能
|
471
|
+
```
|
434
472
|
|
435
473
|
### 🚀 高级用法
|
436
474
|
|
@@ -457,106 +495,144 @@ SET stock = stock - 1
|
|
457
495
|
WHERE product_id = 123 AND stock > 0
|
458
496
|
```
|
459
497
|
|
498
|
+
---
|
499
|
+
|
460
500
|
## 🔒 安全说明
|
461
501
|
|
462
502
|
### ⚠️ 重要提醒
|
463
503
|
|
464
|
-
- **完整权限**:
|
504
|
+
- **完整权限**: 支持完整 CRUD 操作,请谨慎使用
|
465
505
|
- **事务保护**: 所有修改操作都有事务保护和回滚功能
|
466
506
|
- **日志记录**: 所有操作都会被详细记录
|
467
|
-
-
|
507
|
+
- **Header 预配置**: 使用 HTTP 模式时,强烈推荐使用 Header 预配置,避免凭证暴露
|
468
508
|
|
469
509
|
### 🛡️ 安全建议
|
470
510
|
|
471
|
-
1.
|
472
|
-
```sql
|
473
|
-
CREATE USER 'mcp_user'@'localhost' IDENTIFIED BY 'strong_password';
|
474
|
-
GRANT SELECT, INSERT, UPDATE, DELETE ON your_database.* TO 'mcp_user'@'localhost';
|
475
|
-
```
|
511
|
+
#### 1. 数据库用户权限
|
476
512
|
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
定期检查事务历史
|
481
|
-
保留操作日志用于审计
|
482
|
-
```
|
483
|
-
|
484
|
-
## ❗ 故障排除
|
513
|
+
```sql
|
514
|
+
-- 创建专用 MCP 用户
|
515
|
+
CREATE USER 'mcp_user'@'localhost' IDENTIFIED BY 'strong_password';
|
485
516
|
|
486
|
-
|
517
|
+
-- 授予必要权限
|
518
|
+
GRANT SELECT, INSERT, UPDATE, DELETE ON your_database.* TO 'mcp_user'@'localhost';
|
487
519
|
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
确认连接参数正确
|
492
|
-
查看error日志获取详细信息
|
493
|
-
```
|
520
|
+
-- 生产环境可能只需要只读权限
|
521
|
+
GRANT SELECT ON your_database.* TO 'mcp_readonly'@'localhost';
|
522
|
+
```
|
494
523
|
|
495
|
-
2.
|
496
|
-
```
|
497
|
-
确认数据库用户权限
|
498
|
-
检查表的访问权限
|
499
|
-
查看MySQL错误日志
|
500
|
-
```
|
524
|
+
#### 2. HTTP 模式安全
|
501
525
|
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
526
|
+
```
|
527
|
+
✅ 使用 Header 预配置,避免凭证暴露
|
528
|
+
✅ 生产环境使用 HTTPS(配合 Nginx 等代理)
|
529
|
+
✅ 限制访问 IP(防火墙规则)
|
530
|
+
✅ 定期更新数据库密码
|
531
|
+
✅ 监控日志,发现异常访问
|
532
|
+
```
|
508
533
|
|
509
|
-
|
534
|
+
#### 3. 备份策略
|
510
535
|
|
511
|
-
|
536
|
+
```
|
537
|
+
✅ 重要操作前先备份数据
|
538
|
+
✅ 定期检查事务历史
|
539
|
+
✅ 保留操作日志用于审计
|
540
|
+
✅ 测试回滚功能是否正常
|
541
|
+
```
|
512
542
|
|
513
|
-
|
543
|
+
---
|
514
544
|
|
515
|
-
|
545
|
+
## ❗ 故障排除
|
516
546
|
|
517
|
-
|
518
|
-
- **⚡ [快速发布指南 (QUICK_PUBLISH.md)](./QUICK_PUBLISH.md)** - 简洁的发布命令和步骤
|
547
|
+
### 常见问题
|
519
548
|
|
520
|
-
####
|
549
|
+
#### 1. 连接失败
|
521
550
|
|
522
|
-
```
|
523
|
-
|
524
|
-
|
551
|
+
```
|
552
|
+
问题: 无法连接到数据库
|
553
|
+
解决:
|
554
|
+
- 检查 MySQL 服务是否运行
|
555
|
+
- 确认连接参数正确(Host、Port、User、Password)
|
556
|
+
- 查看 error 日志获取详细信息
|
557
|
+
- HTTP 模式检查 Headers 配置是否完整
|
558
|
+
```
|
525
559
|
|
526
|
-
|
527
|
-
npm publish
|
560
|
+
#### 2. Header 连接未生效
|
528
561
|
|
529
|
-
|
530
|
-
|
562
|
+
```
|
563
|
+
问题: 配置了 Headers 但仍提示需要连接
|
564
|
+
解决:
|
565
|
+
- 确认 Headers 名称正确(X-MySQL-Host, X-MySQL-User 等)
|
566
|
+
- 检查所有必填字段(host, user, password, database)
|
567
|
+
- 重启 HTTP 服务器
|
568
|
+
- 使用 list_connections 查看连接状态
|
531
569
|
```
|
532
570
|
|
533
|
-
####
|
571
|
+
#### 3. 权限错误
|
534
572
|
|
535
|
-
|
573
|
+
```
|
574
|
+
问题: Access denied 或权限不足
|
575
|
+
解决:
|
576
|
+
- 确认数据库用户权限
|
577
|
+
- 检查表的访问权限
|
578
|
+
- 查看 MySQL 错误日志
|
579
|
+
- 确认用户可以从当前主机连接
|
580
|
+
```
|
536
581
|
|
537
|
-
|
538
|
-
# 全局安装
|
539
|
-
npm install -g @xingyuchen/mysql-mcp-server
|
582
|
+
#### 4. 事务问题
|
540
583
|
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
}
|
549
|
-
}
|
584
|
+
```
|
585
|
+
问题: 事务状态异常
|
586
|
+
解决:
|
587
|
+
- 使用 show_transaction_history 查看状态
|
588
|
+
- 必要时使用 full_rollback 重置
|
589
|
+
- 检查 database 日志分析问题
|
590
|
+
- 确认连接未意外断开
|
550
591
|
```
|
551
592
|
|
552
593
|
---
|
553
594
|
|
595
|
+
## 📦 版本历史
|
596
|
+
|
597
|
+
### v3.1.0 (2025-10-20) 🆕
|
598
|
+
- ✨ 新增 StreamableHTTP 模式支持
|
599
|
+
- 🔐 新增 HTTP Headers 预配置数据库连接
|
600
|
+
- 🏷️ 连接来源标识(Header预配置 vs 工具参数)
|
601
|
+
- 📡 健康检查端点
|
602
|
+
- 🔧 Express + CORS + dotenv 支持
|
603
|
+
|
604
|
+
### v3.0.0
|
605
|
+
- 🔗 多数据库连接管理
|
606
|
+
- 🎯 连接标识和切换
|
607
|
+
- 📋 连接列表和监控
|
608
|
+
|
609
|
+
### v2.0.0
|
610
|
+
- 🛠️ 工具简化
|
611
|
+
- 📊 增强展示
|
612
|
+
- 🔄 完整回滚
|
613
|
+
- 📝 日志系统
|
614
|
+
|
615
|
+
### v1.0.0
|
616
|
+
- 🎉 初始版本
|
617
|
+
- 🔧 基础 CRUD 操作
|
618
|
+
- 🛡️ 事务管理
|
619
|
+
|
620
|
+
---
|
621
|
+
|
554
622
|
## 📞 支持与反馈
|
555
623
|
|
556
624
|
- 🐛 **问题报告**: [GitHub Issues](https://github.com/guangxiangdebizi/MySQL_MCP/issues)
|
557
625
|
- 💡 **功能建议**: [GitHub Discussions](https://github.com/guangxiangdebizi/MySQL_MCP/discussions)
|
558
|
-
- 📧 **联系作者**:
|
626
|
+
- 📧 **联系作者**: guangxiangdebizi@gmail.com
|
627
|
+
- 💼 **LinkedIn**: [Xingyu Chen](https://www.linkedin.com/in/xingyu-chen-b5b3b0313/)
|
628
|
+
- 📦 **NPM包**: [@xingyuchen/mysql-mcp-server](https://www.npmjs.com/package/@xingyuchen/mysql-mcp-server)
|
629
|
+
|
630
|
+
---
|
631
|
+
|
632
|
+
## 📄 License
|
633
|
+
|
634
|
+
Apache 2.0 License - 详见 [LICENSE](./LICENSE) 文件
|
559
635
|
|
560
636
|
---
|
561
637
|
|
562
|
-
**⭐ 如果这个项目对你有帮助,请给个Star支持一下!**
|
638
|
+
**⭐ 如果这个项目对你有帮助,请给个 Star 支持一下!**
|