Oracle数据库LLM交互服务器

一个连接Oracle数据库的模型上下文协议(MCP)服务器,允许LLM模型与数据库交互并检索数据。

  • by bharathRathod23
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 bharathRathod23/ORACLE-MCP-SERVER

使用说明

Oracle MCP服务器

连接到Oracle数据库的模型上下文协议(MCP)服务器,允许LLM模型与数据库交互并检索数据。

特性

  • 对Oracle数据库执行SQL查询
  • 描述表模式
  • 列出可用表格
  • 安全连接管理
  • 可配置的数据库连接

先决条件

  • Node.js 18+
  • Docker桌面(用于本地Oracle数据库设置)
  • 已安装Oracle即时客户端或Oracle数据库客户端
  • 访问Oracle数据库

设置本地Oracle数据库

快速设置(推荐)

我们提供了一个使用Docker快速安装Oracle数据库速成版的安装脚本:

  1. 安装Docker桌面 (如果尚未安装):

    • 下载地址:https://www.docker.com/products/docker-desktop/
    • 安装并启动Docker桌面
  2. 运行安装脚本:

    chmod +x setup-oracle-db.sh
    ./setup-oracle-db.sh
    

    此脚本将:

    • 检查Docker安装
    • 拉取Oracle数据库速成版映像
    • 创建并启动一个名为的容器 oracle-xe
    • 等待数据库准备就绪
  3. 默认连接详细信息 (设置后):

    • 主持人: localhost
    • 端口: 1521
    • 服务名称: XEPDB1
    • 用户名: system
    • 密码: Oracle18
  4. 更新您的 .env 文件:

    ORACLE_USER=system
    ORACLE_PASSWORD=Oracle18
    ORACLE_HOST=localhost
    ORACLE_PORT=1521
    ORACLE_SERVICE_NAME=XEPDB1
    

手动Docker设置

如果您更喜欢手动设置:

# Pull Oracle XE image (community-maintained, no login required)
docker pull gvenzl/oracle-xe:21-slim

# Create and start container
docker run -d \
  --name oracle-xe \
  -p 1521:1521 \
  -e ORACLE_PASSWORD=Oracle18 \
  -e ORACLE_DATABASE=XE \
  gvenzl/oracle-xe:21-slim

注: 这使用了一个社区维护的映像,不需要Oracle登录或许可证接受。

Docker命令

# Start database
docker start oracle-xe

# Stop database
docker stop oracle-xe

# View logs
docker logs oracle-xe

# Remove container (stops and deletes)
docker stop oracle-xe && docker rm oracle-xe

安装Oracle客户端

macOS:

# Using Homebrew
brew install instantclient-basic instantclient-sdk

# Or download from Oracle website
# https://www.oracle.com/database/technologies/instant-client/downloads.html

Linux:

# Download Oracle Instant Client from Oracle website
# Extract and set LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/path/to/instantclient_21_1:$LD_LIBRARY_PATH

窗户:

  • 从Oracle网站下载Oracle即时客户端
  • 提取到一个目录并添加到PATH

安装

  1. 克隆或创建项目目录
  2. 安装依赖项:
npm install
  1. 通过复制配置数据库连接 .env.example 到 .env:
cp .env.example.example .env.example
  1. 编辑 .env 使用您的Oracle数据库凭据:
ORACLE_USER=your_username
ORACLE_PASSWORD=your_password
ORACLE_HOST=localhost
ORACLE_PORT=1521
ORACLE_SERVICE_NAME=XEPDB1

建筑

npm run build

用法

运行服务器

npm start

或者用于自动重新加载的开发:

npm run dev

从MCP客户端连接

服务器通过stdio进行通信。配置您的MCP客户端(如Claude Desktop)以使用此服务器:

Claude桌面配置 (~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):

{
  "mcpServers": {
    "oracle-db": {
      "command": "node",
      "args": ["/absolute/path/to/ORACLE-MCP-SERVER/dist/index.js"]
    }
  }
}

可用工具

1. execute_query

对Oracle数据库执行SQL查询。

参数:

  • query (必填):SQL查询字符串
  • limit (可选):要返回的最大行数(默认值:100)

例子:

{
  "name": "execute_query",
  "arguments": {
    "query": "SELECT * FROM employees WHERE department = 'IT'",
    "limit": 50
  }
}

2. describe_table

获取数据库表的架构/结构。

参数:

  • tableName (必填):表格名称
  • schema (可选):架构名称(默认为当前用户)

例子:

{
  "name": "describe_table",
  "arguments": {
    "tableName": "employees",
    "schema": "HR"
  }
}

3. list_tables

列出数据库或特定架构中的所有表。

参数:

  • schema (可选):用于筛选表的架构名称

例子:

{
  "name": "list_tables",
  "arguments": {
    "schema": "HR"
  }
}

安全注意事项

  1. 数据库用户权限:使用具有最低所需权限的数据库用户(查询时最好是只读的)
  2. 环境变量:从不承诺 .env 文件到版本控制
  3. 查询限制:服务器自动限制查询结果,以防止过度的数据检索
  4. 生产使用:考虑使用只读副本或专用数据库进行LLM访问

故障排除

连接问题

  • 验证Oracle客户端是否已安装且可访问
  • 检查中的数据库凭据 .env
  • 确保数据库可以从您的网络访问
  • 检查防火墙设置

未找到模块错误

  • 跑 npm install 安装依赖项
  • 确保您已使用以下工具构建了项目 npm run build

许可证

麻省理工学院