🚀 Oracle MCP 服务器
Oracle MCP 服务器是一个基于 spring-ai-mcp-server-webmvc-spring-boot-starter
实现的 Model Context Protocol (MCP) 服务,专门用于操作 Oracle 数据库。该服务提供了一系列实用工具,支持通过 MCP 协议与 Oracle 数据库进行交互,并借助 Server-Sent Events (SSE) 实现实时通信。
🚀 快速开始
先决条件
- JDK 17
- Maven 3.6+
- Oracle 数据库实例
- MCP 服务器环境
- Cursor IDE
配置
1. 数据库配置
创建或修改 application.properties
或 application.yml
,添加以下设置:
oracle:
connectionString: jdbc:oracle:thin:@//your-oracle-host:1521/your-service-name
username: your-username
password: your-password
2. Cursor MCP 配置
在你的 Cursor IDE 中配置 MCP 服务器设置:
{
"mcpServers": {
"oracle-mcp-server": {
"url": "http://{server-ip}:{server-port}/sse",
"enabled": true
}
}
}
此配置:
- 设置 MCP 服务器名称为 "oracle-mcp-server"
- 配置服务器 URL 为 "http://{server-ip}:{server-port}/sse"
- 替换 {server-ip} 为你服务器的 IP 地址
- 替换 {server-port} 为你服务器的端口号
- 启用 MCP 服务器以便在 Cursor 中使用
构建项目
mvn clean install
运行应用程序
mvn spring-boot:run
✨ 主要特性
- 列出 Oracle 数据库中的所有表
- 描述表结构(列、数据类型、约束)
- 执行 SQL 语句(SELECT, INSERT, UPDATE, DELETE)
- 安全的数据库连接管理
- 实时通信通过 SSE
- 基于 spring-ai-mcp-server-webmvc-spring-boot-starter 构建
📚 详细文档
API 工具
1. 列表表格工具
- 名称:
list_tables
- 描述:获取 Oracle 数据库中的所有表列表
- 使用方法:无需参数
- 返回值:换行分隔的表名列表
2. 描述表工具
- 名称:
describe_table
- 描述:获取指定表的结构信息
- 参数:
table_name
- 返回值:表的详细信息,包括列、数据类型和约束等
3. 执行 SQL 语句工具
- 名称:
execute_query
- 描述:执行任意的 SQL 查询或更新操作
- 参数:
query_string
- 返回值:查询结果集或操作状态
🔧 技术细节
技术栈
核心依赖
- Spring Boot 3.2.0
- spring-ai-mcp-server-webmvc-spring-boot-starter
- Oracle JDBC 驱动程序
- Model Context Protocol (MCP) 框架
- Lombok
开发工具
- Java 17
- Maven 3.6+
- Spring Boot 测试框架
- JUnit 5
实现细节
类结构
项目的核心代码位于 oracle-mcp-server/src/main/java
目录下,主要包括以下几个类:
OracleMCPHandler.java
:处理 MCP 协议的请求和响应
DatabaseManager.java
:管理数据库连接和操作
TableInfoCollector.java
:收集表结构信息
QueryExecutor.java
:执行 SQL 查询和更新
功能组件
-
MCP 请求处理:
- 解析 MCP 协议请求
- 验证请求合法性
- 调用相应功能模块处理
-
数据库连接管理:
- 建立与 Oracle 数据库的连接
- 管理连接池
- 处理连接生命周期
-
表结构信息收集:
-
SQL 执行引擎:
- 分析和执行 SQL 语句
- 处理结果集
- 管理事务和错误处理
安全考虑
- 数据库连接字符串使用加密存储
- 用户凭证进行安全哈希处理
- 访问控制列表(ACL)管理
- 日志记录所有敏感操作
- 防御 SQL 注入攻击
测试
项目提供完整的单元测试和集成测试套件,覆盖所有主要功能模块。测试用例包括:
- 数据库连接成功与失败情况
- 不同类型的 SQL 查询执行
- 表结构信息收集的准确性
- 安全机制的有效性
- 边界条件处理
错误处理
系统采用分层错误处理架构,包含以下功能:
- 请求验证和参数检查
- 异常捕获与封装
- 错误日志记录
- 用户友好的错误响应
- 事务回滚机制
📄 许可证
项目遵循 Apache License 2.0 协议,具体内容可在 LICENSE
文件中查看。
💡 使用建议
欢迎社区贡献代码或提出问题。请参考项目仓库中的 CONTRIBUTING.md
文件获取详细贡献流程。