@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 +562 -0
- package/README_ENHANCED.md +276 -0
- package/SMITHERY_DEPLOY.md +391 -0
- package/dist/connection-manager.js +159 -0
- package/dist/database.js +400 -0
- package/dist/index.js +632 -0
- package/dist/log-viewer.js +249 -0
- package/dist/logger.js +122 -0
- package/dist/transaction-manager.js +247 -0
- package/package.json +75 -0
- package/smithery.yaml +18 -0
@@ -0,0 +1,276 @@
|
|
1
|
+
# MySQL MCP Server - 增强版 🚀
|
2
|
+
|
3
|
+
一个功能强大的MySQL数据库MCP服务器,支持**完整的CRUD操作**和**智能日志系统**。
|
4
|
+
|
5
|
+
## 🆕 新版本亮点
|
6
|
+
|
7
|
+
### 🔥 完整的数据库操作权限
|
8
|
+
- ✅ **增加数据** (INSERT) - 支持向任何表插入数据
|
9
|
+
- ✅ **查询数据** (SELECT) - 支持复杂查询和条件筛选
|
10
|
+
- ✅ **更新数据** (UPDATE) - 支持条件更新和批量修改
|
11
|
+
- ✅ **删除数据** (DELETE) - 支持条件删除和批量删除
|
12
|
+
- ✅ **创建表** (CREATE TABLE) - 动态创建数据库表
|
13
|
+
- ✅ **删除表** (DROP TABLE) - 删除不需要的表
|
14
|
+
|
15
|
+
### 📊 智能日志系统
|
16
|
+
- 🔍 **详细操作记录** - 记录每个SQL操作的详细信息
|
17
|
+
- ⏱️ **性能监控** - 记录每个操作的执行时间
|
18
|
+
- 🚨 **错误追踪** - 自动记录和分析错误信息
|
19
|
+
- 📈 **统计分析** - 提供操作统计和趋势分析
|
20
|
+
- 🔎 **日志搜索** - 强大的日志搜索和过滤功能
|
21
|
+
|
22
|
+
### 🔄 事务支持
|
23
|
+
- 🚀 **开始事务** - 支持数据库事务操作
|
24
|
+
- ✅ **提交事务** - 确保数据一致性
|
25
|
+
- ↩️ **回滚事务** - 出错时自动回滚
|
26
|
+
|
27
|
+
## 📋 可用工具列表
|
28
|
+
|
29
|
+
### 🔗 连接管理
|
30
|
+
| 工具名 | 功能 | 参数 |
|
31
|
+
|--------|------|------|
|
32
|
+
| `connect_database` | 连接MySQL数据库 | host, port, user, password, database |
|
33
|
+
| `disconnect_database` | 断开数据库连接 | 无 |
|
34
|
+
|
35
|
+
### 📊 数据操作
|
36
|
+
| 工具名 | 功能 | 参数 |
|
37
|
+
|--------|------|------|
|
38
|
+
| `execute_query` | 执行任意SQL语句 | query, params (可选) |
|
39
|
+
| `insert_data` | 插入数据到表 | table_name, data |
|
40
|
+
| `update_data` | 更新表中数据 | table_name, data, where_clause, where_params |
|
41
|
+
| `delete_data` | 删除表中数据 | table_name, where_clause, where_params |
|
42
|
+
| `select_data` | 查询表中数据 | table_name, columns, where_clause, where_params, limit |
|
43
|
+
|
44
|
+
### 🏗️ 表管理
|
45
|
+
| 工具名 | 功能 | 参数 |
|
46
|
+
|--------|------|------|
|
47
|
+
| `create_table` | 创建新表 | table_name, columns |
|
48
|
+
| `drop_table` | 删除表 | table_name |
|
49
|
+
| `show_tables` | 显示所有表 | 无 |
|
50
|
+
| `describe_table` | 查看表结构 | table_name |
|
51
|
+
| `get_table_info` | 获取表详细信息 | table_name |
|
52
|
+
|
53
|
+
### 🔄 事务管理
|
54
|
+
| 工具名 | 功能 | 参数 |
|
55
|
+
|--------|------|------|
|
56
|
+
| `begin_transaction` | 开始事务 | 无 |
|
57
|
+
| `commit_transaction` | 提交事务 | 无 |
|
58
|
+
| `rollback_transaction` | 回滚事务 | 无 |
|
59
|
+
|
60
|
+
## 🚀 快速开始
|
61
|
+
|
62
|
+
### 1. 安装依赖
|
63
|
+
```bash
|
64
|
+
npm install
|
65
|
+
```
|
66
|
+
|
67
|
+
### 2. 构建项目
|
68
|
+
```bash
|
69
|
+
npm run build
|
70
|
+
```
|
71
|
+
|
72
|
+
### 3. 配置Cline
|
73
|
+
在Cline的MCP设置中添加:
|
74
|
+
|
75
|
+
```json
|
76
|
+
{
|
77
|
+
"mcpServers": {
|
78
|
+
"mysql-database": {
|
79
|
+
"command": "node",
|
80
|
+
"args": ["你的项目路径/dist/index.js"],
|
81
|
+
"env": {}
|
82
|
+
}
|
83
|
+
}
|
84
|
+
}
|
85
|
+
```
|
86
|
+
|
87
|
+
### 4. 开始使用
|
88
|
+
在Cline中说:
|
89
|
+
```
|
90
|
+
请连接到我的MySQL数据库:
|
91
|
+
- 主机: localhost
|
92
|
+
- 端口: 3306
|
93
|
+
- 用户名: root
|
94
|
+
- 密码: your_password
|
95
|
+
- 数据库: your_database
|
96
|
+
```
|
97
|
+
|
98
|
+
## 💡 使用示例
|
99
|
+
|
100
|
+
### 📝 插入数据示例
|
101
|
+
```
|
102
|
+
请向users表插入一条新用户数据:
|
103
|
+
- name: "张三"
|
104
|
+
- email: "zhangsan@example.com"
|
105
|
+
- age: 25
|
106
|
+
```
|
107
|
+
|
108
|
+
### ✏️ 更新数据示例
|
109
|
+
```
|
110
|
+
请更新users表中id=1的用户信息:
|
111
|
+
- name: "李四"
|
112
|
+
- email: "lisi@example.com"
|
113
|
+
设置条件为 id = 1
|
114
|
+
```
|
115
|
+
|
116
|
+
### 🗑️ 删除数据示例
|
117
|
+
```
|
118
|
+
请删除users表中age大于60的所有用户
|
119
|
+
```
|
120
|
+
|
121
|
+
### 🔍 查询数据示例
|
122
|
+
```
|
123
|
+
请查询users表中age在20-30之间的所有用户,只显示name和email字段,限制10条记录
|
124
|
+
```
|
125
|
+
|
126
|
+
### 🏗️ 创建表示例
|
127
|
+
```
|
128
|
+
请创建一个名为products的表,包含以下字段:
|
129
|
+
- id (主键,自增)
|
130
|
+
- name (varchar(100), 不能为空)
|
131
|
+
- price (decimal(10,2))
|
132
|
+
- created_at (timestamp, 默认当前时间)
|
133
|
+
```
|
134
|
+
|
135
|
+
## 📊 日志系统使用
|
136
|
+
|
137
|
+
### 查看日志
|
138
|
+
```bash
|
139
|
+
# 查看所有可用的日志文件
|
140
|
+
npm run logs list
|
141
|
+
|
142
|
+
# 查看今天的完整日志
|
143
|
+
npm run logs:tail
|
144
|
+
|
145
|
+
# 查看错误日志
|
146
|
+
npm run logs:errors
|
147
|
+
|
148
|
+
# 查看日志统计
|
149
|
+
npm run logs:stats
|
150
|
+
|
151
|
+
# 分析数据库操作
|
152
|
+
npm run logs:db
|
153
|
+
```
|
154
|
+
|
155
|
+
### 日志文件说明
|
156
|
+
- `combined-YYYY-MM-DD.log` - 完整的操作日志
|
157
|
+
- `error-YYYY-MM-DD.log` - 错误日志
|
158
|
+
- `database-YYYY-MM-DD.log` - 数据库专用日志
|
159
|
+
- `exceptions-YYYY-MM-DD.log` - 异常日志
|
160
|
+
- `rejections-YYYY-MM-DD.log` - Promise拒绝日志
|
161
|
+
|
162
|
+
### 搜索日志
|
163
|
+
```bash
|
164
|
+
# 搜索包含"连接失败"的日志
|
165
|
+
npm run logs search "连接失败"
|
166
|
+
|
167
|
+
# 查看指定日志文件
|
168
|
+
npm run logs view combined-2024-01-15.log
|
169
|
+
```
|
170
|
+
|
171
|
+
## 🔒 安全特性
|
172
|
+
|
173
|
+
### 🛡️ 安全措施
|
174
|
+
- ✅ **参数化查询** - 防止SQL注入攻击
|
175
|
+
- ✅ **表名验证** - 验证表名格式,防止恶意输入
|
176
|
+
- ✅ **连接管理** - 安全的连接建立和断开
|
177
|
+
- ✅ **错误处理** - 详细的错误信息和安全的错误响应
|
178
|
+
|
179
|
+
### 🔐 建议的安全配置
|
180
|
+
1. **创建专用数据库用户**
|
181
|
+
```sql
|
182
|
+
CREATE USER 'mcp_user'@'localhost' IDENTIFIED BY 'strong_password';
|
183
|
+
GRANT SELECT, INSERT, UPDATE, DELETE ON your_database.* TO 'mcp_user'@'localhost';
|
184
|
+
```
|
185
|
+
|
186
|
+
2. **限制网络访问**
|
187
|
+
- 仅允许本地连接或信任的IP地址
|
188
|
+
|
189
|
+
3. **定期审查日志**
|
190
|
+
- 使用日志系统监控异常操作
|
191
|
+
|
192
|
+
## 📈 性能监控
|
193
|
+
|
194
|
+
### 执行时间监控
|
195
|
+
每个操作都会记录执行时间,帮助你:
|
196
|
+
- 🔍 **识别慢查询** - 找出性能瓶颈
|
197
|
+
- 📊 **优化数据库** - 基于实际使用数据优化
|
198
|
+
- 📈 **趋势分析** - 了解性能变化趋势
|
199
|
+
|
200
|
+
### 操作统计
|
201
|
+
日志系统提供详细的操作统计:
|
202
|
+
- 📊 各类操作的执行次数
|
203
|
+
- ⏱️ 平均执行时间
|
204
|
+
- 🚨 错误率统计
|
205
|
+
- 📈 使用趋势分析
|
206
|
+
|
207
|
+
## 🛠️ 故障排除
|
208
|
+
|
209
|
+
### 常见问题
|
210
|
+
|
211
|
+
#### 1. 连接失败
|
212
|
+
```bash
|
213
|
+
# 查看连接错误日志
|
214
|
+
npm run logs:errors
|
215
|
+
|
216
|
+
# 检查数据库服务状态
|
217
|
+
mysql -u root -p -e "SELECT 1"
|
218
|
+
```
|
219
|
+
|
220
|
+
#### 2. 权限不足
|
221
|
+
```bash
|
222
|
+
# 检查用户权限
|
223
|
+
mysql -u your_user -p -e "SHOW GRANTS"
|
224
|
+
```
|
225
|
+
|
226
|
+
#### 3. 日志文件过多
|
227
|
+
```bash
|
228
|
+
# 清理旧日志文件(保留最近7天)
|
229
|
+
find logs/ -name "*.log" -mtime +7 -delete
|
230
|
+
```
|
231
|
+
|
232
|
+
## 🔧 高级配置
|
233
|
+
|
234
|
+
### 自定义日志级别
|
235
|
+
在启动时设置环境变量:
|
236
|
+
```bash
|
237
|
+
# 设置为调试模式
|
238
|
+
NODE_ENV=development npm start
|
239
|
+
|
240
|
+
# 设置为生产模式
|
241
|
+
NODE_ENV=production npm start
|
242
|
+
```
|
243
|
+
|
244
|
+
### 日志轮转配置
|
245
|
+
默认配置:
|
246
|
+
- 每个日志文件最大20MB
|
247
|
+
- 错误日志保留14天
|
248
|
+
- 其他日志保留30天
|
249
|
+
- 自动压缩旧文件
|
250
|
+
|
251
|
+
## 📞 支持和反馈
|
252
|
+
|
253
|
+
如果你遇到问题或有建议:
|
254
|
+
|
255
|
+
1. 🔍 **查看日志** - 使用日志系统分析问题
|
256
|
+
2. 📋 **检查文档** - 参考本文档的故障排除部分
|
257
|
+
3. 🐛 **报告问题** - 在GitHub仓库提交Issue
|
258
|
+
4. 💡 **功能建议** - 欢迎提出改进建议
|
259
|
+
|
260
|
+
## 📄 更新日志
|
261
|
+
|
262
|
+
### v2.0.0 (当前版本)
|
263
|
+
- ✨ 新增完整CRUD操作支持
|
264
|
+
- 📊 新增智能日志系统
|
265
|
+
- 🔄 新增事务管理
|
266
|
+
- 🛡️ 增强安全防护
|
267
|
+
- 📈 新增性能监控
|
268
|
+
|
269
|
+
### v1.0.0
|
270
|
+
- 🔗 基础数据库连接
|
271
|
+
- 🔍 只读查询支持
|
272
|
+
- 📋 表结构查看
|
273
|
+
|
274
|
+
---
|
275
|
+
|
276
|
+
**🎉 享受强大的数据库操作体验!**
|
@@ -0,0 +1,391 @@
|
|
1
|
+
# Smithery 部署指南 ☁️
|
2
|
+
|
3
|
+
本指南将帮助您将MySQL MCP Server部署到Smithery平台,实现云端访问。
|
4
|
+
|
5
|
+
## 🚀 Smithery平台简介
|
6
|
+
|
7
|
+
[Smithery](https://smithery.ai) 是专门为Model Context Protocol (MCP) 服务器设计的云平台,提供:
|
8
|
+
|
9
|
+
- 🌐 全球CDN部署
|
10
|
+
- 🔄 GitHub集成自动部署
|
11
|
+
- 📊 实时监控和统计
|
12
|
+
- 🔒 安全隔离的运行环境
|
13
|
+
- 💰 免费的基础服务
|
14
|
+
|
15
|
+
## 📋 部署前检查
|
16
|
+
|
17
|
+
在部署之前,请确保您的项目包含以下文件:
|
18
|
+
|
19
|
+
### ✅ 必需文件
|
20
|
+
|
21
|
+
| 文件名 | 说明 | 状态 |
|
22
|
+
|--------|------|------|
|
23
|
+
| `Dockerfile` | Docker容器构建配置 | ✅ 已包含(已修复构建问题) |
|
24
|
+
| `smithery.yaml` | Smithery平台配置 | ✅ 已包含 |
|
25
|
+
| `package.json` | Node.js项目配置 | ✅ 已包含 |
|
26
|
+
| `src/index.ts` | MCP服务器主文件 | ✅ 已包含 |
|
27
|
+
| `src/database.ts` | 数据库管理器 | ✅ 已包含 |
|
28
|
+
|
29
|
+
### 📄 配置文件详解
|
30
|
+
|
31
|
+
#### Dockerfile(已修复)
|
32
|
+
```dockerfile
|
33
|
+
FROM node:18-alpine
|
34
|
+
WORKDIR /app
|
35
|
+
|
36
|
+
# 复制package文件以优化Docker层缓存
|
37
|
+
COPY package*.json ./
|
38
|
+
|
39
|
+
# 安装所有依赖(包括devDependencies以便构建)
|
40
|
+
RUN npm install
|
41
|
+
|
42
|
+
# 复制应用代码
|
43
|
+
COPY . .
|
44
|
+
|
45
|
+
# 构建TypeScript代码
|
46
|
+
RUN npm run build
|
47
|
+
|
48
|
+
# 确保dist目录存在并包含index.js
|
49
|
+
RUN ls -la dist/ && test -f dist/index.js
|
50
|
+
|
51
|
+
# 删除devDependencies以减小镜像大小(保留构建产物)
|
52
|
+
RUN npm prune --production
|
53
|
+
|
54
|
+
# 暴露端口(如果需要HTTP模式)
|
55
|
+
EXPOSE 3100
|
56
|
+
|
57
|
+
# 设置默认命令
|
58
|
+
CMD ["node", "dist/index.js"]
|
59
|
+
```
|
60
|
+
|
61
|
+
> **🔧 修复说明**: 之前的Dockerfile使用了`npm install --production`,这导致TypeScript编译器无法安装,造成构建失败。现在的版本先安装所有依赖进行构建,然后删除开发依赖以减小镜像大小。
|
62
|
+
|
63
|
+
#### smithery.yaml
|
64
|
+
```yaml
|
65
|
+
startCommand:
|
66
|
+
type: stdio
|
67
|
+
configSchema:
|
68
|
+
type: object
|
69
|
+
properties:
|
70
|
+
description:
|
71
|
+
type: string
|
72
|
+
title: "服务器描述"
|
73
|
+
default: "MySQL数据库查询服务器"
|
74
|
+
commandFunction: |-
|
75
|
+
(config) => ({
|
76
|
+
"command": "node",
|
77
|
+
"args": ["dist/index.js"],
|
78
|
+
"env": {
|
79
|
+
"NODE_ENV": "production"
|
80
|
+
}
|
81
|
+
})
|
82
|
+
```
|
83
|
+
|
84
|
+
## 🔧 详细部署步骤
|
85
|
+
|
86
|
+
### 步骤1: 准备GitHub仓库
|
87
|
+
|
88
|
+
1. **Fork本项目**
|
89
|
+
- 访问:https://github.com/guangxiangdebizi/MySQL_MCP
|
90
|
+
- 点击右上角的 "Fork" 按钮
|
91
|
+
- 选择您的GitHub账号
|
92
|
+
|
93
|
+
2. **验证文件完整性**
|
94
|
+
```bash
|
95
|
+
# 克隆您Fork的仓库
|
96
|
+
git clone https://github.com/YOUR_USERNAME/MySQL_MCP.git
|
97
|
+
cd MySQL_MCP
|
98
|
+
|
99
|
+
# 检查必需文件
|
100
|
+
ls -la Dockerfile smithery.yaml package.json src/
|
101
|
+
```
|
102
|
+
|
103
|
+
### 步骤2: 登录Smithery
|
104
|
+
|
105
|
+
1. **访问Smithery平台**
|
106
|
+
- 打开浏览器访问:https://smithery.ai
|
107
|
+
- 点击 "Login" 或 "Sign up"
|
108
|
+
|
109
|
+
2. **GitHub授权**
|
110
|
+
- 选择 "Continue with GitHub"
|
111
|
+
- 授权Smithery访问您的GitHub仓库
|
112
|
+
|
113
|
+
### 步骤3: 创建部署
|
114
|
+
|
115
|
+
1. **开始部署**
|
116
|
+
- 在Smithery控制台点击 "Deploy Server"
|
117
|
+
- 选择 "Import from GitHub"
|
118
|
+
|
119
|
+
2. **选择仓库**
|
120
|
+
- 在仓库列表中找到 `MySQL_MCP`
|
121
|
+
- 点击 "Deploy" 按钮
|
122
|
+
|
123
|
+
3. **配置检查**
|
124
|
+
- Smithery会自动检测配置文件
|
125
|
+
- 确认 `Dockerfile` 和 `smithery.yaml` 被正确识别
|
126
|
+
|
127
|
+
### 步骤4: 监控构建
|
128
|
+
|
129
|
+
1. **构建过程**
|
130
|
+
```
|
131
|
+
⏳ Building Docker image...
|
132
|
+
📦 Installing dependencies...
|
133
|
+
🔨 Compiling TypeScript...
|
134
|
+
✅ Build completed successfully!
|
135
|
+
```
|
136
|
+
|
137
|
+
2. **部署状态**
|
138
|
+
- 构建通常需要2-5分钟
|
139
|
+
- 可以在控制台查看实时日志
|
140
|
+
- 部署成功后会显示服务器URL
|
141
|
+
|
142
|
+
### 步骤5: 获取连接信息
|
143
|
+
|
144
|
+
部署成功后,您会获得:
|
145
|
+
|
146
|
+
```
|
147
|
+
🎉 部署成功!
|
148
|
+
|
149
|
+
服务器ID: mysql-mcp-abcd1234
|
150
|
+
服务器URL: https://server.smithery.ai/mysql-mcp-abcd1234/sse
|
151
|
+
状态: ✅ Running
|
152
|
+
```
|
153
|
+
|
154
|
+
## 🎯 客户端配置
|
155
|
+
|
156
|
+
### VSCode Cline
|
157
|
+
|
158
|
+
在VSCode的Cline扩展中配置:
|
159
|
+
|
160
|
+
```json
|
161
|
+
{
|
162
|
+
"mcpServers": {
|
163
|
+
"mysql-database-cloud": {
|
164
|
+
"url": "https://server.smithery.ai/your-server-id/sse",
|
165
|
+
"type": "sse",
|
166
|
+
"name": "MySQL数据库 (云端)",
|
167
|
+
"description": "Smithery云端部署的MySQL MCP服务器"
|
168
|
+
}
|
169
|
+
}
|
170
|
+
}
|
171
|
+
```
|
172
|
+
|
173
|
+
### Claude Desktop
|
174
|
+
|
175
|
+
在Claude Desktop的配置文件中:
|
176
|
+
|
177
|
+
```json
|
178
|
+
{
|
179
|
+
"mcpServers": {
|
180
|
+
"mysql-database": {
|
181
|
+
"url": "https://server.smithery.ai/your-server-id/sse",
|
182
|
+
"type": "sse"
|
183
|
+
}
|
184
|
+
}
|
185
|
+
}
|
186
|
+
```
|
187
|
+
|
188
|
+
### 其他客户端
|
189
|
+
|
190
|
+
任何支持MCP的客户端都可以使用SSE连接:
|
191
|
+
|
192
|
+
- **连接类型**: SSE (Server-Sent Events)
|
193
|
+
- **URL格式**: `https://server.smithery.ai/{server-id}/sse`
|
194
|
+
- **认证**: 无需额外认证(公开访问)
|
195
|
+
|
196
|
+
## 🔄 自动更新
|
197
|
+
|
198
|
+
### Git Push自动部署
|
199
|
+
|
200
|
+
每次推送代码到GitHub时,Smithery会自动重新部署:
|
201
|
+
|
202
|
+
```bash
|
203
|
+
# 本地修改代码
|
204
|
+
git add .
|
205
|
+
git commit -m "更新MySQL MCP服务器"
|
206
|
+
git push origin main
|
207
|
+
|
208
|
+
# Smithery会自动检测并重新部署
|
209
|
+
```
|
210
|
+
|
211
|
+
### 部署历史
|
212
|
+
|
213
|
+
在Smithery控制台可以查看:
|
214
|
+
- 📈 部署历史记录
|
215
|
+
- 📊 调用统计
|
216
|
+
- 🐛 错误日志
|
217
|
+
- 📝 构建日志
|
218
|
+
|
219
|
+
## 💡 使用示例
|
220
|
+
|
221
|
+
部署完成后,在AI对话中这样使用:
|
222
|
+
|
223
|
+
```
|
224
|
+
你好!我需要查询MySQL数据库。
|
225
|
+
|
226
|
+
请先连接到数据库:
|
227
|
+
- 主机: db.example.com
|
228
|
+
- 端口: 3306
|
229
|
+
- 用户名: readonly_user
|
230
|
+
- 密码: secure_password
|
231
|
+
- 数据库: ecommerce
|
232
|
+
|
233
|
+
然后显示所有的表。
|
234
|
+
```
|
235
|
+
|
236
|
+
AI会自动调用云端的MCP服务器来执行这些操作。
|
237
|
+
|
238
|
+
## 🔒 安全最佳实践
|
239
|
+
|
240
|
+
### 数据库安全
|
241
|
+
|
242
|
+
1. **创建只读用户**
|
243
|
+
```sql
|
244
|
+
CREATE USER 'mcp_readonly'@'%' IDENTIFIED BY 'secure_password';
|
245
|
+
GRANT SELECT ON your_database.* TO 'mcp_readonly'@'%';
|
246
|
+
FLUSH PRIVILEGES;
|
247
|
+
```
|
248
|
+
|
249
|
+
2. **网络限制**
|
250
|
+
- 只允许必要的IP地址访问数据库
|
251
|
+
- 使用SSL连接加密数据传输
|
252
|
+
|
253
|
+
3. **密码管理**
|
254
|
+
- 使用强密码
|
255
|
+
- 定期轮换密码
|
256
|
+
- 避免在日志中记录敏感信息
|
257
|
+
|
258
|
+
### 访问控制
|
259
|
+
|
260
|
+
- 🔐 Smithery服务器部署后是公开访问的
|
261
|
+
- 🛡️ 不要在MCP工具中硬编码敏感信息
|
262
|
+
- 📊 定期检查访问日志和使用统计
|
263
|
+
|
264
|
+
## ❗ 故障排除
|
265
|
+
|
266
|
+
### 常见部署错误
|
267
|
+
|
268
|
+
#### 1. TypeScript编译器找不到(tsc: not found)⚠️ 最常见问题
|
269
|
+
|
270
|
+
**错误信息**:
|
271
|
+
```
|
272
|
+
#17 [stage-1 6/12] RUN npm run build
|
273
|
+
#17 0.726 > my-awesome-mcp@1.0.0 build
|
274
|
+
#17 0.726 > tsc
|
275
|
+
#17 0.733 sh: tsc: not found
|
276
|
+
Error: process "/bin/sh -c npm run build" did not complete successfully: exit code: 127
|
277
|
+
```
|
278
|
+
|
279
|
+
**原因**: Dockerfile使用了`npm install --production`,只安装production依赖,而TypeScript编译器在devDependencies中。
|
280
|
+
|
281
|
+
**✅ 解决方案**: 已修复!现在的Dockerfile正确安装了所有依赖。如果您仍遇到此问题,请确保使用最新的Dockerfile:
|
282
|
+
|
283
|
+
```dockerfile
|
284
|
+
# 正确的Dockerfile配置
|
285
|
+
FROM node:18-alpine
|
286
|
+
WORKDIR /app
|
287
|
+
COPY package*.json ./
|
288
|
+
|
289
|
+
# ✅ 安装所有依赖(包括devDependencies)
|
290
|
+
RUN npm install
|
291
|
+
|
292
|
+
COPY . .
|
293
|
+
RUN npm run build
|
294
|
+
|
295
|
+
# 删除devDependencies以减小镜像大小
|
296
|
+
RUN npm prune --production
|
297
|
+
|
298
|
+
CMD ["node", "dist/index.js"]
|
299
|
+
```
|
300
|
+
|
301
|
+
#### 2. 依赖安装失败
|
302
|
+
|
303
|
+
**错误信息**:
|
304
|
+
```
|
305
|
+
npm ERR! code ENOTFOUND
|
306
|
+
npm ERR! network request failed
|
307
|
+
```
|
308
|
+
|
309
|
+
**解决方案**:
|
310
|
+
- 检查package.json中的依赖版本
|
311
|
+
- 确保npm registry可访问
|
312
|
+
- 检查网络连接
|
313
|
+
|
314
|
+
#### 3. 文件权限错误
|
315
|
+
|
316
|
+
**错误信息**:
|
317
|
+
```
|
318
|
+
permission denied while trying to connect to the Docker daemon
|
319
|
+
```
|
320
|
+
|
321
|
+
**解决方案**:
|
322
|
+
- 确保Docker服务正在运行
|
323
|
+
- 检查用户权限
|
324
|
+
- 在Smithery平台上这个问题通常不会出现
|
325
|
+
|
326
|
+
#### 4. 构建超时
|
327
|
+
|
328
|
+
**错误信息**:
|
329
|
+
```
|
330
|
+
Build timeout after 10 minutes
|
331
|
+
```
|
332
|
+
|
333
|
+
**解决方案**:
|
334
|
+
- 检查.dockerignore文件是否正确排除了不必要的文件
|
335
|
+
- 确保依赖版本稳定
|
336
|
+
- 联系Smithery支持
|
337
|
+
|
338
|
+
### 🔧 本地测试构建
|
339
|
+
|
340
|
+
在推送到Smithery之前,建议在本地测试Docker构建:
|
341
|
+
|
342
|
+
```bash
|
343
|
+
# 1. 构建Docker镜像
|
344
|
+
docker build -t mysql-mcp-test .
|
345
|
+
|
346
|
+
# 2. 测试运行
|
347
|
+
docker run --rm mysql-mcp-test node --version
|
348
|
+
|
349
|
+
# 3. 检查构建产物
|
350
|
+
docker run --rm mysql-mcp-test ls -la dist/
|
351
|
+
|
352
|
+
# 4. 测试MCP服务器启动
|
353
|
+
docker run --rm mysql-mcp-test node dist/index.js --help
|
354
|
+
```
|
355
|
+
|
356
|
+
### 📊 构建日志分析
|
357
|
+
|
358
|
+
如果遇到构建问题,请注意以下关键阶段:
|
359
|
+
|
360
|
+
1. **依赖安装**:
|
361
|
+
```
|
362
|
+
✅ #4 [stage-1 4/12] RUN npm install
|
363
|
+
```
|
364
|
+
|
365
|
+
2. **TypeScript编译**:
|
366
|
+
```
|
367
|
+
✅ #6 [stage-1 6/12] RUN npm run build
|
368
|
+
```
|
369
|
+
|
370
|
+
3. **文件验证**:
|
371
|
+
```
|
372
|
+
✅ #7 [stage-1 7/12] RUN ls -la dist/ && test -f dist/index.js
|
373
|
+
```
|
374
|
+
|
375
|
+
### 🆘 获取帮助
|
376
|
+
|
377
|
+
- 📧 Smithery支持: support@smithery.ai
|
378
|
+
- 🐛 GitHub Issues: 在项目仓库提交问题
|
379
|
+
- 📖 文档: https://smithery.ai/docs
|
380
|
+
|
381
|
+
## 🎉 部署完成
|
382
|
+
|
383
|
+
恭喜!您已经成功将MySQL MCP Server部署到Smithery云平台。
|
384
|
+
|
385
|
+
现在您可以:
|
386
|
+
- ✅ 在任何地方访问您的MCP服务器
|
387
|
+
- ✅ 享受自动更新和监控功能
|
388
|
+
- ✅ 与团队成员共享云端服务
|
389
|
+
- ✅ 无需担心本地环境配置问题
|
390
|
+
|
391
|
+
开始享受云端AI数据库助手的便利吧! 🚀
|