HuangHaohang/mcp-database-server
If you are the rightful owner of mcp-database-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
Database MCP Server is a Java Spring Boot-based server that provides database access capabilities to AI models through the Model Context Protocol (MCP).
Database MCP Server
一个基于 Java Spring Boot 的数据库 MCP (Model Context Protocol) 服务器,为 AI 模型提供数据库访问能力。
🚀 项目简介
Database MCP Server 是一个实现了 MCP 协议的数据库访问服务器,允许 AI 模型通过标准化的接口安全地访问和操作数据库。
核心特性
- 🔐 安全访问: 内置 SQL 注入防护和危险操作检测
- 🌐 WebSocket 支持: 实时双向通信
- 🛠️ 多种工具: 提供 SQL 执行、表结构查询等工具
- 📊 元数据访问: 支持数据库架构和统计信息查询
- 🔧 REST API: 提供完整的管理接口
- 📈 性能优化: 内置查询优化和索引建议
🏗️ 技术架构
- Java 11: 现代 Java 特性
- Spring Boot 3.3.6: 微服务框架
- Spring Data JPA: 数据访问层
- WebSocket: 实时通信
- MySQL: 数据库支持
- Maven: 项目构建
📦 项目结构
mcp-database-server/
├── src/main/java/com/hhh/mcp/
│ ├── McpDatabaseServerApplication.java # 主启动类
│ ├── config/
│ │ └── WebSocketConfig.java # WebSocket 配置
│ ├── controller/
│ │ └── McpController.java # REST API 控制器
│ ├── entity/
│ │ └── DatabaseConnection.java # 数据库连接实体
│ ├── protocol/
│ │ ├── McpMessage.java # MCP 消息协议
│ │ └── McpError.java # MCP 错误定义
│ ├── repository/
│ │ └── DatabaseConnectionRepository.java # 数据访问层
│ ├── service/
│ │ ├── DatabaseService.java # 数据库服务
│ │ └── McpService.java # MCP 协议服务
│ ├── util/
│ │ ├── SqlUtils.java # SQL 工具类
│ │ └── DatabaseUtils.java # 数据库工具类
│ └── websocket/
│ └── McpWebSocketHandler.java # WebSocket 处理器
├── src/main/resources/
│ └── application.yml # 应用配置
└── pom.xml # Maven 配置
🛠️ 安装和配置
1. 环境要求
- Java 11 或更高版本
- Maven 3.6+
- MySQL 8.0+
2. 数据库配置
修改 src/main/resources/application.yml 中的数据库连接信息:
spring:
datasource:
url: jdbc:mysql://localhost:3306/mcp_database?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: your_username
password: your_password
driver-class-name: com.mysql.cj.jdbc.Driver
3. 编译和运行
# 编译项目
mvn clean compile
# 运行项目
mvn spring-boot:run
服务器将在 http://localhost:8080 启动。
🔌 MCP 协议接口
WebSocket 连接
连接地址: ws://localhost:8080/mcp
支持的工具 (Tools)
-
execute_sql - 执行 SQL 语句
{ "name": "execute_sql", "arguments": { "sql": "SELECT * FROM users LIMIT 10", "params": ["param1", "param2"] } } -
list_databases - 列出所有数据库
{ "name": "list_databases", "arguments": {} } -
list_tables - 列出指定数据库的表
{ "name": "list_tables", "arguments": { "database": "test_db" } } -
describe_table - 获取表结构
{ "name": "describe_table", "arguments": { "database": "test_db", "table": "users" } } -
show_indexes - 显示表索引
{ "name": "show_indexes", "arguments": { "database": "test_db", "table": "users" } }
支持的资源 (Resources)
- database://schema - 数据库完整架构
- database://status - 数据库连接状态
🌐 REST API
服务器状态
GET /api/mcp/status- 获取服务器状态
数据库连接管理
GET /api/mcp/connections- 获取所有连接POST /api/mcp/connections- 创建新连接PUT /api/mcp/connections/{id}- 更新连接DELETE /api/mcp/connections/{id}- 删除连接POST /api/mcp/connections/{id}/test- 测试连接
SQL 执行
POST /api/mcp/sql/execute- 执行 SQL 语句
数据库信息
GET /api/mcp/databases- 获取数据库列表GET /api/mcp/databases/{db}/tables- 获取表列表GET /api/mcp/databases/{db}/tables/{table}/structure- 获取表结构
🔒 安全特性
SQL 注入防护
- 参数化查询
- 危险操作检测
- SQL 语法验证
访问控制
- 禁止无条件 DELETE/UPDATE
- 禁止 DROP/TRUNCATE 操作
- 查询结果限制
错误处理
- 详细的错误信息
- 安全的错误响应
- 操作日志记录
📊 监控和日志
应用监控
服务器提供详细的运行状态信息,包括:
- 连接池状态
- 查询执行统计
- 错误率监控
日志配置
logging:
level:
com.hhh.mcp: INFO
org.springframework.web.socket: DEBUG
🧪 测试
单元测试
mvn test
集成测试
mvn integration-test
WebSocket 测试
可以使用 WebSocket 客户端工具连接到 ws://localhost:8080/mcp 进行测试。
🚀 部署
Docker 部署
FROM openjdk:11-jre-slim
COPY target/mcp-database-server-1.0.0.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]
生产环境配置
server:
port: 8080
spring:
profiles:
active: prod
datasource:
hikari:
maximum-pool-size: 20
minimum-idle: 5
connection-timeout: 30000
🤝 贡献指南
- Fork 项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开 Pull Request
📄 许可证
本项目采用 MIT 许可证 - 查看 文件了解详情。
🆘 支持
如果您遇到问题或有疑问,请:
- 查看 Issues 页面
- 创建新的 Issue 描述问题
- 联系维护者
🔄 更新日志
v1.0.0 (2024-01-XX)
- 初始版本发布
- 实现基础 MCP 协议支持
- 添加数据库连接管理
- 提供 REST API 接口
- 实现安全防护机制
注意: 这是一个教学项目,用于演示如何构建 MCP 服务器。在生产环境中使用前,请确保进行充分的安全测试和配置。