Oracle数据库连接协议服务器

Oracle数据库连接协议(MCP)服务器,支持AI工具和MCP兼容客户端与Oracle数据库交互,提供多种数据库操作功能。

  • by titan213
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 titan213/oracle-db-mcp

使用说明

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 (需要服务器选择加入)

配置文件位置

服务器按以下顺序搜索配置:

  1. ORACLE_MCP_CONFIG 环境变量
  2. ./config/connections.json
  3. ./connections.json
  4. ~/.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=SYSDBA

MCP客户端配置

光标

添加到光标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

许可证

麻省理工学院

作者

吉汗·桑达拉佩鲁马 gihan213@gmail.com