@xingyuchen/mysql-mcp-server 3.2.1 → 4.0.1

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 CHANGED
@@ -1,116 +1,70 @@
1
- # MySQL MCP Server 3.2 🚀
1
+ # MySQL MCP Server 🚀
2
2
 
3
- 一个功能强大且易用的MySQL数据库MCP(Model Context Protocol)服务器,让你的AI助手可以安全地进行完整的数据库操作。**v3.2 支持多数据库 Header 预配置,一次性配置多个数据库连接,连接信息不会暴露给 AI!v3.2.1 修复了连接稳定性问题,支持自动重连!**
3
+ > **v4.0.0** - 全新架构重写,更简洁、更强大!
4
4
 
5
- > **🎯 目标用户**: 希望在 Claude Desktop、VSCode Cline 等 MCP 客户端中使用 AI 助手进行 MySQL 数据库操作的开发者
5
+ 一个功能强大且易用的 MySQL 数据库 MCP(Model Context Protocol)服务器,支持 AI 助手安全地操作 MySQL 数据库。
6
6
 
7
- ## 📖 目录
7
+ ## 🌟 核心特性
8
8
 
9
- - [🌟 功能特性](#-功能特性)
10
- - [🆕 v3.1 新特性](#-v31-新特性)
11
- - [🔧 工具概览](#-工具概览)
12
- - [🛠️ 安装教程](#️-安装教程)
13
- - [⚙️ 配置方法](#️-配置方法)
14
- - [🎮 使用指南](#-使用指南)
15
- - [🔄 事务管理](#-事务管理)
16
- - [📊 日志系统](#-日志系统)
17
- - [❗ 故障排除](#-故障排除)
18
- - [💡 使用技巧](#-使用技巧)
19
- - [🔒 安全说明](#-安全说明)
9
+ - 🌐 **StreamableHTTP 协议** - 基于最新 MCP 规范实现
10
+ - 🔐 **Header 预配置** - 凭证不暴露给 AI,安全可靠
11
+ - 🤖 **AI 动态管理** - AI 可以帮你添加/切换数据库连接
12
+ - 🔗 **多数据库支持** - 同时管理多个数据库,随时切换
13
+ - 📊 **完整 CRUD** - 支持所有 SQL 操作
14
+ - 🏗️ **模块化架构** - 清晰的目录结构,易于扩展
20
15
 
21
16
  ---
22
17
 
23
- ## 🌟 功能特性
24
-
25
- ### ✨ 核心功能
26
- - 📦 **NPM包支持**: 一键安装 `npm install -g @xingyuchen/mysql-mcp-server`,即装即用
27
- - 🌐 **双模式部署**: 支持 stdio 模式(本地)和 StreamableHTTP 模式(服务器)
28
- - 🔐 **Header 预配置**: 通过 HTTP Headers 传递数据库连接信息,不暴露给 AI
29
- - 🔗 **多数据库连接**: 同时管理多个 MySQL 数据库连接,无需频繁切换
30
- - 🎯 **智能连接管理**: 支持连接标识、活跃连接切换和连接状态监控
31
- - 🔄 **完整CRUD操作**: 支持 INSERT、UPDATE、DELETE、SELECT 等所有 SQL 操作
32
- - 🛡️ **自动事务管理**: 修改操作自动开启事务,支持智能回滚
33
- - 📊 **增强表查看**: 显示表结构概览、行数统计和样本数据
34
- - 📝 **智能日志系统**: 详细记录所有操作,支持错误追踪和性能分析
35
- - 🔙 **历史回滚功能**: 查看操作历史,选择性回滚到任意步骤
36
-
37
- ### 🎯 使用场景
38
- - ✅ 完整的数据库 CRUD 操作(增删改查)
39
- - ✅ 数据库结构分析和优化建议
40
- - ✅ 批量数据处理和迁移
41
- - ✅ 事务安全的数据修改
42
- - ✅ 数据备份前的安全测试
43
- - ✅ 复杂查询的构建和调试
44
- - ✅ 远程服务器数据库管理(HTTP 模式)
18
+ ## 📦 安装
45
19
 
46
- ---
20
+ ### 环境要求
47
21
 
48
- ## 🆕 v3.2 新特性
22
+ - Node.js 18+
23
+ - MySQL 5.7+ 或 8.0+
24
+ - MCP 客户端(Claude Desktop、Cursor 等)
49
25
 
50
- ### 🔢 多数据库 Header 预配置
26
+ ### 安装步骤
51
27
 
52
- **一次性配置多个数据库**,通过 Headers 中的编号后缀(-1, -2, -3...)预配置多个数据库连接:
28
+ ```bash
29
+ # 克隆项目
30
+ git clone https://github.com/guangxiangdebizi/MySQL_MCP.git
31
+ cd MySQL_MCP
53
32
 
54
- ```json
55
- {
56
- "mcpServers": {
57
- "mysql-mcp-http": {
58
- "type": "streamableHttp",
59
- "url": "http://localhost:3000/mcp",
60
- "headers": {
61
- "X-MySQL-Host-1": "prod.mysql.com",
62
- "X-MySQL-User-1": "prod_user",
63
- "X-MySQL-Password-1": "prod_pass",
64
- "X-MySQL-Database-1": "production",
65
-
66
- "X-MySQL-Host-2": "test.mysql.com",
67
- "X-MySQL-User-2": "test_user",
68
- "X-MySQL-Password-2": "test_pass",
69
- "X-MySQL-Database-2": "testing",
70
-
71
- "X-MySQL-Host-3": "dev.mysql.com",
72
- "X-MySQL-User-3": "dev_user",
73
- "X-MySQL-Password-3": "dev_pass",
74
- "X-MySQL-Database-3": "development"
75
- }
76
- }
77
- }
78
- }
79
- ```
33
+ # 安装依赖
34
+ npm install
80
35
 
81
- **优点:**
82
- - 一次配置多个数据库(生产、测试、开发等)
83
- - ✅ 所有数据库凭证都不会暴露给 AI
84
- - ✅ 自动创建连接 ID:`header_db_1`, `header_db_2`, `header_db_3`
85
- - ✅ 使用 `list_connections` 查看所有连接
86
- - ✅ 使用 `switch_active_connection` 在数据库间切换
36
+ # 编译
37
+ npm run build
87
38
 
88
- ### 🌐 StreamableHTTP 模式(v3.1)
39
+ # 启动服务器
40
+ npm start
41
+ ```
89
42
 
90
- 全新的 HTTP 服务器模式,支持远程部署和多用户访问:
43
+ ---
91
44
 
92
- ```bash
93
- # 启动 HTTP 服务器
94
- npm run start:http
45
+ ## ⚙️ 配置方法
95
46
 
96
- # 服务运行在 http://localhost:3000/mcp
97
- ```
47
+ ### 方式一:Header 预配置(推荐)
98
48
 
99
- ### 🔐 Header 预配置连接
49
+ 编辑 MCP 配置文件:
100
50
 
101
- **单数据库配置**(v3.1,仍然支持):
51
+ **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
52
+ **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
53
+ **Linux**: `~/.config/Claude/claude_desktop_config.json`
54
+
55
+ #### 单数据库配置
102
56
 
103
57
  ```json
104
58
  {
105
59
  "mcpServers": {
106
- "mysql-mcp-http": {
60
+ "mysql-mcp": {
107
61
  "type": "streamableHttp",
108
- "url": "http://localhost:3000/mcp",
62
+ "url": "http://localhost:3001/mcp",
109
63
  "timeout": 600,
110
64
  "headers": {
111
65
  "X-MySQL-Host": "localhost",
112
66
  "X-MySQL-Port": "3306",
113
- "X-MySQL-User": "your_username",
67
+ "X-MySQL-User": "root",
114
68
  "X-MySQL-Password": "your_password",
115
69
  "X-MySQL-Database": "your_database"
116
70
  }
@@ -119,14 +73,15 @@ npm run start:http
119
73
  }
120
74
  ```
121
75
 
122
- **多数据库配置**(v3.2,推荐):
76
+ #### 多数据库配置
123
77
 
124
78
  ```json
125
79
  {
126
80
  "mcpServers": {
127
- "mysql-mcp-http": {
81
+ "mysql-mcp": {
128
82
  "type": "streamableHttp",
129
- "url": "http://localhost:3000/mcp",
83
+ "url": "http://localhost:3001/mcp",
84
+ "timeout": 600,
130
85
  "headers": {
131
86
  "X-MySQL-Host-1": "prod.mysql.com",
132
87
  "X-MySQL-User-1": "prod_user",
@@ -143,575 +98,246 @@ npm run start:http
143
98
  }
144
99
  ```
145
100
 
146
- **优点:**
147
- - ✅ 数据库凭证不会暴露给 AI
148
- - ✅ 预先配置,无需每次连接
149
- - ✅ 支持多数据库(v3.2+)
150
- - ✅ 自动建立连接,开箱即用
101
+ **优势:**
102
+ - ✅ 数据库凭证不暴露给 AI
103
+ - ✅ 启动即连接,无需手动操作
104
+ - ✅ 支持多数据库同时连接
151
105
 
152
- ### 🔧 兼容原有工具参数连接
106
+ ### 方式二:AI 动态添加(灵活)
153
107
 
154
- 保留原有的 `connect_database` 工具,AI 可以询问用户后动态连接:
108
+ 不配置 Header,让 AI 在对话中帮你添加连接:
155
109
 
156
110
  ```json
157
111
  {
158
112
  "mcpServers": {
159
113
  "mysql-mcp": {
160
- "command": "npx",
161
- "args": ["-y", "@neigezhujiayi/mysql-mcp-server"]
114
+ "type": "streamableHttp",
115
+ "url": "http://localhost:3001/mcp",
116
+ "timeout": 600
162
117
  }
163
118
  }
164
119
  }
165
120
  ```
166
121
 
167
- ### 📋 两种模式对比
168
-
169
- | 特性 | stdio 模式 | HTTP 模式 + Header 预配置 |
170
- |------|-----------|--------------------------|
171
- | **适用场景** | 本地使用 | 服务器部署 / 远程访问 |
172
- | **启动方式** | `npx -y @xingyuchen/mysql-mcp-server` | `npm run start:http` |
173
- | **数据库连接** | AI询问用户后连接 | Headers预配置,自动连接 |
174
- | **安全性** | 中等(需告知AI) | 高(凭证不暴露给AI) |
175
- | **配置复杂度** | 简单 | 中等(需配置Headers) |
176
- | **推荐用途** | 个人开发、快速测试 | 生产部署、多用户、远程访问 |
177
-
178
- ### 🔍 连接来源标识
179
-
180
- 使用 `list_connections` 工具可以清楚地看到连接来源:
181
-
122
+ **使用示例:**
182
123
  ```
183
- 📋 数据库连接列表
184
-
185
- 📊 总连接数: 4
186
-
187
- 1. 🔗 header_db_1 🔐(Header预配置) 🎯(活跃)
188
- 📍 主机: prod.mysql.com:3306
189
- 🗄️ 数据库: production
190
- 👤 用户: prod_user
191
- ⏰ 连接时间: 2025-10-20 10:30:00
192
-
193
- 2. 🔗 header_db_2 🔐(Header预配置)
194
- 📍 主机: test.mysql.com:3306
195
- 🗄️ 数据库: testing
196
- 👤 用户: test_user
197
- ⏰ 连接时间: 2025-10-20 10:30:01
198
-
199
- 3. 🔗 header_db_3 🔐(Header预配置)
200
- 📍 主机: dev.mysql.com:3306
201
- 🗄️ 数据库: development
202
- 👤 用户: dev_user
203
- ⏰ 连接时间: 2025-10-20 10:30:02
204
-
205
- 4. 🔗 localhost_test_1729401234 🔧(工具参数)
206
- 📍 主机: localhost:3306
207
- 🗄️ 数据库: test_db
208
- 👤 用户: test_user
209
- ⏰ 连接时间: 2025-10-20 10:35:00
210
- ```
211
-
212
- **AI 使用示例:**
213
- ```
214
- User: 切换到测试数据库
215
- AI: [调用 switch_active_connection,参数:header_db_2]
216
-
217
- User: 在生产数据库上查询用户总数
218
- AI: [调用 execute_query,参数:connection_id=header_db_1]
124
+ 你: 帮我连接到本地 MySQL,用户名 root,密码 123456,数据库 mydb
125
+ AI: [调用 add_connection 工具]
219
126
  ```
220
127
 
221
128
  ---
222
129
 
223
- ## 🔧 工具概览
224
-
225
- ### 核心工具 (14个)
226
-
227
- | 工具名称 | 功能描述 | 使用场景 |
228
- |---------|----------|----------|
229
- | `connect_database` | 连接MySQL数据库 | 建立数据库连接(支持连接ID) |
230
- | `execute_query` | **万能SQL执行工具** | 执行任何SQL操作(CRUD、DDL等) |
231
- | `show_tables` | 显示所有表及结构概览 | 快速了解数据库整体结构 |
232
- | `describe_table` | 显示表详细结构和样本数据 | 深入了解特定表的结构和内容 |
233
- | `begin_transaction` | 开始事务 | 手动控制事务开始 |
234
- | `commit_transaction` | 提交事务 | 确认所有修改 |
235
- | `rollback_transaction` | 回滚事务 | 撤销所有未提交修改 |
236
- | `show_transaction_history` | 显示事务历史 | 查看所有操作记录 |
237
- | `rollback_to_step` | 回滚到指定步骤 | 选择性撤销操作 |
238
- | `full_rollback` | 完全回滚 | 撤销所有事务内操作 |
239
- | `disconnect_database` | 断开数据库连接 | 安全关闭连接 |
240
- | **`list_connections`** | **列出所有数据库连接** | **查看连接状态和来源** |
241
- | **`switch_active_connection`** | **切换活跃连接** | **在多个数据库间切换** |
242
- | **`remove_connection`** | **移除指定连接** | **清理不需要的连接** |
130
+ ## 🔧 工具列表
243
131
 
244
- ---
132
+ ### 连接管理
245
133
 
246
- ## 🛠️ 安装教程
134
+ | 工具名称 | 功能说明 | 使用场景 |
135
+ |---------|---------|---------|
136
+ | `add_connection` | 添加数据库连接 | AI 帮你动态添加新连接 |
137
+ | `list_connections` | 列出所有连接 | 查看当前有哪些数据库 |
138
+ | `select_database` | 选择活跃数据库 | 切换到其他数据库 |
139
+ | `remove_connection` | 移除连接 | 清理不需要的连接 |
247
140
 
248
- ### 📋 环境要求
141
+ ### 查询操作
249
142
 
250
- - **Node.js 18+** - [下载地址](https://nodejs.org/)
251
- - ✅ **MySQL 5.7+ 或 8.0+** - 确保数据库服务正在运行
252
- - **MCP 客户端** - Claude DesktopVSCode Cline 等
253
-
254
- ### 🚀 方法1: NPM安装(推荐)
255
-
256
- ```bash
257
- # 全局安装
258
- npm install -g @xingyuchen/mysql-mcp-server
259
-
260
- # 验证安装
261
- guangxiang-mysql-mcp --help
262
- ```
263
-
264
- ### 🔧 方法2: 源码安装
265
-
266
- ```bash
267
- # 1. 下载项目
268
- git clone https://github.com/guangxiangdebizi/MySQL_MCP.git
269
- cd MySQL_MCP
270
-
271
- # 2. 安装依赖
272
- npm install
273
-
274
- # 3. 构建项目
275
- npm run build
276
- ```
143
+ | 工具名称 | 功能说明 | 使用场景 |
144
+ |---------|---------|---------|
145
+ | `execute_query` | 执行 SQL | 任何 SQL 操作(SELECTINSERT、UPDATE、DELETE) |
146
+ | `show_tables` | 显示所有表 | 快速了解数据库结构 |
147
+ | `describe_table` | 查看表结构 | 查看字段、类型、样本数据 |
148
+ | `show_databases` | 显示所有数据库 | 查看可访问的数据库列表 |
277
149
 
278
150
  ---
279
151
 
280
- ## ⚙️ 配置方法
281
-
282
- ### 🔐 方式1: HTTP模式 + Header预配置(最安全,推荐生产环境)
152
+ ## 🎮 使用示例
283
153
 
284
- #### 1. 启动 HTTP 服务器
154
+ ### 场景一:使用 Header 预配置
285
155
 
286
- ```bash
287
- # 默认端口 3000
288
- npm run start:http
289
-
290
- # 或指定端口
291
- PORT=3001 npm run start:http
292
156
  ```
157
+ 你: 显示所有表
158
+ AI: [调用 show_tables]
159
+ 📊 数据库表列表 (共 5 个表)
160
+ 1. users
161
+ 2. orders
162
+ 3. products
163
+ ...
293
164
 
294
- #### 2. 配置 Claude Desktop
295
-
296
- 编辑配置文件(位置因系统而异):
297
-
298
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
299
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
300
- **Linux**: `~/.config/Claude/claude_desktop_config.json`
301
-
302
- ```json
303
- {
304
- "mcpServers": {
305
- "mysql-mcp-http": {
306
- "type": "streamableHttp",
307
- "url": "http://localhost:3000/mcp",
308
- "timeout": 600,
309
- "headers": {
310
- "X-MySQL-Host": "localhost",
311
- "X-MySQL-Port": "3306",
312
- "X-MySQL-User": "your_username",
313
- "X-MySQL-Password": "your_password",
314
- "X-MySQL-Database": "your_database"
315
- }
316
- }
317
- }
318
- }
165
+ 你: 查看 users 表的结构
166
+ AI: [调用 describe_table,参数:users]
167
+ 📋 表结构: users
168
+ 字段信息:
169
+ - id (INT, 主键)
170
+ - name (VARCHAR)
171
+ - email (VARCHAR)
172
+ ...
319
173
  ```
320
174
 
321
- #### 3. 重启 Claude Desktop
322
-
323
- 配置生效后,数据库连接会自动建立,**无需告诉 AI 你的数据库密码**!
175
+ ### 场景二:AI 动态添加连接
324
176
 
325
- ### 📌 方式2: stdio模式 + NPM全局安装(推荐本地开发)
326
-
327
- ```json
328
- {
329
- "mcpServers": {
330
- "mysql-database": {
331
- "command": "guangxiang-mysql-mcp",
332
- "env": {}
333
- }
334
- }
335
- }
336
177
  ```
178
+ 你: 帮我连接两个数据库:
179
+ 1. 生产库:prod.mysql.com,用户 admin,密码 xxx,数据库 shop
180
+ 2. 测试库:test.mysql.com,用户 tester,密码 yyy,数据库 shop_test
337
181
 
338
- ### 📌 方式3: stdio模式 + npx(无需安装)
182
+ AI: [调用 add_connection,参数:id=prod, host=prod.mysql.com...]
183
+ [调用 add_connection,参数:id=test, host=test.mysql.com...]
184
+ ✅ 两个数据库连接已添加
339
185
 
340
- ```json
341
- {
342
- "mcpServers": {
343
- "mysql-database": {
344
- "command": "npx",
345
- "args": ["-y", "@neigezhujiayi/mysql-mcp-server"],
346
- "env": {}
347
- }
348
- }
349
- }
350
- ```
186
+ 你: 列出所有连接
187
+ AI: [调用 list_connections]
188
+ 📊 当前数据库连接列表 (共 2 个)
189
+ 🟢 [1] prod
190
+ └─ prod.mysql.com:3306/shop
191
+ └─ 当前活跃连接
192
+ [2] test
193
+ └─ test.mysql.com:3306/shop_test
351
194
 
352
- ### 📌 方式4: 源码安装配置
195
+ 你: 切换到测试库
196
+ AI: [调用 select_database,参数:test]
197
+ ✅ 已选择数据库: test
353
198
 
354
- ```json
355
- {
356
- "mcpServers": {
357
- "mysql-database": {
358
- "command": "node",
359
- "args": ["C:/path/to/MySQL_MCP/dist/index.js"],
360
- "env": {}
361
- }
362
- }
363
- }
199
+ 你: 查询用户表前 10 条
200
+ AI: [调用 execute_query,SQL: SELECT * FROM users LIMIT 10]
201
+ 查询成功,返回 10 行数据
202
+ [显示 JSON 格式数据]
364
203
  ```
365
204
 
366
- **📖 详细的 HTTP 配置指南**: 查看 [HTTP_CONFIG_EXAMPLE.md](./HTTP_CONFIG_EXAMPLE.md)
367
-
368
205
  ---
369
206
 
370
- ## 🎮 使用指南
371
-
372
- ### 🚀 基础连接
373
-
374
- #### 使用 Header 预配置(HTTP 模式)
375
-
376
- 配置好 Headers 后,直接使用即可,无需连接步骤:
377
-
378
- ```
379
- User: 显示所有数据库表
380
- AI: [直接使用预配置的连接执行 show_tables]
381
- ```
382
-
383
- #### 使用工具参数连接(stdio 模式)
207
+ ## 🏗️ 项目架构
384
208
 
385
209
  ```
386
- User: 连接到我的数据库
387
- AI: 请提供数据库连接信息...
388
- User:
389
- - 主机: localhost
390
- - 端口: 3306
391
- - 用户名: root
392
- - 密码: your_password
393
- - 数据库: test_db
394
- AI: [使用 connect_database 工具连接]
210
+ MySQL_MCP/
211
+ ├── src/
212
+ │ ├── index.ts # 主入口(HTTP Server + 会话管理)
213
+ │ ├── database.ts # 数据库连接管理器
214
+ │ └── tools/ # 工具模块
215
+ │ ├── index.ts # 工具统一导出和路由
216
+ │ ├── connection.ts # 连接管理工具
217
+ │ └── query.ts # 查询工具
218
+ ├── dist/ # 编译后的 JS 文件
219
+ ├── package.json
220
+ ├── tsconfig.json
221
+ └── README.md
395
222
  ```
396
223
 
397
- ### 🆕 多数据库连接管理
224
+ **核心设计:**
225
+ - **index.ts** - Express HTTP 服务器 + MCP Server 初始化
226
+ - **database.ts** - 封装数据库连接池和查询逻辑
227
+ - **tools/** - 每个文件负责一类工具的定义和处理
398
228
 
399
- ```
400
- # 连接第一个数据库(自动成为活跃连接)
401
- User: 连接到生产数据库:
402
- - 主机: prod.mysql.com
403
- - 数据库: production_db
404
- - 连接ID: prod
405
-
406
- # 连接第二个数据库
407
- User: 连接到测试数据库:
408
- - 主机: test.mysql.com
409
- - 数据库: test_db
410
- - 连接ID: test
411
-
412
- # 查看所有连接
413
- User: 请列出所有数据库连接
414
-
415
- # 切换活跃连接
416
- User: 请切换到test连接
417
-
418
- # 指定连接执行操作
419
- User: 请在prod连接上查询用户表
420
- ```
421
-
422
- ### 📊 查看数据库结构
229
+ ---
423
230
 
424
- ```
425
- # 查看所有表概览
426
- User: 请显示数据库中的所有表
231
+ ## 🔒 安全建议
427
232
 
428
- # 查看特定表详情
429
- User: 请描述users表的结构
430
- ```
233
+ ### 数据库权限配置
431
234
 
432
- ### 🔄 执行CRUD操作
235
+ MCP 创建专用数据库用户,限制权限:
433
236
 
434
237
  ```sql
435
- -- 查询数据
436
- SELECT * FROM users WHERE age > 25 LIMIT 10
437
-
438
- -- 插入数据
439
- INSERT INTO users (name, email, age) VALUES ('张三', 'zhang@example.com', 28)
238
+ -- 创建专用用户
239
+ CREATE USER 'mcp_user'@'%' IDENTIFIED BY 'strong_password';
440
240
 
441
- -- 更新数据
442
- UPDATE users SET age = 29 WHERE email = 'zhang@example.com'
443
-
444
- -- 删除数据
445
- DELETE FROM users WHERE id = 123
446
- ```
447
-
448
- ### 🛡️ 事务安全操作
241
+ -- 授予必要权限
242
+ GRANT SELECT, INSERT, UPDATE, DELETE ON your_database.* TO 'mcp_user'@'%';
449
243
 
244
+ -- 生产环境只读用户
245
+ GRANT SELECT ON your_database.* TO 'mcp_readonly'@'%';
450
246
  ```
451
- # 查看事务历史
452
- User: 请显示当前事务的操作历史
453
-
454
- # 回滚到特定步骤
455
- User: 请回滚到第3步操作之前
456
247
 
457
- # 完全回滚
458
- User: 请完全回滚所有未提交的操作
248
+ ### HTTP 模式安全
459
249
 
460
- # 提交事务
461
- User: 请提交当前事务
462
- ```
250
+ - ✅ 使用 Header 预配置,避免凭证暴露给 AI
251
+ - ✅ 生产环境使用 HTTPS(Nginx 反向代理)
252
+ - ✅ 限制访问 IP(防火墙规则)
253
+ - ✅ 定期更新数据库密码
254
+ - ✅ 监控日志,发现异常访问
463
255
 
464
256
  ---
465
257
 
466
- ## 🔄 事务管理
467
-
468
- ### 自动事务管理
469
-
470
- - **自动开启**: INSERT/UPDATE/DELETE 操作自动开启事务
471
- - **智能记录**: 记录每个操作的详细信息和回滚查询
472
- - **精确回滚**: 支持回滚到任意操作步骤
473
-
474
- ### 事务历史示例
475
-
476
- ```
477
- 📋 事务历史记录
478
-
479
- 🔹 步骤 1 (2024-01-15 10:30:15)
480
- 类型: INSERT | 表: users | 影响行数: 1
481
- 描述: 执行 INSERT 操作,影响 1 行
482
- SQL: INSERT INTO users (name, email) VALUES (?, ?)
483
- 回滚: DELETE FROM users WHERE id = ?
484
-
485
- 🔹 步骤 2 (2024-01-15 10:31:22)
486
- 类型: UPDATE | 表: users | 影响行数: 1
487
- 描述: 执行 UPDATE 操作,影响 1 行
488
- SQL: UPDATE users SET age = ? WHERE id = ?
489
- 回滚: UPDATE users SET age = ? WHERE id = ?
490
-
491
- 💡 使用 rollback_to_step 可以回滚到任意步骤
492
- ```
493
-
494
- ---
495
-
496
- ## 📊 日志系统
497
-
498
- ### 日志文件类型
499
-
500
- | 日志文件 | 内容 | 用途 |
501
- |---------|------|------|
502
- | `combined-*.log` | 所有日志信息 | 全面的操作记录 |
503
- | `error-*.log` | 错误信息 | 问题诊断 |
504
- | `database-*.log` | 数据库操作 | SQL执行追踪 |
505
- | `exceptions-*.log` | 异常信息 | 系统异常分析 |
506
-
507
- ### 查看日志
258
+ ## 🚀 NPM 脚本
508
259
 
509
260
  ```bash
510
- # 查看实时日志
511
- npm run logs:tail
261
+ # 开发模式(TypeScript 直接运行)
262
+ npm run dev
512
263
 
513
- # 查看错误日志
514
- npm run logs:errors
264
+ # 编译
265
+ npm run build
515
266
 
516
- # 分析数据库操作
517
- npm run logs:db-analysis
267
+ # 生产模式(运行编译后的 JS)
268
+ npm start
518
269
 
519
- # 查看统计信息
520
- npm run logs:stats
270
+ # 全局安装
271
+ npm run install-global
521
272
  ```
522
273
 
523
274
  ---
524
275
 
525
- ## 💡 使用技巧
276
+ ## 📝 环境变量
526
277
 
527
- ### 🎯 最佳实践
278
+ 创建 `.env` 文件(可选):
528
279
 
529
- #### 1. 选择合适的部署模式
280
+ ```env
281
+ # HTTP 服务器端口
282
+ PORT=3001
530
283
 
531
- ```
532
- 本地开发 → stdio 模式(简单快速)
533
- 生产环境 → HTTP 模式 + Header 预配置(安全可靠)
534
- 多用户场景 → HTTP 模式(支持并发)
535
- ```
536
-
537
- #### 2. 数据探索流程
538
-
539
- ```
540
- 1. show_tables 了解整体结构
541
- 2. describe_table 查看具体表
542
- 3. execute_query 进行操作
543
- ```
544
-
545
- #### 3. 安全修改策略
546
-
547
- ```
548
- 1. 重要操作前先 SELECT 确认数据
549
- 2. 使用事务保护批量修改
550
- 3. 及时查看事务历史
551
- 4. 必要时使用回滚功能
552
- ```
553
-
554
- ### 🚀 高级用法
555
-
556
- ```sql
557
- -- 复杂查询
558
- SELECT u.name, COUNT(o.id) as order_count, SUM(o.amount) as total_amount
559
- FROM users u
560
- LEFT JOIN orders o ON u.id = o.user_id
561
- WHERE u.created_at >= '2024-01-01'
562
- GROUP BY u.id, u.name
563
- HAVING total_amount > 1000
564
- ORDER BY total_amount DESC
565
- LIMIT 20
566
-
567
- -- 批量操作
568
- INSERT INTO products (name, price, category_id) VALUES
569
- ('产品A', 99.99, 1),
570
- ('产品B', 149.99, 2),
571
- ('产品C', 199.99, 1)
572
-
573
- -- 条件更新
574
- UPDATE inventory
575
- SET stock = stock - 1
576
- WHERE product_id = 123 AND stock > 0
284
+ # Node 环境
285
+ NODE_ENV=production
577
286
  ```
578
287
 
579
288
  ---
580
289
 
581
- ## 🔒 安全说明
582
-
583
- ### ⚠️ 重要提醒
584
-
585
- - **完整权限**: 支持完整 CRUD 操作,请谨慎使用
586
- - **事务保护**: 所有修改操作都有事务保护和回滚功能
587
- - **日志记录**: 所有操作都会被详细记录
588
- - **Header 预配置**: 使用 HTTP 模式时,强烈推荐使用 Header 预配置,避免凭证暴露
589
-
590
- ### 🛡️ 安全建议
591
-
592
- #### 1. 数据库用户权限
290
+ ## 常见问题
593
291
 
594
- ```sql
595
- -- 创建专用 MCP 用户
596
- CREATE USER 'mcp_user'@'localhost' IDENTIFIED BY 'strong_password';
292
+ ### 1. 端口被占用
597
293
 
598
- -- 授予必要权限
599
- GRANT SELECT, INSERT, UPDATE, DELETE ON your_database.* TO 'mcp_user'@'localhost';
294
+ **错误:** `EADDRINUSE: address already in use :::3001`
600
295
 
601
- -- 生产环境可能只需要只读权限
602
- GRANT SELECT ON your_database.* TO 'mcp_readonly'@'localhost';
603
- ```
296
+ **解决:** 修改 `.env` 文件中的 `PORT`,或终止占用进程
604
297
 
605
- #### 2. HTTP 模式安全
298
+ ```bash
299
+ # Windows
300
+ netstat -ano | findstr :3001
301
+ taskkill /F /PID <PID>
606
302
 
303
+ # Linux/Mac
304
+ lsof -ti:3001 | xargs kill -9
607
305
  ```
608
- ✅ 使用 Header 预配置,避免凭证暴露
609
- ✅ 生产环境使用 HTTPS(配合 Nginx 等代理)
610
- ✅ 限制访问 IP(防火墙规则)
611
- ✅ 定期更新数据库密码
612
- ✅ 监控日志,发现异常访问
613
- ```
614
-
615
- #### 3. 备份策略
616
306
 
617
- ```
618
- ✅ 重要操作前先备份数据
619
- ✅ 定期检查事务历史
620
- ✅ 保留操作日志用于审计
621
- ✅ 测试回滚功能是否正常
622
- ```
307
+ ### 2. 连接失败
623
308
 
624
- ---
309
+ **错误:** `数据库连接失败`
625
310
 
626
- ## ❗ 故障排除
311
+ **检查:**
312
+ - MySQL 服务是否运行
313
+ - 主机、端口、用户名、密码是否正确
314
+ - 防火墙是否允许连接
627
315
 
628
- ### 常见问题
316
+ ### 3. 会话丢失
629
317
 
630
- #### 1. 连接失败
318
+ **问题:** 重启服务器后提示 "Session not found"
631
319
 
632
- ```
633
- 问题: 无法连接到数据库
634
- 解决:
635
- - 检查 MySQL 服务是否运行
636
- - 确认连接参数正确(Host、Port、User、Password)
637
- - 查看 error 日志获取详细信息
638
- - HTTP 模式检查 Headers 配置是否完整
639
- ```
320
+ **原因:** 会话存储在内存中,重启后清空
640
321
 
641
- #### 2. Header 连接未生效
322
+ **解决:** 刷新 MCP 客户端(重新初始化)
642
323
 
643
- ```
644
- 问题: 配置了 Headers 但仍提示需要连接
645
- 解决:
646
- - 确认 Headers 名称正确(X-MySQL-Host, X-MySQL-User 等)
647
- - 检查所有必填字段(host, user, password, database)
648
- - 重启 HTTP 服务器
649
- - 使用 list_connections 查看连接状态
650
- ```
651
-
652
- #### 3. 权限错误
653
-
654
- ```
655
- 问题: Access denied 或权限不足
656
- 解决:
657
- - 确认数据库用户权限
658
- - 检查表的访问权限
659
- - 查看 MySQL 错误日志
660
- - 确认用户可以从当前主机连接
661
- ```
324
+ ---
662
325
 
663
- #### 4. 事务问题
326
+ ## 📦 版本历史
664
327
 
665
- ```
666
- 问题: 事务状态异常
667
- 解决:
668
- - 使用 show_transaction_history 查看状态
669
- - 必要时使用 full_rollback 重置
670
- - 检查 database 日志分析问题
671
- - 确认连接未意外断开
672
- ```
328
+ ### v4.0.0 (2025-12-09) - 全新架构
673
329
 
674
- ---
330
+ - 🔥 完全重写,全新模块化架构
331
+ - ✨ 基于最新 MCP StreamableHTTP 协议
332
+ - 🎯 简化工具:连接管理 + 查询操作
333
+ - 🏗️ 清晰的目录结构:`tools/` 模块化
334
+ - 🚀 更快的响应速度
335
+ - 📖 更清晰的代码注释
675
336
 
676
- ## 📦 版本历史
337
+ ### v3.x - 旧版本
677
338
 
678
- ### v3.2.1 (2025-10-27) 🆕
679
- - 🔧 **修复连接稳定性问题**:解决 "Can't add new command when connection is in closed state" 错误
680
- - ♻️ **自动重连机制**:连接断开时自动检测并重新连接
681
- - 🏥 **连接健康检查**:通过 ping 实时检测连接状态
682
- - ⚡ **保活机制增强**:添加 TCP Keep-Alive,防止空闲超时断开
683
- - 🛡️ **超时配置优化**:设置合理的连接和空闲超时参数
684
- - 💪 **离线环境支持**:特别优化了 SSE 模式下的长时间连接稳定性
685
-
686
- ### v3.2.0 (2025-10-20)
687
- - 🔢 支持多数据库 Header 预配置(X-MySQL-*-1, X-MySQL-*-2...)
688
- - ✨ 一次性配置多个数据库环境(生产、测试、开发等)
689
- - 🔄 自动创建多个 Header 连接(header_db_1, header_db_2...)
690
- - 📋 增强 list_connections 显示多数据库信息
691
- - 🔧 兼容单数据库 Header 配置(向后兼容)
692
-
693
- ### v3.1.0 (2025-10-20)
694
- - ✨ 新增 StreamableHTTP 模式支持
695
- - 🔐 新增 HTTP Headers 预配置数据库连接
696
- - 🏷️ 连接来源标识(Header预配置 vs 工具参数)
697
- - 📡 健康检查端点
698
- - 🔧 Express + CORS + dotenv 支持
699
-
700
- ### v3.0.0
701
- - 🔗 多数据库连接管理
702
- - 🎯 连接标识和切换
703
- - 📋 连接列表和监控
704
-
705
- ### v2.0.0
706
- - 🛠️ 工具简化
707
- - 📊 增强展示
708
- - 🔄 完整回滚
709
- - 📝 日志系统
710
-
711
- ### v1.0.0
712
- - 🎉 初始版本
713
- - 🔧 基础 CRUD 操作
714
- - 🛡️ 事务管理
339
+ - 支持事务管理、回滚等复杂功能
340
+ - 较为复杂的架构
715
341
 
716
342
  ---
717
343
 
@@ -720,8 +346,6 @@ GRANT SELECT ON your_database.* TO 'mcp_readonly'@'localhost';
720
346
  - 🐛 **问题报告**: [GitHub Issues](https://github.com/guangxiangdebizi/MySQL_MCP/issues)
721
347
  - 💡 **功能建议**: [GitHub Discussions](https://github.com/guangxiangdebizi/MySQL_MCP/discussions)
722
348
  - 📧 **联系作者**: guangxiangdebizi@gmail.com
723
- - 💼 **LinkedIn**: [Xingyu Chen](https://www.linkedin.com/in/xingyu-chen-b5b3b0313/)
724
- - 📦 **NPM包**: [@xingyuchen/mysql-mcp-server](https://www.npmjs.com/package/@xingyuchen/mysql-mcp-server)
725
349
 
726
350
  ---
727
351