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.
@@ -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。