强化安全的多数据库支持 MCP 服务器 - 支持与 Cursor IDE 和 Claude 集成的 Model Context Protocol 服务器
这是一个应用了严格的安全策略的数据分析和可视化工具,支持 MySQL 和 PostgreSQL。
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
DB_TYPE=mysql
DB_HOST=localhost
DB_USER=readonly_user # 使用只读账户
DB_PASSWORD=your_password
DB_NAME=your_database
DB_CHARSET=utf8mb4
DB_PORT=3306
DB_TYPE=postgresql
DB_HOST=localhost
DB_USER=postgres
DB_PASSWORD=your_password
DB_NAME=your_database
DB_PORT= 5432
DB_SCHEMA=public
DB_TYPE=sqlite
DB_PATH=./database.sqlite
添加 MCP Server → 传输方式: stdio → 命令: 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"
}
}
}
}
此服务器应用了严格的安全部署:
详细的安全配置,请参阅 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() → 提供 Markdown 表格摘要
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() 装饰器注册git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)本项目在 MIT 许可证下发布。详情请参阅 LICENSE 文件。