@xingyuchen/mysql-mcp-server 3.0.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 ADDED
@@ -0,0 +1,562 @@
1
+ # MySQL MCP Server 3.0 🚀
2
+
3
+ 一个功能强大且易用的MySQL数据库MCP(Model Context Protocol)服务器,让你的AI助手可以安全地进行完整的数据库操作,支持多数据库连接管理、增删改查、事务管理和智能回滚功能。
4
+
5
+ > **🎯 目标用户**: 希望在VSCode的Cline中使用AI助手进行完整MySQL数据库操作的开发者
6
+
7
+ ## 📖 目录
8
+
9
+ - [🌟 功能特性](#-功能特性)
10
+ - [🔧 工具概览](#-工具概览)
11
+ - [☁️ Smithery云部署](#️-smithery云部署)
12
+ - [🛠️ 安装教程](#️-安装教程)
13
+ - [⚙️ 配置方法](#️-配置方法)
14
+ - [🎮 使用指南](#-使用指南)
15
+ - [🔄 事务管理](#-事务管理)
16
+ - [📊 日志系统](#-日志系统)
17
+ - [❗ 故障排除](#-故障排除)
18
+ - [💡 使用技巧](#-使用技巧)
19
+ - [🔒 安全说明](#-安全说明)
20
+ - [📦 发布相关](#-发布相关)
21
+
22
+ ## 🌟 功能特性
23
+
24
+ ### ✨ 核心功能
25
+ - 📦 **NPM包支持**: 一键安装 `npm install -g @xingyuchen/mysql-mcp-server`,即装即用
26
+ - 🔗 **多数据库连接**: 同时管理多个MySQL数据库连接,无需频繁切换
27
+ - 🎯 **智能连接管理**: 支持连接标识、活跃连接切换和连接状态监控
28
+ - 🔄 **完整CRUD操作**: 支持INSERT、UPDATE、DELETE、SELECT等所有SQL操作
29
+ - 🛡️ **自动事务管理**: 修改操作自动开启事务,支持智能回滚
30
+ - 📊 **增强表查看**: 显示表结构概览、行数统计和样本数据
31
+ - 📝 **智能日志系统**: 详细记录所有操作,支持错误追踪和性能分析
32
+ - 🔙 **历史回滚功能**: 查看操作历史,选择性回滚到任意步骤
33
+ - 🚀 **双模式部署**: 支持stdio模式和HTTP/SSE模式
34
+
35
+ ### 🎯 使用场景
36
+ - ✅ 完整的数据库CRUD操作(增删改查)
37
+ - ✅ 数据库结构分析和优化建议
38
+ - ✅ 批量数据处理和迁移
39
+ - ✅ 事务安全的数据修改
40
+ - ✅ 数据备份前的安全测试
41
+ - ✅ 复杂查询的构建和调试
42
+
43
+ ### 🆕 3.0版本新特性
44
+ - 🔗 **多数据库连接**: 同时管理多个MySQL数据库,支持连接池
45
+ - 🎯 **连接管理**: 新增连接列表、切换活跃连接、移除连接等管理工具
46
+ - 📋 **灵活切换**: 所有操作支持指定`connection_id`参数选择目标数据库
47
+ - 🚀 **向后兼容**: 保持现有API不变,新功能通过可选参数提供
48
+ - 📊 **连接监控**: 显示连接状态、连接时间和数据库信息
49
+
50
+ ### 📜 历史版本特性
51
+ - **2.0版本**: 工具简化、增强展示、完整回滚、实时监控、安全升级
52
+ - **1.0版本**: 基础CRUD操作、事务管理、日志系统
53
+
54
+ ## 🔧 工具概览
55
+
56
+ ### 核心工具 (14个)
57
+
58
+ | 工具名称 | 功能描述 | 使用场景 |
59
+ |---------|----------|----------|
60
+ | `connect_database` | 连接MySQL数据库 | 建立数据库连接(支持连接ID) |
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
+ ### 🎯 主要改进
76
+
77
+ #### 1. 工具简化
78
+ ```
79
+ 旧版本: 15个工具 (insert_data, update_data, delete_data, select_data, create_table, drop_table, get_table_info...)
80
+ 新版本: 11个工具 (保留万能的execute_query,删除重复功能)
81
+ ```
82
+
83
+ #### 2. 增强展示
84
+ ```
85
+ show_tables 输出示例:
86
+ 📋 数据库概览
87
+ 📊 总共找到 3 个表:
88
+
89
+ 🗂️ **users**
90
+ 📊 行数: 1250
91
+ 🏗️ 列: id(int), name(varchar), email(varchar), created_at(datetime)
92
+
93
+ 🗂️ **orders**
94
+ 📊 行数: 3420
95
+ 🏗️ 列: id(int), user_id(int), amount(decimal), status(enum), order_date(datetime)
96
+ ```
97
+
98
+ #### 3. 样本数据展示
99
+ ```
100
+ describe_table 输出示例:
101
+ 🔍 表 "users" 的详细信息
102
+
103
+ 📊 基本信息:
104
+ 总行数: 1250
105
+ 总列数: 4
106
+
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 |
114
+
115
+ 📄 样本数据 (前5行):
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
+ ```
126
+
127
+ #### 4. 智能事务管理
128
+ ```
129
+ 自动功能:
130
+ - INSERT/UPDATE/DELETE操作自动开启事务
131
+ - 自动生成精确的回滚查询
132
+ - 记录每个操作的详细信息
133
+ - 支持选择性回滚到任意步骤
134
+
135
+ 回滚查询示例:
136
+ INSERT → DELETE FROM table WHERE id = ?
137
+ UPDATE → UPDATE table SET col1=?, col2=? WHERE condition
138
+ DELETE → INSERT INTO table (col1, col2) VALUES (?, ?)
139
+ ```
140
+
141
+ ## ☁️ Smithery云部署
142
+
143
+ ### 🚀 快速部署到Smithery
144
+
145
+ [Smithery](https://smithery.ai) 是专门为MCP服务器设计的云平台,可以一键部署您的MySQL MCP Server。
146
+
147
+ #### 🔧 部署步骤
148
+
149
+ 1. **Fork项目到您的GitHub**
150
+ ```bash
151
+ https://github.com/guangxiangdebizi/MySQL_MCP
152
+ ```
153
+
154
+ 2. **登录Smithery平台**
155
+ - 访问 [Smithery.ai](https://smithery.ai)
156
+ - 使用GitHub账号登录
157
+
158
+ 3. **连接GitHub仓库**
159
+ - 点击 "Deploy Server"
160
+ - 选择您Fork的 `MySQL_MCP` 仓库
161
+ - 确认部署配置
162
+
163
+ 4. **使用部署的服务器**
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
+ ```
174
+
175
+ ## 🛠️ 安装教程
176
+
177
+ ### 📋 环境要求
178
+
179
+ - ✅ **Node.js 18+** - [下载地址](https://nodejs.org/)
180
+ - ✅ **MySQL 5.7+ 或 8.0+** - 确保数据库服务正在运行
181
+ - ✅ **VSCode** - [下载地址](https://code.visualstudio.com/)
182
+ - ✅ **Cline扩展** - 在VSCode扩展市场搜索"Cline"安装
183
+
184
+ ### 🚀 方法1: NPM安装(推荐)
185
+
186
+ ```bash
187
+ # 全局安装
188
+ npm install -g @xingyuchen/mysql-mcp-server
189
+
190
+ # 验证安装
191
+ guangxiang-mysql-mcp --help
192
+ ```
193
+
194
+ ### 🔧 方法2: 源码安装
195
+
196
+ ```bash
197
+ # 下载项目
198
+ git clone https://github.com/guangxiangdebizi/MySQL_MCP.git
199
+ cd MySQL_MCP
200
+
201
+ # 2. 安装依赖
202
+ npm install
203
+
204
+ # 3. 构建项目
205
+ npm run build
206
+
207
+ # 4. 测试安装
208
+ npm test
209
+ ```
210
+
211
+ ## ⚙️ 配置方法
212
+
213
+ ### 📌 方法1: NPM包配置(推荐)
214
+
215
+ 使用npm全局安装后,在Cline设置中添加:
216
+
217
+ ```json
218
+ {
219
+ "mcpServers": {
220
+ "mysql-database": {
221
+ "command": "guangxiang-mysql-mcp",
222
+ "env": {}
223
+ }
224
+ }
225
+ }
226
+ ```
227
+
228
+ ### 📌 方法2: 本地项目配置
229
+
230
+ 如果使用npx或本地安装:
231
+
232
+ ```json
233
+ {
234
+ "mcpServers": {
235
+ "mysql-database": {
236
+ "command": "npx",
237
+ "args": ["@xingyuchen/mysql-mcp-server"],
238
+ "env": {}
239
+ }
240
+ }
241
+ }
242
+ ```
243
+
244
+ ### 📌 方法3: 源码配置
245
+
246
+ 从源码安装后,在Cline设置中添加:
247
+
248
+ ```json
249
+ {
250
+ "mcpServers": {
251
+ "mysql-database": {
252
+ "command": "node",
253
+ "args": ["C:/path/to/my-awesome-mcp/dist/index.js"],
254
+ "env": {}
255
+ }
256
+ }
257
+ }
258
+ ```
259
+
260
+ ### 📌 方法4: HTTP/SSE模式配置
261
+
262
+ ```json
263
+ {
264
+ "mcpServers": {
265
+ "mysql-database": {
266
+ "url": "http://localhost:3101/sse",
267
+ "type": "sse"
268
+ }
269
+ }
270
+ }
271
+ ```
272
+
273
+ 启动服务器:
274
+ ```bash
275
+ npm run start-gateway
276
+ ```
277
+
278
+ ## 🎮 使用指南
279
+
280
+ ### 🚀 基础连接
281
+
282
+ #### 单数据库连接(3.0保持兼容)
283
+ ```
284
+ 请帮我连接到MySQL数据库:
285
+ - 主机: localhost
286
+ - 端口: 3306
287
+ - 用户名: root
288
+ - 密码: your_password
289
+ - 数据库: test_db
290
+ ```
291
+
292
+ #### 🆕 多数据库连接(3.0新功能)
293
+ ```
294
+ # 连接第一个数据库(自动成为活跃连接)
295
+ 请连接到生产数据库:
296
+ - 主机: prod.mysql.com
297
+ - 数据库: production_db
298
+ - 连接ID: prod
299
+
300
+ # 连接第二个数据库
301
+ 请连接到测试数据库:
302
+ - 主机: test.mysql.com
303
+ - 数据库: test_db
304
+ - 连接ID: test
305
+
306
+ # 查看所有连接
307
+ 请列出所有数据库连接
308
+
309
+ # 切换活跃连接
310
+ 请切换到test连接
311
+
312
+ # 指定连接执行操作
313
+ 请在prod连接上查询用户表
314
+ ```
315
+
316
+ ### 📊 查看数据库结构
317
+
318
+ ```
319
+ # 查看所有表概览
320
+ 请显示数据库中的所有表
321
+
322
+ # 查看特定表详情
323
+ 请描述users表的结构
324
+ ```
325
+
326
+ ### 🔄 执行CRUD操作
327
+
328
+ ```sql
329
+ -- 查询数据
330
+ SELECT * FROM users WHERE age > 25 LIMIT 10
331
+
332
+ -- 插入数据
333
+ INSERT INTO users (name, email, age) VALUES ('张三', 'zhang@example.com', 28)
334
+
335
+ -- 更新数据
336
+ UPDATE users SET age = 29 WHERE email = 'zhang@example.com'
337
+
338
+ -- 删除数据
339
+ DELETE FROM users WHERE id = 123
340
+ ```
341
+
342
+ ### 🛡️ 事务安全操作
343
+
344
+ ```
345
+ # 查看事务历史
346
+ 请显示当前事务的操作历史
347
+
348
+ # 回滚到特定步骤
349
+ 请回滚到第3步操作之前
350
+
351
+ # 完全回滚
352
+ 请完全回滚所有未提交的操作
353
+
354
+ # 提交事务
355
+ 请提交当前事务
356
+ ```
357
+
358
+ ## 🔄 事务管理
359
+
360
+ ### 自动事务管理
361
+
362
+ - **自动开启**: INSERT/UPDATE/DELETE操作自动开启事务
363
+ - **智能记录**: 记录每个操作的详细信息和回滚查询
364
+ - **精确回滚**: 支持回滚到任意操作步骤
365
+
366
+ ### 事务历史示例
367
+
368
+ ```
369
+ 📋 事务历史记录
370
+
371
+ 🔹 步骤 1 (2024-01-15 10:30:15)
372
+ 类型: INSERT | 表: users | 影响行数: 1
373
+ 描述: 执行 INSERT 操作,影响 1 行
374
+ SQL: INSERT INTO users (name, email) VALUES (?, ?)
375
+ 回滚: DELETE FROM users WHERE id = ?
376
+
377
+ 🔹 步骤 2 (2024-01-15 10:31:22)
378
+ 类型: UPDATE | 表: users | 影响行数: 1
379
+ 描述: 执行 UPDATE 操作,影响 1 行
380
+ SQL: UPDATE users SET age = ? WHERE id = ?
381
+ 回滚: UPDATE users SET age = ? WHERE id = ?
382
+
383
+ 💡 使用 rollback_to_step 可以回滚到任意步骤
384
+ ```
385
+
386
+ ## 📊 日志系统
387
+
388
+ ### 日志文件类型
389
+
390
+ | 日志文件 | 内容 | 用途 |
391
+ |---------|------|------|
392
+ | `combined-*.log` | 所有日志信息 | 全面的操作记录 |
393
+ | `error-*.log` | 错误信息 | 问题诊断 |
394
+ | `database-*.log` | 数据库操作 | SQL执行追踪 |
395
+ | `exceptions-*.log` | 异常信息 | 系统异常分析 |
396
+
397
+ ### 查看日志
398
+
399
+ ```bash
400
+ # 查看实时日志
401
+ npm run logs:tail
402
+
403
+ # 查看错误日志
404
+ npm run logs:errors
405
+
406
+ # 分析数据库操作
407
+ npm run logs:db-analysis
408
+ ```
409
+
410
+ ## 💡 使用技巧
411
+
412
+ ### 🎯 最佳实践
413
+
414
+ 1. **数据探索**
415
+ ```
416
+ 先用show_tables了解整体结构
417
+ 再用describe_table查看具体表
418
+ 最后用execute_query进行操作
419
+ ```
420
+
421
+ 2. **安全修改**
422
+ ```
423
+ 重要操作前先SELECT确认数据
424
+ 使用事务保护批量修改
425
+ 及时查看事务历史
426
+ ```
427
+
428
+ 3. **性能优化**
429
+ ```
430
+ 使用LIMIT限制结果集大小
431
+ 添加WHERE条件过滤数据
432
+ 查看日志分析慢查询
433
+ ```
434
+
435
+ ### 🚀 高级用法
436
+
437
+ ```sql
438
+ -- 复杂查询
439
+ SELECT u.name, COUNT(o.id) as order_count, SUM(o.amount) as total_amount
440
+ FROM users u
441
+ LEFT JOIN orders o ON u.id = o.user_id
442
+ WHERE u.created_at >= '2024-01-01'
443
+ GROUP BY u.id, u.name
444
+ HAVING total_amount > 1000
445
+ ORDER BY total_amount DESC
446
+ LIMIT 20
447
+
448
+ -- 批量操作
449
+ INSERT INTO products (name, price, category_id) VALUES
450
+ ('产品A', 99.99, 1),
451
+ ('产品B', 149.99, 2),
452
+ ('产品C', 199.99, 1)
453
+
454
+ -- 条件更新
455
+ UPDATE inventory
456
+ SET stock = stock - 1
457
+ WHERE product_id = 123 AND stock > 0
458
+ ```
459
+
460
+ ## 🔒 安全说明
461
+
462
+ ### ⚠️ 重要提醒
463
+
464
+ - **完整权限**: 2.0版本支持完整CRUD操作,请谨慎使用
465
+ - **事务保护**: 所有修改操作都有事务保护和回滚功能
466
+ - **日志记录**: 所有操作都会被详细记录
467
+ - **用户权限**: 建议创建专门的数据库用户,限制必要权限
468
+
469
+ ### 🛡️ 安全建议
470
+
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
+ ```
476
+
477
+ 2. **备份策略**
478
+ ```
479
+ 重要操作前先备份数据
480
+ 定期检查事务历史
481
+ 保留操作日志用于审计
482
+ ```
483
+
484
+ ## ❗ 故障排除
485
+
486
+ ### 常见问题
487
+
488
+ 1. **连接失败**
489
+ ```
490
+ 检查MySQL服务是否运行
491
+ 确认连接参数正确
492
+ 查看error日志获取详细信息
493
+ ```
494
+
495
+ 2. **权限错误**
496
+ ```
497
+ 确认数据库用户权限
498
+ 检查表的访问权限
499
+ 查看MySQL错误日志
500
+ ```
501
+
502
+ 3. **事务问题**
503
+ ```
504
+ 使用show_transaction_history查看状态
505
+ 必要时使用full_rollback重置
506
+ 检查database日志分析问题
507
+ ```
508
+
509
+ ## 📦 发布相关
510
+
511
+ ### 🚀 NPM包发布
512
+
513
+ 本项目已配置为标准的NPM包,支持一键发布到npm仓库。
514
+
515
+ #### 📚 发布文档
516
+
517
+ - **📋 [完整发布指南 (PUBLISH.md)](./PUBLISH.md)** - 详细的发布流程、用户安装指南和版本管理
518
+ - **⚡ [快速发布指南 (QUICK_PUBLISH.md)](./QUICK_PUBLISH.md)** - 简洁的发布命令和步骤
519
+
520
+ #### 🎯 快速发布
521
+
522
+ ```bash
523
+ # 1. 登录NPM(首次发布需要)
524
+ npm login
525
+
526
+ # 2. 发布包
527
+ npm publish
528
+
529
+ # 3. 验证发布
530
+ npm view @xingyuchen/mysql-mcp-server
531
+ ```
532
+
533
+ #### 👥 用户安装
534
+
535
+ 发布后,用户可以通过以下方式安装:
536
+
537
+ ```bash
538
+ # 全局安装
539
+ npm install -g @xingyuchen/mysql-mcp-server
540
+
541
+ # 在Cline中配置
542
+ {
543
+ "mcpServers": {
544
+ "mysql-database": {
545
+ "command": "guangxiang-mysql-mcp",
546
+ "env": {}
547
+ }
548
+ }
549
+ }
550
+ ```
551
+
552
+ ---
553
+
554
+ ## 📞 支持与反馈
555
+
556
+ - 🐛 **问题报告**: [GitHub Issues](https://github.com/guangxiangdebizi/MySQL_MCP/issues)
557
+ - 💡 **功能建议**: [GitHub Discussions](https://github.com/guangxiangdebizi/MySQL_MCP/discussions)
558
+ - 📧 **联系作者**: 通过GitHub私信
559
+
560
+ ---
561
+
562
+ **⭐ 如果这个项目对你有帮助,请给个Star支持一下!**