Oracle DB MCP服务器
用于Oracle数据库连接的模型上下文协议(MCP)服务器。该服务器使Cursor、Claude Desktop和其他MCP兼容客户端等AI工具能够与Oracle数据库进行交互。
特性
- 多个数据库连接:配置和管理多个命名的Oracle数据库连接
- 薄模式和厚模式支持:适用于Oracle的瘦驱动程序(无需客户端)或胖模式(适用于Oracle Instant client)
- 查询执行:使用结果格式执行SELECT查询
- DML操作:执行INSERT、UPDATE、DELETE并进行安全检查
- PL/SQL支持:执行PL/SQL块,创建过程/函数
- 架构浏览:列出表、视图、过程,描述表结构
- 存储过程:使用输入/输出参数执行存储过程
- 事务管理:提交和回滚支持
- 安全特性:只读模式、危险查询检测、自动警告
安装
使用npx(推荐)
无需安装。配置您的MCP客户端以运行:
npx -y oracle-db-mcp本地安装
npm install -g oracle-db-mcp然后运行:
oracle-db-mcp配置
配置文件(connections.json)
使用数据库连接创建配置文件:
{
"oracleClient": {
"mode": "thin"
},
"settings": {
"defaultMaxRows": 100,
"queryTimeout": 30
},
"connections": [
{
"name": "dev",
"host": "dev-server.company.com",
"port": 1521,
"serviceName": "DEVDB",
"username": "dev_user",
"password": "dev_password",
"mode": "readwrite"
},
{
"name": "prod",
"host": "prod-server.company.com",
"port": 1521,
"serviceName": "PRODDB",
"username": "report_user",
"passwordEnv": "PROD_DB_PASSWORD",
"mode": "readonly"
}
]
}连接选项
每个连接支持:
| 选项 | 描述 |
|---|---|
name | 连接的唯一标识符 |
host | 数据库服务器主机名 |
port | 端口号(默认值:1521) |
serviceName | Oracle服务名称 |
sid | Oracle SID(服务名称的替代) |
connectionString | 完整连接字符串(主机/端口/服务的替代方案) |
username | 数据库用户名 |
password | 数据库密码(直接) |
passwordEnv | 包含密码的环境变量 |
mode | readonly 或 readwrite |
privilege | 可选特权连接: SYSDBA 或 SYSOPER (需要服务器选择加入) |
配置文件位置
服务器按以下顺序搜索配置:
ORACLE_MCP_CONFIG环境变量./config/connections.json./connections.json~/.oracle-mcp/connections.json
环境变量
对于简单的单连接设置:
export ORACLE_CONNECTION_NAME=mydb
export ORACLE_HOST=localhost
export ORACLE_PORT=1521
export ORACLE_SERVICE=XEPDB1
export ORACLE_USER=scott
export ORACLE_PASSWORD=tiger
export ORACLE_MODE=readonly
# Opt-in to allow privileged connects (SYSDBA/SYSOPER). Default: false
export ORACLE_ALLOW_SYSDBA=false
# For privileged connection (if enabled):
export ORACLE_PRIVILEGE=SYSDBAMCP客户端配置
光标
添加到光标MCP设置(.cursor/mcp.json):
{
"mcpServers": {
"oracle-db": {
"command": "npx",
"args": ["-y", "oracle-db-mcp"],
"env": {
"ORACLE_MCP_CONFIG": "/path/to/connections.json"
}
}
}
}克劳德桌面
添加到您的Claude Desktop配置中:
{
"mcpServers": {
"oracle-db": {
"command": "npx",
"args": ["-y", "oracle-db-mcp"],
"env": {
"ORACLE_MCP_CONFIG": "/path/to/connections.json"
}
}
}
}可用工具
连接管理
| 工具 | 说明 |
|---|---|
list_connections | 列出所有已配置的连接及其状态 |
test_connection | 测试连接并获取数据库信息 |
connect | 建立连接 |
disconnect | 关闭连接 |
查询执行
| 工具 | 说明 |
|---|---|
execute_query | 执行SELECT查询 |
execute_dml | 执行插入/更新/删除 |
execute_plsql | 执行PL/SQL块或DDL |
execute_procedure | 调用存储过程 |
架构浏览
| 工具 | 说明 |
|---|---|
list_tables | 列出表和视图 |
describe_table | 获取列、约束、索引信息 |
list_procedures | 列出程序、函数、包 |
get_procedure_source | 获取PL/SQL对象的源代码 |
get_procedure_params | 获取程序参数 |
explain_query | 获取查询执行计划 |
事务管理
| 工具 | 说明 |
|---|---|
commit | 提交当前交易 |
rollback | 回滚当前交易 |
安全特性
只读模式
连接配置为 readonly:
- 阻止所有DML操作(INSERT、UPDATE、DELETE)
- 阻止PL/SQL执行
- 只允许SELECT查询
危险查询检测
服务器发出警告或阻止:
- DROP语句
- TRUNCATE声明
- 不带WHERE子句的更新/删除
- ALTER SYSTEM命令
Oracle客户端模式
精简模式(默认)
无需安装Oracle客户端。适用于:
- Oracle数据库12.1及更高版本
- Oracle云数据库
厚模式
需要Oracle即时客户端。在配置中启用:
{
"oracleClient": {
"mode": "thick",
"path": "/path/to/instantclient"
}
}需要:
- 12.1之前的Oracle数据库版本
- 高级功能(LDAP、Kerberos等)
- 某些数据类型(BFILE等)
发展
从源头构建
git clone https://github.com/titan213/oracle-db-mcp
cd oracle-db-mcp
npm install
npm run build在发展中奔跑
npm run dev测试
npm test许可证
麻省理工学院
作者
吉汗·桑达拉佩鲁马
