multimymcp 1.0.0__tar.gz
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.
- multimymcp-1.0.0/PKG-INFO +613 -0
- multimymcp-1.0.0/README.md +585 -0
- multimymcp-1.0.0/multimymcp/__init__.py +24 -0
- multimymcp-1.0.0/multimymcp/cli.py +138 -0
- multimymcp-1.0.0/multimymcp/config.py +300 -0
- multimymcp-1.0.0/multimymcp/core.py +382 -0
- multimymcp-1.0.0/multimymcp/encryption.py +118 -0
- multimymcp-1.0.0/multimymcp/exceptions.py +50 -0
- multimymcp-1.0.0/multimymcp/executor.py +432 -0
- multimymcp-1.0.0/multimymcp/mcp_config_loader.py +94 -0
- multimymcp-1.0.0/multimymcp/mcp_protocol.py +197 -0
- multimymcp-1.0.0/multimymcp/mcp_server.py +176 -0
- multimymcp-1.0.0/multimymcp/mcp_tools.py +213 -0
- multimymcp-1.0.0/multimymcp/monitor.py +305 -0
- multimymcp-1.0.0/multimymcp/pool.py +334 -0
- multimymcp-1.0.0/multimymcp.egg-info/PKG-INFO +613 -0
- multimymcp-1.0.0/multimymcp.egg-info/SOURCES.txt +27 -0
- multimymcp-1.0.0/multimymcp.egg-info/dependency_links.txt +1 -0
- multimymcp-1.0.0/multimymcp.egg-info/entry_points.txt +2 -0
- multimymcp-1.0.0/multimymcp.egg-info/requires.txt +10 -0
- multimymcp-1.0.0/multimymcp.egg-info/top_level.txt +1 -0
- multimymcp-1.0.0/pyproject.toml +45 -0
- multimymcp-1.0.0/setup.cfg +4 -0
- multimymcp-1.0.0/setup.py +4 -0
- multimymcp-1.0.0/tests/test_config.py +84 -0
- multimymcp-1.0.0/tests/test_core.py +91 -0
- multimymcp-1.0.0/tests/test_encryption.py +46 -0
- multimymcp-1.0.0/tests/test_monitor.py +79 -0
- multimymcp-1.0.0/tests/test_pool.py +84 -0
|
@@ -0,0 +1,613 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: multimymcp
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: 生产级 MySQL 多数据源 MCP 工具,适配 TRAE CN IDE 环境
|
|
5
|
+
Author-email: wanhonglei <wanhonglei@example.com>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Source, https://gitee.com/wanhonglei/multi-mysql-mcp
|
|
8
|
+
Project-URL: Bug Tracker, https://gitee.com/wanhonglei/multi-mysql-mcp/issues
|
|
9
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: Topic :: Database
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Requires-Python: >=3.8
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
Requires-Dist: pymysql>=1.0.0
|
|
20
|
+
Requires-Dist: DBUtils>=2.0.0
|
|
21
|
+
Requires-Dist: python-dotenv>=0.19.0
|
|
22
|
+
Requires-Dist: cryptography>=3.4.0
|
|
23
|
+
Requires-Dist: psutil>=5.8.0
|
|
24
|
+
Requires-Dist: json5>=0.9.0
|
|
25
|
+
Provides-Extra: dev
|
|
26
|
+
Requires-Dist: pytest>=6.2.0; extra == "dev"
|
|
27
|
+
Requires-Dist: pytest-cov>=3.0.0; extra == "dev"
|
|
28
|
+
|
|
29
|
+
# MultiMyMCP - 生产级 MySQL 多数据源 MCP 工具
|
|
30
|
+
|
|
31
|
+
## 项目概述
|
|
32
|
+
|
|
33
|
+
MultiMyMCP 是一个完全适配 TRAE SOLO IDE 环境的生产级 MySQL 多数据源管理工具。它提供了增强型连接池、安全配置、性能监控等核心功能,支持标准 MCP 协议,让 AI 能够直接查询多个 MySQL 数据库。
|
|
34
|
+
|
|
35
|
+
## 核心特性
|
|
36
|
+
|
|
37
|
+
### 1. 标准 MCP 协议支持
|
|
38
|
+
- 完全符合 MCP (Model Context Protocol) 标准
|
|
39
|
+
- 支持 JSON-RPC 2.0 通信协议
|
|
40
|
+
- 提供 4 个核心工具:query_database、list_datasources、execute_sql、get_schema
|
|
41
|
+
- 与 TRAE SOLO IDE 无缝集成
|
|
42
|
+
|
|
43
|
+
### 2. 增强型连接池
|
|
44
|
+
- 支持连接池动态扩容/缩容
|
|
45
|
+
- 记录连接使用时长和 SQL 执行耗时
|
|
46
|
+
- 连接池状态监控(当前连接数、空闲连接数、等待队列长度)
|
|
47
|
+
- 线程安全的连接管理
|
|
48
|
+
|
|
49
|
+
### 3. 安全与通用规范
|
|
50
|
+
- SQL 执行超时控制
|
|
51
|
+
- 数据源配置加密存储(AES-256)
|
|
52
|
+
- SQL 白名单/黑名单机制
|
|
53
|
+
- 危险 SQL 操作拦截
|
|
54
|
+
|
|
55
|
+
### 4. 多数据源支持
|
|
56
|
+
- 支持同时管理多个 MySQL 数据源
|
|
57
|
+
- 灵活的数据源切换
|
|
58
|
+
- 全局配置文件管理
|
|
59
|
+
- 支持主从库配置
|
|
60
|
+
|
|
61
|
+
## 技术栈
|
|
62
|
+
|
|
63
|
+
- **Python**: 3.8+
|
|
64
|
+
- **核心依赖**: pymysql, DBUtils>=2.0, python-dotenv, cryptography, json5
|
|
65
|
+
- **可选依赖**: psutil, pytest
|
|
66
|
+
|
|
67
|
+
## 项目结构
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
MultiMyMCP/
|
|
71
|
+
├── multimymcp/
|
|
72
|
+
│ ├── __init__.py # 模块初始化
|
|
73
|
+
│ ├── core.py # 核心MCP接口
|
|
74
|
+
│ ├── config.py # 配置管理
|
|
75
|
+
│ ├── encryption.py # 加密工具
|
|
76
|
+
│ ├── pool.py # 连接池管理
|
|
77
|
+
│ ├── executor.py # SQL执行器
|
|
78
|
+
│ ├── monitor.py # 监控模块
|
|
79
|
+
│ ├── exceptions.py # 异常定义
|
|
80
|
+
│ ├── cli.py # 命令行接口
|
|
81
|
+
│ ├── mcp_server.py # MCP服务器主程序
|
|
82
|
+
│ ├── mcp_protocol.py # MCP协议处理器
|
|
83
|
+
│ ├── mcp_tools.py # MCP工具实现
|
|
84
|
+
│ └── mcp_config_loader.py # MCP配置加载器
|
|
85
|
+
├── tests/ # 单元测试
|
|
86
|
+
├── docs/ # 文档
|
|
87
|
+
├── requirements.txt # 依赖配置
|
|
88
|
+
├── setup.py # 打包配置
|
|
89
|
+
├── README.md # 项目说明
|
|
90
|
+
├── CHANGELOG.md # 更新日志
|
|
91
|
+
└── .env.example # 环境变量示例
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## 安装步骤
|
|
95
|
+
|
|
96
|
+
### 1. 克隆项目
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
git clone git@gitee.com:wanhonglei/multi-mysql-mcp.git
|
|
100
|
+
cd multimymcp
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 2. 安装依赖
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
pip3 install -r requirements.txt
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### 3. 安装项目(开发模式)
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
pip3 install -e .
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### 4. 验证安装
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
python3 -m multimymcp.mcp_server --help
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
应该看到帮助信息输出。
|
|
122
|
+
|
|
123
|
+
## MCP 服务器使用指南
|
|
124
|
+
|
|
125
|
+
### 第一步:创建配置文件
|
|
126
|
+
|
|
127
|
+
#### 1.1 创建配置目录
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
mkdir -p ~/.multimymcp
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
#### 1.2 创建配置文件
|
|
134
|
+
|
|
135
|
+
创建 `~/.multimymcp/mcp_config.json5` 文件:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
cat > ~/.multimymcp/mcp_config.json5 << 'EOF'
|
|
139
|
+
{
|
|
140
|
+
"datasources": {
|
|
141
|
+
"master": {
|
|
142
|
+
"host": "localhost",
|
|
143
|
+
"port": 3306,
|
|
144
|
+
"user": "root",
|
|
145
|
+
"password": "your_password",
|
|
146
|
+
"database": "production",
|
|
147
|
+
"pool_min_size": 2,
|
|
148
|
+
"pool_max_size": 10
|
|
149
|
+
},
|
|
150
|
+
"slave": {
|
|
151
|
+
"host": "localhost",
|
|
152
|
+
"port": 3307,
|
|
153
|
+
"user": "readonly",
|
|
154
|
+
"password": "your_password",
|
|
155
|
+
"database": "production",
|
|
156
|
+
"pool_min_size": 5,
|
|
157
|
+
"pool_max_size": 20
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
"security": {
|
|
161
|
+
"whitelist_enabled": false,
|
|
162
|
+
"blacklist_enabled": true,
|
|
163
|
+
"blacklist": ["DROP", "TRUNCATE", "ALTER", "CREATE"]
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
EOF
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
**重要提示**:
|
|
170
|
+
- 请将 `your_password` 替换为实际的数据库密码
|
|
171
|
+
- 根据实际情况修改 host、port、user、database 等参数
|
|
172
|
+
- 可以添加更多数据源
|
|
173
|
+
|
|
174
|
+
### 第二步:测试 MCP 服务器
|
|
175
|
+
|
|
176
|
+
#### 2.1 测试初始化请求
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | python3 -m multimymcp.mcp_server
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
**预期输出**:
|
|
183
|
+
|
|
184
|
+
```json
|
|
185
|
+
{"jsonrpc": "2.0", "id": 1, "result": {"protocolVersion": "2024-11-05", "capabilities": {"tools": {}}, "serverInfo": {"name": "multimymcp", "version": "1.0.0"}}}
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
#### 2.2 测试工具列表
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
echo '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' | python3 -m multimymcp.mcp_server
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
**预期输出**:
|
|
195
|
+
|
|
196
|
+
```json
|
|
197
|
+
{"jsonrpc": "2.0", "id": 2, "result": {"tools": [...]}}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### 第三步:在 TRAE SOLO IDE 中配置
|
|
201
|
+
|
|
202
|
+
#### 3.1 打开 MCP 设置
|
|
203
|
+
|
|
204
|
+
在 TRAE SOLO IDE 中:
|
|
205
|
+
|
|
206
|
+
**方式一:通过菜单**
|
|
207
|
+
1. 点击菜单栏的 `Preferences`(偏好设置)
|
|
208
|
+
2. 选择 `MCP Servers`(MCP 服务器)
|
|
209
|
+
3. 点击 `Edit MCP Settings`(编辑 MCP 设置)
|
|
210
|
+
|
|
211
|
+
**方式二:通过命令面板**
|
|
212
|
+
1. 按 `Cmd + Shift + P`(macOS)打开命令面板
|
|
213
|
+
2. 输入 `MCP`
|
|
214
|
+
3. 选择 `MCP: Edit MCP Settings`
|
|
215
|
+
|
|
216
|
+
#### 3.2 添加 MCP 服务器配置
|
|
217
|
+
|
|
218
|
+
在打开的配置文件中,添加以下内容:
|
|
219
|
+
|
|
220
|
+
```json
|
|
221
|
+
{
|
|
222
|
+
"mcpServers": {
|
|
223
|
+
"multimymcp": {
|
|
224
|
+
"command": "python3",
|
|
225
|
+
"args": ["-m", "multimymcp.mcp_server"],
|
|
226
|
+
"env": {}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
**完整配置示例**:
|
|
233
|
+
|
|
234
|
+
如果文件中已有其他 MCP 服务器,请添加到 `mcpServers` 对象中:
|
|
235
|
+
|
|
236
|
+
```json
|
|
237
|
+
{
|
|
238
|
+
"mcpServers": {
|
|
239
|
+
"existing-server": {
|
|
240
|
+
"command": "...",
|
|
241
|
+
"args": [...]
|
|
242
|
+
},
|
|
243
|
+
"multimymcp": {
|
|
244
|
+
"command": "python3",
|
|
245
|
+
"args": ["-m", "multimymcp.mcp_server"],
|
|
246
|
+
"env": {}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
#### 3.3 保存并重启
|
|
253
|
+
|
|
254
|
+
1. 保存配置文件(`Cmd + S`)
|
|
255
|
+
2. 重启 MCP 服务器或重启 TRAE SOLO IDE
|
|
256
|
+
|
|
257
|
+
### 第四步:验证配置成功
|
|
258
|
+
|
|
259
|
+
#### 4.1 检查 MCP 服务器状态
|
|
260
|
+
|
|
261
|
+
在 TRAE SOLO IDE 中:
|
|
262
|
+
|
|
263
|
+
1. 打开命令面板(`Cmd + Shift + P`)
|
|
264
|
+
2. 输入 `MCP: Show Status`
|
|
265
|
+
3. 查看 `multimymcp` 是否显示为 `connected`(已连接)
|
|
266
|
+
|
|
267
|
+
#### 4.2 测试 AI 调用
|
|
268
|
+
|
|
269
|
+
在 TRAE SOLO IDE 的 AI 对话框中,尝试以下对话:
|
|
270
|
+
|
|
271
|
+
```
|
|
272
|
+
请列出所有可用的 MySQL 数据源
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
AI 应该会调用 `list_datasources` 工具并返回结果。
|
|
276
|
+
|
|
277
|
+
```
|
|
278
|
+
请查询 master 数据源中的 users 表,返回前 10 条记录
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
AI 应该会调用 `query_database` 工具执行查询。
|
|
282
|
+
|
|
283
|
+
## 可用的 MCP 工具
|
|
284
|
+
|
|
285
|
+
### 1. query_database
|
|
286
|
+
|
|
287
|
+
**描述**:在指定的 MySQL 数据源上执行查询 SQL
|
|
288
|
+
|
|
289
|
+
**参数**:
|
|
290
|
+
- `datasource`: 数据源名称(必需)
|
|
291
|
+
- `sql`: 完整的 SELECT 查询语句(必需)
|
|
292
|
+
|
|
293
|
+
**示例**:
|
|
294
|
+
|
|
295
|
+
```
|
|
296
|
+
请从 master 数据源查询 users 表的前 10 条记录
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### 2. list_datasources
|
|
300
|
+
|
|
301
|
+
**描述**:列出所有可用的 MySQL 数据源
|
|
302
|
+
|
|
303
|
+
**参数**:无
|
|
304
|
+
|
|
305
|
+
**示例**:
|
|
306
|
+
|
|
307
|
+
```
|
|
308
|
+
请列出所有可用的 MySQL 数据源
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
### 3. execute_sql
|
|
312
|
+
|
|
313
|
+
**描述**:执行 SQL 语句(INSERT/UPDATE/DELETE 等)
|
|
314
|
+
|
|
315
|
+
**参数**:
|
|
316
|
+
- `datasource`: 数据源名称(必需)
|
|
317
|
+
- `sql`: 完整的 SQL 语句(必需)
|
|
318
|
+
|
|
319
|
+
**示例**:
|
|
320
|
+
|
|
321
|
+
```
|
|
322
|
+
请在 master 数据源中执行以下 SQL:
|
|
323
|
+
INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com')
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
### 4. get_schema
|
|
327
|
+
|
|
328
|
+
**描述**:获取指定数据源的表结构信息
|
|
329
|
+
|
|
330
|
+
**参数**:
|
|
331
|
+
- `datasource`: 数据源名称(必需)
|
|
332
|
+
- `table`: 表名(可选,不指定则返回所有表)
|
|
333
|
+
|
|
334
|
+
**示例**:
|
|
335
|
+
|
|
336
|
+
```
|
|
337
|
+
请获取 master 数据源中 users 表的结构信息
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
## Python API 使用
|
|
341
|
+
|
|
342
|
+
### 基本使用
|
|
343
|
+
|
|
344
|
+
```python
|
|
345
|
+
from multimymcp import MultiMyMCP
|
|
346
|
+
|
|
347
|
+
# 初始化 MCP
|
|
348
|
+
mcp = MultiMyMCP()
|
|
349
|
+
|
|
350
|
+
# 连接数据源
|
|
351
|
+
mcp.connect('default')
|
|
352
|
+
|
|
353
|
+
# 执行 SQL
|
|
354
|
+
result = mcp.execute('SELECT * FROM users LIMIT 10')
|
|
355
|
+
print(result)
|
|
356
|
+
|
|
357
|
+
# 断开连接
|
|
358
|
+
mcp.disconnect()
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
### 多数据源配置
|
|
362
|
+
|
|
363
|
+
```python
|
|
364
|
+
from multimymcp import MultiMyMCP, DataSourceConfig
|
|
365
|
+
|
|
366
|
+
mcp = MultiMyMCP()
|
|
367
|
+
|
|
368
|
+
# 添加主库
|
|
369
|
+
master_config = DataSourceConfig(
|
|
370
|
+
name="master",
|
|
371
|
+
host="master_db",
|
|
372
|
+
port=3306,
|
|
373
|
+
user="root",
|
|
374
|
+
password="master_password",
|
|
375
|
+
database="production"
|
|
376
|
+
)
|
|
377
|
+
mcp.add_data_source(master_config)
|
|
378
|
+
|
|
379
|
+
# 添加从库
|
|
380
|
+
slave_config = DataSourceConfig(
|
|
381
|
+
name="slave",
|
|
382
|
+
host="slave_db",
|
|
383
|
+
port=3306,
|
|
384
|
+
user="readonly",
|
|
385
|
+
password="slave_password",
|
|
386
|
+
database="production"
|
|
387
|
+
)
|
|
388
|
+
mcp.add_data_source(slave_config)
|
|
389
|
+
|
|
390
|
+
# 使用不同数据源
|
|
391
|
+
mcp.connect('master')
|
|
392
|
+
mcp.execute('INSERT INTO users (name) VALUES ("test")')
|
|
393
|
+
|
|
394
|
+
mcp.connect('slave')
|
|
395
|
+
result = mcp.execute('SELECT * FROM users')
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
### 事务处理
|
|
399
|
+
|
|
400
|
+
```python
|
|
401
|
+
from multimymcp import MultiMyMCP
|
|
402
|
+
|
|
403
|
+
mcp = MultiMyMCP()
|
|
404
|
+
mcp.connect('default')
|
|
405
|
+
|
|
406
|
+
# 使用事务
|
|
407
|
+
try:
|
|
408
|
+
mcp._executors['default'].begin_transaction()
|
|
409
|
+
|
|
410
|
+
mcp.execute('INSERT INTO orders (user_id, amount) VALUES (1, 100)')
|
|
411
|
+
mcp.execute('UPDATE users SET balance = balance - 100 WHERE id = 1')
|
|
412
|
+
|
|
413
|
+
mcp._executors['default'].commit_transaction()
|
|
414
|
+
except Exception as e:
|
|
415
|
+
mcp._executors['default'].rollback_transaction()
|
|
416
|
+
raise
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
## 监控与调试
|
|
420
|
+
|
|
421
|
+
### 1. 连接池状态
|
|
422
|
+
|
|
423
|
+
```python
|
|
424
|
+
status = mcp.get_pool_status()
|
|
425
|
+
print(f"当前连接数: {status['current_size']}")
|
|
426
|
+
print(f"活跃连接数: {status['active_size']}")
|
|
427
|
+
print(f"空闲连接数: {status['idle_size']}")
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
### 2. 性能报告
|
|
431
|
+
|
|
432
|
+
```python
|
|
433
|
+
report = mcp.get_performance_report()
|
|
434
|
+
print(f"总执行次数: {report['summary']['total_sql_executions']}")
|
|
435
|
+
print(f"成功率: {report['summary']['success_rate']:.2f}%")
|
|
436
|
+
print(f"平均执行时间: {report['summary']['avg_execution_time']:.3f}s")
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
### 3. 健康检查
|
|
440
|
+
|
|
441
|
+
```python
|
|
442
|
+
health = mcp.get_health_status()
|
|
443
|
+
if health['healthy']:
|
|
444
|
+
print("系统健康状态良好")
|
|
445
|
+
else:
|
|
446
|
+
print("系统存在问题:")
|
|
447
|
+
for issue in health['issues']:
|
|
448
|
+
print(f"- {issue}")
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
## 命令行工具
|
|
452
|
+
|
|
453
|
+
```bash
|
|
454
|
+
# 查看帮助
|
|
455
|
+
multimymcp --help
|
|
456
|
+
|
|
457
|
+
# 连接数据源
|
|
458
|
+
multimymcp connect default
|
|
459
|
+
|
|
460
|
+
# 执行 SQL
|
|
461
|
+
multimymcp execute "SELECT * FROM users"
|
|
462
|
+
|
|
463
|
+
# 查看状态
|
|
464
|
+
multimymcp status
|
|
465
|
+
|
|
466
|
+
# 健康检查
|
|
467
|
+
multimymcp health
|
|
468
|
+
|
|
469
|
+
# 性能报告
|
|
470
|
+
multimymcp performance
|
|
471
|
+
|
|
472
|
+
# 列出数据源
|
|
473
|
+
multimymcp list
|
|
474
|
+
|
|
475
|
+
# 调整连接池大小
|
|
476
|
+
multimymcp resize 5 20
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
## 常见问题排查
|
|
480
|
+
|
|
481
|
+
### 问题 1:MCP 服务器无法启动
|
|
482
|
+
|
|
483
|
+
**症状**:状态显示为 `disconnected` 或 `error`
|
|
484
|
+
|
|
485
|
+
**解决方法**:
|
|
486
|
+
|
|
487
|
+
1. 检查 Python 路径是否正确:
|
|
488
|
+
```bash
|
|
489
|
+
which python3
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
2. 在配置中使用完整路径:
|
|
493
|
+
```json
|
|
494
|
+
{
|
|
495
|
+
"mcpServers": {
|
|
496
|
+
"multimymcp": {
|
|
497
|
+
"command": "/usr/bin/python3",
|
|
498
|
+
"args": ["-m", "multimymcp.mcp_server"],
|
|
499
|
+
"env": {}
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
### 问题 2:找不到模块
|
|
506
|
+
|
|
507
|
+
**症状**:错误信息显示 `ModuleNotFoundError`
|
|
508
|
+
|
|
509
|
+
**解决方法**:
|
|
510
|
+
|
|
511
|
+
1. 确认项目已安装:
|
|
512
|
+
```bash
|
|
513
|
+
pip3 install -e /path/to/MultiMyMCP
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
2. 在配置中添加 PYTHONPATH:
|
|
517
|
+
```json
|
|
518
|
+
{
|
|
519
|
+
"mcpServers": {
|
|
520
|
+
"multimymcp": {
|
|
521
|
+
"command": "python3",
|
|
522
|
+
"args": ["-m", "multimymcp.mcp_server"],
|
|
523
|
+
"env": {
|
|
524
|
+
"PYTHONPATH": "/path/to/MultiMyMCP"
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
```
|
|
530
|
+
|
|
531
|
+
### 问题 3:数据库连接失败
|
|
532
|
+
|
|
533
|
+
**症状**:AI 调用工具时返回连接错误
|
|
534
|
+
|
|
535
|
+
**解决方法**:
|
|
536
|
+
|
|
537
|
+
1. 检查配置文件中的数据库连接信息
|
|
538
|
+
2. 确认数据库服务正在运行
|
|
539
|
+
3. 测试数据库连接:
|
|
540
|
+
```bash
|
|
541
|
+
mysql -h localhost -P 3306 -u root -p
|
|
542
|
+
```
|
|
543
|
+
|
|
544
|
+
## 安全配置
|
|
545
|
+
|
|
546
|
+
### 生产环境配置
|
|
547
|
+
|
|
548
|
+
```json5
|
|
549
|
+
{
|
|
550
|
+
"security": {
|
|
551
|
+
"whitelist_enabled": true,
|
|
552
|
+
"blacklist_enabled": true,
|
|
553
|
+
"whitelist": ["SELECT", "INSERT", "UPDATE", "DELETE"],
|
|
554
|
+
"blacklist": ["DROP", "TRUNCATE", "ALTER", "CREATE", "GRANT", "REVOKE"]
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
```
|
|
558
|
+
|
|
559
|
+
## 性能优化建议
|
|
560
|
+
|
|
561
|
+
### 1. 连接池优化
|
|
562
|
+
|
|
563
|
+
```python
|
|
564
|
+
# 推荐配置
|
|
565
|
+
config = DataSourceConfig(
|
|
566
|
+
# 其他配置...
|
|
567
|
+
pool_min_size=5, # 基础并发数
|
|
568
|
+
pool_max_size=15, # 最大并发数
|
|
569
|
+
pool_timeout=30, # 连接池超时(秒)
|
|
570
|
+
sql_timeout=60 # SQL执行超时(秒)
|
|
571
|
+
)
|
|
572
|
+
```
|
|
573
|
+
|
|
574
|
+
### 2. SQL 优化
|
|
575
|
+
|
|
576
|
+
- 使用参数化查询
|
|
577
|
+
- 批量执行操作
|
|
578
|
+
- 使用事务减少网络开销
|
|
579
|
+
- 限制结果集大小
|
|
580
|
+
|
|
581
|
+
## 测试
|
|
582
|
+
|
|
583
|
+
运行单元测试:
|
|
584
|
+
|
|
585
|
+
```bash
|
|
586
|
+
pytest tests/ -v --cov=multimymcp
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
## 版本信息
|
|
590
|
+
|
|
591
|
+
- **版本**: 1.0.0
|
|
592
|
+
- **发布日期**: 2026-03-12
|
|
593
|
+
- **Python 版本**: 3.8+
|
|
594
|
+
|
|
595
|
+
## 许可证
|
|
596
|
+
|
|
597
|
+
MIT License
|
|
598
|
+
|
|
599
|
+
## 更新日志
|
|
600
|
+
|
|
601
|
+
### v1.0.0 (2026-03-12)
|
|
602
|
+
- 初始版本发布
|
|
603
|
+
- 实现标准 MCP 协议支持
|
|
604
|
+
- 实现 4 个核心 MCP 工具
|
|
605
|
+
- 实现核心连接池管理
|
|
606
|
+
- 实现加密存储功能
|
|
607
|
+
- 实现 SQL 执行器和监控功能
|
|
608
|
+
- 完整的单元测试覆盖
|
|
609
|
+
- 详细的文档和使用指南
|
|
610
|
+
|
|
611
|
+
## 技术支持
|
|
612
|
+
|
|
613
|
+
如有任何问题,请参考文档或提交 Issue。
|