数据库安全分析工具

MCP Database Server 是一个支持 MySQL 和 PostgreSQL 的安全强化数据库分析和可视化工具,提供多种安全功能和可视化工具。

  • by zerogon1203
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 zerogon1203/db-mcp-server

使用说明

🗄️ 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 # 시각화 관련 도구

🚀 可扩展性

添加新数据库

  1. adapters/ 在文件夹中创建新的适配器类
  2. DatabaseAdapter 基类继承
  3. 实现所需的方法
  4. adapters/__init__.py添加到的工厂函数中

添加新工具

  1. 该类别的 tools/ 向模块中添加函数
  2. @mcp.tool() 注册为装饰师
  3. 利用适配器的方法进行实现

📋 要求事项

  • Python 3.8及以上版本
  • 数据库:
    • MySQL/MariaDB 5.7及以上版本
    • PostgreSQL 12及以上版本
    • SQLite 3.x

🤝 贡献/参与

  1. 为项目创建分支(或“克隆项目”)
  2. 创建你的特性分支git checkout -b feature/AmazingFeature)
  3. 提交您的更改(git commit -m 'Add some AmazingFeature')
  4. 推送至分支(git push origin feature/AmazingFeature)
  5. 提交一个拉取请求

📄 许可证

此项目遵循MIT许可协议。详情请参阅 LICENSE 请参阅文件。