Oracle MCP Server
Oracle MCP Server
A Model Context Protocol (MCP) server for Oracle with two layers:
generic Oracle query/introspection tools
a backend-owned Lab control-plane mirror that reproduces the Notion Lab dispatch/return loop on Oracle tables
Features
Execute SQL queries with parameter binding
List tables across multiple schemas or filter by specific schema
Describe table structures with multi-schema support
View indexes and constraints across schemas
Check Lab control-plane gates and build dispatch packets from backend state
Stamp dispatch consumption, ingest execution returns, and create writers-room scene items
Bootstrap the same Lab mirror on Oracle or PostgreSQL using the included DDL
Multiple Oracle authentication methods
Automatic parameter conversion (PostgreSQL style to Oracle)
SQL injection prevention via bind variables
Audit logging for security monitoring
Installation
npm installConfiguration
Environment Variables
Create a .env file with your Oracle connection details. Choose one of these methods:
Method 1: Easy Connect String
ORACLE_CONNECTION_STRING=hostname:1521/service_name
ORACLE_USER=your_username
ORACLE_PASSWORD=your_passwordMethod 2: TNS Name
ORACLE_TNS_NAME=ORCL
ORACLE_USER=your_username
ORACLE_PASSWORD=your_passwordMethod 3: Individual Components
ORACLE_HOST=localhost
ORACLE_PORT=1521
ORACLE_SERVICE_NAME=ORCL # or ORACLE_SID=ORCL
ORACLE_USER=your_username
ORACLE_PASSWORD=your_passwordOptional settings:
ORACLE_DEFAULT_SCHEMA=HR # Default schema if different from userUsage with Claude Desktop
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"oracle": {
"command": "node",
"args": ["/path/to/oracle-mcp/src/index.js"],
"env": {
"ORACLE_CONNECTION_STRING": "hostname:1521/service_name",
"ORACLE_USER": "your_username",
"ORACLE_PASSWORD": "your_password"
}
}
}
}Alternatively, use npx if you publish the package:
{
"mcpServers": {
"oracle": {
"command": "npx",
"args": ["-y", "oracle-mcp-server"],
"env": {
"ORACLE_CONNECTION_STRING": "hostname:1521/service_name",
"ORACLE_USER": "your_username",
"ORACLE_PASSWORD": "your_password"
}
}
}
}Usage with Claude Code
For Claude Code, add to ~/.claude.json:
{
"mcpServers": {
"oracle": {
"type": "stdio",
"command": "node",
"args": ["/path/to/oracle-mcp/src/index.js"],
"env": {
"ORACLE_CONNECTION_STRING": "hostname:1521/service_name",
"ORACLE_USER": "your_username",
"ORACLE_PASSWORD": "your_password"
}
}
}
}After updating the configuration, restart Claude Desktop or Claude Code.
Available Tools
execute_query - Execute any SQL query
Supports parameter binding
Auto-converts PostgreSQL-style parameters ($1) to Oracle (:1)
Returns rows, rowCount, and metadata
list_tables - List database tables
Filter by specific schema or show all accessible schemas
Filter by pattern (with % wildcards)
Shows schema name, table name, row count, and last analyzed date
describe_table - Get table structure
Column names, types, sizes
Nullable constraints
Default values
Works across all accessible schemas or filter by specific schema
get_table_indexes - View table indexes
Index types and uniqueness
Indexed columns
Status information
Shows schema name for each index
get_table_constraints - View table constraints
Primary keys, foreign keys
Unique and check constraints
Referenced tables
Shows schema name for each constraint
list_schemas - List all accessible schemas
check_gates - Read
lab_control+lab_work_itemsand enforce Pre-Flight / cascade-depth gatesget_dispatchable_items - List backend-owned Lab work items ready for dispatch
build_dispatch_packet - Validate a work item and produce an execution packet
stamp_dispatch_consumed - Accept ownership of a dispatch run
fail_dispatch_preflight - Revert a failed preflight and restore a dispatch-ready state
handle_final_return - Ingest a structured execution result into backend state
dispatch_scene - Create a writers-room scene item and fire its entry signal
Lab Mirror Bootstrap
Oracle DDL:
sqlplus user/password@db @sql/oracle/lab_control_plane.sqlPostgreSQL DDL:
psql "$DATABASE_URL" -f sql/postgres/lab_control_plane.sqlThe mirror includes:
lab_projectslab_work_itemslab_controllab_agent_registrylab_scene_itemslab_domain_eventslab_outbox_eventsnotion_projection_statelab_audit_loglab_telemetrylab_evidence_dossier
See docs/lab-backend-mirror.md for the backend ownership model and event flow.
Security
All queries use bind variables to prevent SQL injection
Connections are created per-query (no persistent pools)
Comprehensive audit logging with timestamps and duration
Environment variables keep credentials secure
Supports both read-only and read-write operations
Requirements
Node.js 18+
Oracle Database (any version)
Network access to Oracle database
License
MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/git-scarrow/oracle-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server