Skip to main content
Glama
titan213

Oracle DB MCP Server

by titan213

Oracle DB MCP Server

A Model Context Protocol (MCP) server for Oracle Database connectivity. This server enables AI tools like Cursor, Claude Desktop, and other MCP-compatible clients to interact with Oracle databases.

Features

  • Multiple Database Connections: Configure and manage multiple named Oracle database connections

  • Thin & Thick Mode Support: Works with Oracle's thin driver (no client required) or thick mode (with Oracle Instant Client)

  • Query Execution: Execute SELECT queries with result formatting

  • DML Operations: Execute INSERT, UPDATE, DELETE with safety checks

  • PL/SQL Support: Execute PL/SQL blocks, create procedures/functions

  • Schema Browsing: List tables, views, procedures, describe table structures

  • Stored Procedures: Execute stored procedures with input/output parameters

  • Transaction Management: Commit and rollback support

  • Safety Features: Read-only mode, dangerous query detection, automatic warnings

Installation

No installation required. Configure your MCP client to run:

npx -y oracle-db-mcp

Local Installation

npm install -g oracle-db-mcp

Then run:

oracle-db-mcp

Configuration

Configuration File (connections.json)

Create a configuration file with your database connections:

{
  "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"
    }
  ]
}

Connection Options

Each connection supports:

Option

Description

name

Unique identifier for the connection

host

Database server hostname

port

Port number (default: 1521)

serviceName

Oracle service name

sid

Oracle SID (alternative to serviceName)

connectionString

Full connection string (alternative to host/port/service)

username

Database username

password

Database password (direct)

passwordEnv

Environment variable containing password

mode

readonly or readwrite

privilege

Optional privileged connect: SYSDBA or SYSOPER (requires server opt-in)

Configuration File Locations

The server searches for configuration in this order:

  1. ORACLE_MCP_CONFIG environment variable

  2. ./config/connections.json

  3. ./connections.json

  4. ~/.oracle-mcp/connections.json

Environment Variables

For simple single-connection setup:

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 Client Configuration

Cursor

Add to your Cursor MCP settings (.cursor/mcp.json):

{
  "mcpServers": {
    "oracle-db": {
      "command": "npx",
      "args": ["-y", "oracle-db-mcp"],
      "env": {
        "ORACLE_MCP_CONFIG": "/path/to/connections.json"
      }
    }
  }
}

Claude Desktop

Add to your Claude Desktop config:

{
  "mcpServers": {
    "oracle-db": {
      "command": "npx",
      "args": ["-y", "oracle-db-mcp"],
      "env": {
        "ORACLE_MCP_CONFIG": "/path/to/connections.json"
      }
    }
  }
}

Available Tools

Connection Management

Tool

Description

list_connections

List all configured connections with status

test_connection

Test connectivity and get database info

connect

Establish a connection

disconnect

Close a connection

Query Execution

Tool

Description

execute_query

Execute SELECT queries

execute_dml

Execute INSERT/UPDATE/DELETE

execute_plsql

Execute PL/SQL blocks or DDL

execute_procedure

Call stored procedures

Schema Browsing

Tool

Description

list_tables

List tables and views

describe_table

Get column, constraint, index info

list_procedures

List procedures, functions, packages

get_procedure_source

Get source code of PL/SQL objects

get_procedure_params

Get procedure parameters

explain_query

Get query execution plan

Transaction Management

Tool

Description

commit

Commit current transaction

rollback

Rollback current transaction

Safety Features

Read-Only Mode

Connections configured as readonly:

  • Block all DML operations (INSERT, UPDATE, DELETE)

  • Block PL/SQL execution

  • Allow only SELECT queries

Dangerous Query Detection

The server warns or blocks:

  • DROP statements

  • TRUNCATE statements

  • UPDATE/DELETE without WHERE clause

  • ALTER SYSTEM commands

Oracle Client Modes

Thin Mode (Default)

No Oracle client installation required. Works with:

  • Oracle Database 12.1 and later

  • Oracle Cloud databases

Thick Mode

Requires Oracle Instant Client. Enable in config:

{
  "oracleClient": {
    "mode": "thick",
    "path": "/path/to/instantclient"
  }
}

Required for:

  • Oracle Database versions before 12.1

  • Advanced features (LDAP, Kerberos, etc.)

  • Some data types (BFILE, etc.)

Development

Building from Source

git clone https://github.com/titan213/oracle-db-mcp
cd oracle-db-mcp
npm install
npm run build

Running in Development

npm run dev

Testing

npm test

License

MIT

Author

Gihan Sundarapperuma gihan213@gmail.com

-
security - not tested
A
license - permissive license
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/titan213/oracle-db-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server