使用说明
🗄️ MCP 数据库服务器
支持增强安全性的多数据库MCP服务器 - 可与Cursor IDE及Claude联动的Model Context Protocol服务器
支持MySQL,PostgreSQL 严格的安保政策是应用于数据库的分析及可视化工具。
✨ 主要功能
🔒(锁形符号,常用于表示安全、保密或锁定状态) 安全功能(NEW!)
- 强制只读模式 - 仅允许SELECT查询
- 防止SQL注入 - 批量执行句子及阻止禁用动词
- 标识符白名单 - 表/列名验证
- 强制参数绑定 - 安全执行查询
- MySQL/PostgreSQL 高风险功能禁用 - INTO OUTFILE, COPY 等
🎯(目标/靶心) 支持多数据库
- MySQL/MariaDB - 完全支持(加强安全性)
- PostgreSQL(通常直接以原名使用,不翻译) - 全面支持(加强安全)
- SQLite - 基本支持(准备中)
📊(图表/数据表格) 可视化工具
- 创建美人鱼ERD(实体关系图) - 将数据库模式转换为Mermaid图表
- Markdown表格摘要 - 将表格信息整理成清晰的表格
- ASCII性能图表 - 视觉化地展示表大小和索引效率
🔍(放大镜,用于搜索或查看细节) 分析功能
- 模式分析及查询
- 各表的统计信息
- 性能瓶颈检测
- 索引优化建议
- 查询执行计划分析
📦 安装
git clone <this-repo-url>
cd db-mcp-server
python -m venv venv
source venv/bin/activate # 또는 venv\Scripts\activate (Windows)
pip install -r requirements.txt
⚙️ 设置
🔒 安全设置(重要!)
在生产环境中,请务必应用以下设置:
# 읽기 전용 모드 강제
READ_ONLY=true
STRICT_READONLY=true
# 보안 강화된 데이터베이스 계정 사용
DB_USER=readonly_user
DB_PASSWORD=secure_password
环境变量设置
.env 创建文件并设置数据库信息:
cp .env.example .env
MySQL/MariaDB 配置(增强安全性)
DB_TYPE=mysql
DB_HOST=localhost
DB_USER=readonly_user # 읽기 전용 계정 사용
DB_PASSWORD=your_password
DB_NAME=your_database
DB_CHARSET=utf8mb4
DB_PORT=3306
PostgreSQL 配置
DB_TYPE=postgresql
DB_HOST=localhost
DB_USER=postgres
DB_PASSWORD=your_password
DB_NAME=your_database
DB_PORT=5432
DB_SCHEMA=public
SQLite设置
DB_TYPE=sqlite
DB_PATH=./database.sqlite
🚀 使用方法
Cursor IDE集成
MCP Server 添加 → Transport: stdio → Command: python main.py
环境变量单独设置:
{
"mcpServers": {
"db-mcp-server": {
"transport": "stdio",
"command": "/path/to/venv/bin/python",
"args": ["/path/to/db-mcp-server/main.py"],
"env": {
"DB_TYPE": "postgresql",
"DB_NAME": "your_db_name",
"DB_HOST": "localhost"
}
}
}
}
🔒 安全
安全政策
此服务器采用严格的安全策略:
- 只读模式仅允许SELECT查询
- 防止SQL注入多句执行及禁用动词阻断
- 标识符验证表/列名白名单验证
- 参数绑定所有用户输入均以安全方式处理
安全设置
详细的安全部署是 `SECURITY.md` 翻译为中文是“安全指南/声明文件”。这个文件通常用于说明项目或软件的安全相关事项,包括安全漏洞报告流程、安全最佳实践等请参考。
数据库账户权限
重要在生产环境中,请务必使用只读帐户:
-- MySQL 예시
CREATE USER 'mcp_readonly'@'%' IDENTIFIED BY 'secure_password';
GRANT SELECT ON your_database.* TO 'mcp_readonly'@'%';
-- PostgreSQL 예시
CREATE USER mcp_readonly WITH PASSWORD 'secure_password';
GRANT CONNECT ON DATABASE your_database TO mcp_readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO mcp_readonly;
🛠️ 可用的工具
📋 译文:清单/待办事项列表 模式工具
get_schema- 查看整个数据库架构get_table_stats- 各表的统计信息get_sample_data- 查看样本数据get_column_stats- 按列的详细统计
🔍 翻译为中文是:放大镜(用于查看细节或寻找特定内容的符号) 分析工具
execute_query- 安全执行只读查询explain_query- 查询执行计划分析optimize_query- 查询优化建议get_db_status- 数据库状态信息get_table_size- 各桌子的尺寸信息get_index_usage- 索引使用统计analyze_performance- 性能瓶颈分析suggest_indexes- 建议创建索引optimize_tables- 表优化建议
🎨(颜料、美术相关的表情符号,可理解为“绘画”或“美术创作”) 可视化工具
generate_schema_mermaid- 创建Mermaid ERD图表generate_tables_summary- Markdown表格总结generate_performance_report- 性能分析报告(含ASCII图表)
📊 使用示例
模式可视化
😊 사용자: "데이터베이스 스키마를 ERD로 보여줘"
🤖 AI: generate_schema_mermaid() 실행 → Mermaid 다이어그램 제공
性能分析
😊 사용자: "성능 문제가 있는지 분석해줘"
🤖 AI: analyze_performance() → generate_performance_report() 실행
→ ASCII 차트와 함께 상세한 성능 리포트 제공
桌面状态概要
😊 사용자: "테이블들 현황을 요약해줘"
🤖 AI: generate_tables_summary() 실행 → 마크다운 테이블 요약 제공
🏗️ 项目结构
db-mcp-server/
├── main.py # MCP 서버 메인 파일
├── .env.example # 환경변수 예시 파일
├── requirements.txt # Python 의존성
├── adapters/ # 데이터베이스 어댑터
│ ├── __init__.py
│ ├── base.py # 베이스 어댑터 클래스
│ ├── mysql.py # MySQL/MariaDB 어댑터
│ └── postgresql.py # PostgreSQL 어댑터
└── tools/ # MCP 도구 모듈
├── __init__.py
├── schema_tools.py # 스키마 관련 도구
├── analysis_tools.py # 분석 관련 도구
└── visualization_tools.py # 시각화 관련 도구
🚀 可扩展性
添加新数据库
adapters/在文件夹中创建新的适配器类DatabaseAdapter基类继承- 实现所需的方法
adapters/__init__.py添加到的工厂函数中
添加新工具
- 该类别的
tools/向模块中添加函数 @mcp.tool()注册为装饰师- 利用适配器的方法进行实现
📋 要求事项
- Python 3.8及以上版本
- 数据库:
- MySQL/MariaDB 5.7及以上版本
- PostgreSQL 12及以上版本
- SQLite 3.x
🤝 贡献/参与
- 为项目创建分支(或“克隆项目”)
- 创建你的特性分支
git checkout -b feature/AmazingFeature) - 提交您的更改(
git commit -m 'Add some AmazingFeature') - 推送至分支(
git push origin feature/AmazingFeature) - 提交一个拉取请求
📄 许可证
此项目遵循MIT许可协议。详情请参阅 LICENSE 请参阅文件。