使用说明
Oracle MCP服务器
连接到Oracle数据库的模型上下文协议(MCP)服务器,允许LLM模型与数据库交互并检索数据。
特性
- 对Oracle数据库执行SQL查询
- 描述表模式
- 列出可用表格
- 安全连接管理
- 可配置的数据库连接
先决条件
- Node.js 18+
- Docker桌面(用于本地Oracle数据库设置)
- 已安装Oracle即时客户端或Oracle数据库客户端
- 访问Oracle数据库
设置本地Oracle数据库
快速设置(推荐)
我们提供了一个使用Docker快速安装Oracle数据库速成版的安装脚本:
-
安装Docker桌面 (如果尚未安装):
- 下载地址:https://www.docker.com/products/docker-desktop/
- 安装并启动Docker桌面
-
运行安装脚本:
chmod +x setup-oracle-db.sh ./setup-oracle-db.sh此脚本将:
- 检查Docker安装
- 拉取Oracle数据库速成版映像
- 创建并启动一个名为的容器
oracle-xe - 等待数据库准备就绪
-
默认连接详细信息 (设置后):
- 主持人:
localhost - 端口:
1521 - 服务名称:
XEPDB1 - 用户名:
system - 密码:
Oracle18
- 主持人:
-
更新您的
.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
安装
- 克隆或创建项目目录
- 安装依赖项:
npm install
- 通过复制配置数据库连接
.env.example到.env:
cp .env.example.example .env.example
- 编辑
.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"
}
}
安全注意事项
- 数据库用户权限:使用具有最低所需权限的数据库用户(查询时最好是只读的)
- 环境变量:从不承诺
.env文件到版本控制 - 查询限制:服务器自动限制查询结果,以防止过度的数据检索
- 生产使用:考虑使用只读副本或专用数据库进行LLM访问
故障排除
连接问题
- 验证Oracle客户端是否已安装且可访问
- 检查中的数据库凭据
.env - 确保数据库可以从您的网络访问
- 检查防火墙设置
未找到模块错误
- 跑
npm install安装依赖项 - 确保您已使用以下工具构建了项目
npm run build
许可证
麻省理工学院