Oracle数据库操作的Model Context Protocol (MCP)服务器实现
概述
Oracle MCP 服务器
一个专为 Oracle 数据库操作实现的模型上下文协议(MCP)服务器,基于spring-ai-mcp-server-webmvc-spring-boot-starter构建。该服务提供了一套通过MCP与Oracle数据库交互的工具集,利用服务器发送事件(SSE)实现实时通信。
功能特性
- 列出Oracle数据库中的所有表
- 描述表结构(列名、数据类型、约束条件)
- 执行SQL语句(SELECT、INSERT、UPDATE、DELETE)
- 安全的数据库连接管理
- 通过SSE实现实时通信
- 基于spring-ai-mcp-server-webmvc-spring-boot-starter构建
技术栈
核心依赖
- Spring Boot 3.2.0
- spring-ai-mcp-server-webmvc-spring-boot-starter
- Oracle JDBC驱动
- 模型上下文协议(MCP)框架
- Lombok
开发工具
- Java 17
- Maven 3.6+
- Spring Boot测试框架
- JUnit 5
快速开始
先决条件
- JDK 17
- Maven 3.6+
- Oracle数据库实例
- MCP服务器环境
- Cursor IDE
配置
1. 数据库配置
创建或修改application.properties或application.yml文件:
yaml
oracle:
connectionString: jdbc:oracle:thin:@//your-oracle-host:1521/your-service-name
username: your-username
password: your-password
2. Cursor MCP配置
在Cursor IDE中配置MCP服务器:
json
{
"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使用
项目构建
bash
mvn clean install
运行应用
bash
mvn spring-boot:run
API工具
1. 列表工具
- 名称:
list_tables - 描述:获取Oracle数据库中所有表的列表
- 用法:无需参数
- 返回:换行分隔的表名列表
2. 表结构描述工具
- 名称:
describe_table - 描述:获取指定表的结构信息
- 参数:
tableName- 要描述的表名 - 返回:表结构的CSV格式数据,包括:
- 列名
- 数据类型
- 可为空状态
- 数据长度
- 主键信息
3. SQL执行工具
- 名称:
execute_sql - 描述:执行Oracle SQL语句
- 参数:
sql- 要执行的SQL语句 - 返回:
- 对于SELECT:查询结果的CSV格式数据
- 对于INSERT/UPDATE/DELETE:受影响的行数
实现细节
架构
com.mcp.oracle/
├── config/
│ └── OracleConfig.java # 数据库配置
├── service/
│ └── OracleService.java # 核心服务实现
└── OracleApplication.java # 应用入口点
关键组件
-
OracleConfig
- 处理数据库连接配置
- 使用Spring的@ConfigurationProperties
- 安全的密码管理
-
OracleService
- 实现数据库操作的MCP工具
- 管理数据库连接
- 处理SQL执行和结果格式化
- 实现错误处理和日志记录
-
连接管理
- 使用Oracle连接池
- 实现资源的自动关闭
- 优雅处理连接错误
安全考虑
- 配置中的密码加密
- 连接池管理
- SQL注入防护
- 错误消息清理
测试
项目包含全面的单元测试:
bash
mvn test
测试覆盖范围包括:
- 数据库连接
- 表列表
- 表结构描述
- SQL执行
- 错误处理
错误处理
服务实现了健壮的错误处理机制:
- 连接失败
- 无效SQL语句
- 缺失的表/列
- 权限问题
贡献指南
- Fork代码仓库
- 创建特性分支
- 提交变更
- 推送分支
- 创建Pull Request
许可协议
本项目采用MIT许可协议 - 详见LICENSE文件。
支持
如需支持和提问,请在仓库中创建issue。

1panel
mcp-1panel 是为 1Panel 实现的 Model Context Protocol (MCP) 服务器。
Aact mcp
与AACT临床试验数据库集成,支持查询和分析大规模试验数据,适用于研究和医疗应用。
Abap Adt
一个服务器,它将模型上下文协议(MCP)与SAP ABAP系统连接起来,使像Cline这样的工具能够检索ABAP源代码、表结构和其他开发工件。
Adwords Mcp
一个令人尴尬的MCP服务器,向Cursor、Claude和其他客户端的开发者提供广告

