2
最近更新:8个月前

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.propertiesapplication.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        # 应用入口点

关键组件

  1. OracleConfig

    • 处理数据库连接配置
    • 使用Spring的@ConfigurationProperties
    • 安全的密码管理
  2. OracleService

    • 实现数据库操作的MCP工具
    • 管理数据库连接
    • 处理SQL执行和结果格式化
    • 实现错误处理和日志记录
  3. 连接管理

    • 使用Oracle连接池
    • 实现资源的自动关闭
    • 优雅处理连接错误

安全考虑

  • 配置中的密码加密
  • 连接池管理
  • SQL注入防护
  • 错误消息清理

测试

项目包含全面的单元测试:

bash 复制代码
mvn test

测试覆盖范围包括:

  • 数据库连接
  • 表列表
  • 表结构描述
  • SQL执行
  • 错误处理

错误处理

服务实现了健壮的错误处理机制:

  • 连接失败
  • 无效SQL语句
  • 缺失的表/列
  • 权限问题

贡献指南

  1. Fork代码仓库
  2. 创建特性分支
  3. 提交变更
  4. 推送分支
  5. 创建Pull Request

许可协议

本项目采用MIT许可协议 - 详见LICENSE文件。

支持

如需支持和提问,请在仓库中创建issue。