Oracle数据库查询服务

Oracle MCP Server是一个用于查询Oracle学校管理数据库的模型上下文协议服务器,提供数据库连接、查询和执行自定义SQL等功能。

  • by doanthaibao
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 doanthaibao/oracle_mcp

使用说明

Oracle MCP服务器

用于查询Oracle学校管理数据库的模型上下文协议(MCP)服务器。

特性

  • 连接到Oracle数据库
  • 查询所有表:教师、科目、班级、学生、注册人数、课程
  • 执行自定义SQL查询
  • 查看数据库架构信息

安装

先决条件

  1. Python 3.8或更高版本
  2. Oracle即时客户端 -从下载并安装 Oracle网站
    • 提取到目录(例如。, /opt/oracle/instantclient_21_1)
    • 集 LD_LIBRARY_PATH 环境变量:
      export LD_LIBRARY_PATH=/opt/oracle/instantclient_21_1:$LD_LIBRARY_PATH
      
    • 或使用 oracledb.init_oracle_client() 在代码中(请参阅Oracle文档)

再进行

重要提示: 这个项目使用Python虚拟环境来避免与系统包的冲突。

  1. 创建虚拟环境:

    python3 -m venv venv
    
  2. 激活虚拟环境:

    # On Linux/macOS:
    source venv/bin/activate
    
    # On Windows:
    venv\Scripts\activate
    
  3. 安装依赖项:

    pip install -r requirements.txt
    

    备选方案: 使用执行上述所有操作的安装脚本:

    ./setup.sh
    

配置数据库连接

  1. 复制示例配置文件:

    cp config.example.env .env
    
  2. 编辑 .env 使用您的数据库凭据:

    ORACLE_USER=your_username
    ORACLE_PASSWORD=your_password
    ORACLE_HOST=localhost
    ORACLE_PORT=1521
    ORACLE_SERVICE_NAME=XE
    
  3. 测试连接(确保虚拟环境已激活):

    source venv/bin/activate  # if not already activated
    python test_connection.py
    

配置

创建一个 .env 项目根目录中的文件:

ORACLE_USER=your_username
ORACLE_PASSWORD=your_password
ORACLE_HOST=localhost
ORACLE_PORT=1521
ORACLE_SERVICE_NAME=your_service_name
# OR use ORACLE_CONNECTION_STRING instead:
# ORACLE_CONNECTION_STRING=your_username/your_password@host:port/service_name

用法

运行服务器

重要提示: 始终先激活虚拟环境:

source venv/bin/activate  # On Linux/macOS
# or
venv\Scripts\activate     # On Windows

MCP服务器通过stdio进行通信,因此它通常由MCP客户端启动:

python src/server.py

对于测试,您可以直接运行它,但它需要stdin上的MCP协议消息。

测试连接

在使用MCP服务器之前,请测试您的数据库连接(虚拟环境已激活):

source venv/bin/activate  # if not already activated
python test_connection.py

这将验证:

  • 数据库连接
  • 基本表访问
  • 样本数据检索

MCP工具

服务器提供以下工具:

  • query_database -执行自定义SQL查询
  • get_teachers -获取所有教师或按条件搜索
  • get_students -获取所有学生或按条件搜索
  • get_classes -获取所有课程或按学年/学期筛选
  • get_subjects -获取所有科目
  • get_enrollments -获取学生或班级的注册信息
  • get_lessons -获取课程或日期范围
  • get_student_schedule -获取学生的完整时间表

Docker部署

该项目包括Docker支持,便于部署。看 医生.md 详细说明。

Docker快速入门:

# Build without Oracle Instant Client (uses thin mode)
./docker-build.sh oracle-mcp-server

# Or use docker-compose
docker-compose up --build

连接到Cursor IDE

要将此MCP服务器连接到Cursor IDE,请参阅 CURSOR_SETUP.md 详细说明。

快速设置:

  1. 确保Docker容器正在运行: docker-compose up -d
  2. 将MCP服务器配置添加到Cursor的设置中(请参阅 cursor-config.json 供参考)
  3. 重新启动Cursor以加载MCP服务器

数据库模式

服务器连接到具有以下表的学校管理数据库:

  • teachers -教师信息
  • subjects -科目/课程信息
  • classes -课堂实例(教师+学科+学期)
  • students -学生信息
  • enrollments -学生班级注册
  • lessons -课程/时间表条目