MCP Oracle Database Server

by gcorroto

Not rated
GitHub

About

A server for full integration with Oracle Database. Requires Oracle Instant Client libraries.

Details

Author
gcorroto
Categories
Database, Other

Setup

Install MCP Oracle Database Server in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/gcorroto/mcp-oracle-db

Follow the installation instructions in the repository README, then restart your MCP client.

Servidor MCP (Model Context Protocol) para integración completa con Oracle Database. Permite ejecutar consultas SQL, comandos DDL/DML, gestionar transacciones y explorar la estructura de la base de datos directamente desde aplicaciones MCP.

- Consultas SQL: Ejecuta SELECT con formateo inteligente de resultados
- Comandos DML/DDL: INSERT, UPDATE, DELETE, CREATE, ALTER, DROP, etc.
- Gestión de Transacciones: Soporte para transacciones manuales y automáticas
- Exploración de BD: Lista tablas, describe estructuras, explora esquemas
- Pool de Conexiones: Gestión eficiente de conexiones con Oracle
- Compatibilidad: Soporte para versiones antiguas de Oracle (pre-12c)
- Monitoreo: Health checks y estadísticas de conexión

Verifica el estado de salud de la conexión Oracle DB.

Ejecuta consultas SQL SELECT con formato de tabla o JSON.

- Parámetros:sql,maxRows,formatAsTable,showMetadata

Ejecuta comandos SQL (INSERT, UPDATE, DELETE, CREATE, etc.).

- Parámetros:sql,autoCommit,showDetails

Lista todas las tablas del esquema especificado.

Muestra la estructura completa de una tabla.

- Parámetros:tableName,owner,showDetails

Ejecuta múltiples comandos SQL en una transacción.

Muestra información de configuración de la conexión.

⚠️IMPORTANTE: Para Oracle 9g y versiones antiguas

Si está usando Oracle 9g o versiones anteriores, debe realizar estos pasos adicionales:
- Descargar Oracle Instant Client 19.26(obligatorio para Oracle 9g):

- Windows:instantclient-basic-windows.x64-19.26.0.0.0dbru.zip
- Extraer a una carpeta (ej:C:\oracle\instantclient_19_26)
- Configurar la ruta:

ORACLE_CLIENT_LIB_DIR=C:\oracle\instantclient_19_26
{ "mcpServers": { "oracle-db": { "command": "npx", "args": ["@grec0/mcp-oracle-db"], "env": { "ORACLE_HOST": "tu-host-oracle", "ORACLE_PORT": "1521", "ORACLE_SERVICE_NAME": "tu-servicio", "ORACLE_USERNAME": "usuario", "ORACLE_PASSWORD": "contraseña", "ORACLE_OLD_CRYPTO": "true", "ORACLE_CLIENT_LIB_DIR": "C:\\oracle\\instantclient_19_26" } } } }

Instalación General MCP EN LOCAL (NO RECOMENDADO)

cp config.example.env .env # Editar .env con la configuración de su base de datos

Configuración MCP en Aplicaciones USANDO NPX (RECOMENDADO)

- Windows:%APPDATA%\Claude\claude_desktop_config.json
- macOS:~/Library/Application Support/Claude/claude_desktop_config.json
- Linux:~/.config/claude/claude_desktop_config.json

Configuración para Oracle 9g (con Instant Client 19.26):

{ "mcpServers": { "oracle-db": { "command": "npx", "args": ["@grec0/mcp-oracle-db"], "env": { "ORACLE_HOST": "tu-host-oracle", "ORACLE_PORT": "1521", "ORACLE_SERVICE_NAME": "tu-servicio", "ORACLE_USERNAME": "usuario", "ORACLE_PASSWORD": "contraseña", "ORACLE_OLD_CRYPTO": "true", "ORACLE_CLIENT_LIB_DIR": "C:\\oracle\\instantclient_19_26" } } } }

Configuración para Oracle 12c o superior:

{ "mcpServers": { "oracle-db": { "command": "npx", "args": ["@grec0/mcp-oracle-db"], "env": { "ORACLE_HOST": "host", "ORACLE_PORT": "port", "ORACLE_SERVICE_NAME": "service", "ORACLE_USERNAME": "user", "ORACLE_PASSWORD": "password" } } } }
{ "mcpServers": { "oracle-db": { "command": "node", "args": ["C:/workspaces/mcps/mcp-oracle-db/dist/index.js"], "env": { "ORACLE_HOST": "host", "ORACLE_PORT": "post", "ORACLE_SERVICE_NAME": "service", "ORACLE_USERNAME": "user", "ORACLE_PASSWORD": "pass", "ORACLE_OLD_CRYPTO": "true" } } } }
{ "mcpServers": { "oracle-db": { "command": "npm", "args": ["run", "dev"], "cwd": "C:/workspaces/mcps/mcp-oracle-db", "env": { "ORACLE_HOST": "localhost", "ORACLE_PORT": "1521", "ORACLE_SERVICE_NAME": "XE", "ORACLE_USERNAME": "hr", "ORACLE_PASSWORD": "hr" } } } }

Después de configurar el MCP, puedes verificar que funciona correctamente:
- Reiniciar la aplicación(Claude Desktop, etc.)
- Usar herramienta de diagnóstico:

oracle_health_check()
oracle_query("SELECT 1 FROM DUAL")
# Configuración básica ORACLE_HOST=localhost ORACLE_PORT=1521 ORACLE_SERVICE_NAME=XE ORACLE_USERNAME=hr ORACLE_PASSWORD=hr # O usar connection string completo ORACLE_CONNECTION_STRING="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XE)))" # Para versiones antiguas de Oracle (pre-11g) ORACLE_OLD_CRYPTO=true ORACLE_CLIENT_LIB_DIR=/path/to/instantclient

Basado en la configuración Java proporcionada:

ORACLE_HOST=host ORACLE_PORT=port ORACLE_SERVICE_NAME=service ORACLE_USERNAME=user ORACLE_PASSWORD=password ORACLE_OLD_CRYPTO=true ORACLE_FETCH_SIZE=100 # Basado en DataSourceCrmConfig.java
ORACLE_POOL_MIN=2 ORACLE_POOL_MAX=10 ORACLE_POOL_INCREMENT=1 ORACLE_POOL_TIMEOUT=60 ORACLE_STMT_CACHE_SIZE=30
SELECT * FROM employees WHERE department_id = 10
CREATE TABLE test_table ( id NUMBER PRIMARY KEY, name VARCHAR2(100) NOT NULL, created_date DATE DEFAULT SYSDATE )
INSERT INTO test_table (id, name) VALUES (1, 'Test Record')
-- Comando 1 INSERT INTO customers (id, name) VALUES (1, 'Cliente Test'); -- Comando 2 UPDATE orders SET customer_id = 1 WHERE id = 100; -- Comando 3 DELETE FROM temp_data WHERE processed = 'Y';

⚠️ Error Oracle 9g: Password Verifier Not Supported

Si obtiene el error "password verifier type 0x939 is not supported by node-oracledb in Thin mode" conOracle 9g:

📦 Paso 1: Descargar Oracle Instant Client 19.26

# Descargar desde: # https://download.oracle.com/otn_software/nt/instantclient/1926000/instantclient-basic-windows.x64-19.26.0.0.0dbru.zip # Extraer a: C:\oracle\instantclient_19_26

⚙️ Paso 2: Configurar variables obligatorias

ORACLE_OLD_CRYPTO=true ORACLE_CLIENT_LIB_DIR=C:\oracle\instantclient_19_26

🚀 Para versiones Oracle 10g-11g: Probar sin Instant Client primero

📦 Si falla con 10g-11g, instalar Oracle Instant Client

- Windows:Oracle Instant Client para Windows
- Linux:
Oracle Instant Client para Linux
- macOS:
Oracle Instant Client para macOS

ORACLE_CLIENT_LIB_DIR=/path/to/instantclient
ORACLE_HOST=your-oracle-host ORACLE_PORT=1521 ORACLE_SERVICE_NAME=your-service ORACLE_USERNAME=username ORACLE_PASSWORD=password ORACLE_OLD_CRYPTO=true

Configuración con Instant Client (si es necesario):

ORACLE_HOST=your-oracle-host ORACLE_PORT=1521 ORACLE_SERVICE_NAME=your-service ORACLE_USERNAME=username ORACLE_PASSWORD=password ORACLE_OLD_CRYPTO=true ORACLE_CLIENT_LIB_DIR=/opt/oracle/instantclient_19_8

Oracle Instant Client son librerías nativas que permiten conexionesThick(más compatibles con Oracle antiguo).

- ✅NO necesario: Si tu Oracle es 12c o superior
- ⚠️Puede ser necesario: Para Oracle 10g/11g con crypto antiguo
- ❌Obligatorio: Para funciones avanzadas (LDAP, conexiones wallet, etc.)
- Prueba primero conORACLE_OLD_CRYPTO=truesolamente
- Si obtienes errores, entonces instala Oracle Instant Client

📦 Instalación de Oracle Instant Client (Solo si es necesario)

- Descargar "Basic Package" desde
Oracle Downloads - Extraer aC:\oracle\instantclient_XX_Y - Configurar:ORACLE_CLIENT_LIB_DIR=C:\oracle\instantclient_XX_Y
# Ubuntu/Debian wget https://download.oracle.com/otn_software/linux/instantclient/XXX/instantclient-basic-linux.x64-XX.Y.Z.zip unzip instantclient-basic-linux.x64-XX.Y.Z.zip export ORACLE_CLIENT_LIB_DIR=/opt/oracle/instantclient_XX_Y
# Descargar desde Oracle y extraer export ORACLE_CLIENT_LIB_DIR=/opt/oracle/instantclient_XX_Y

- Host y puerto correctos
- Servicio/SID configurado
- Firewall/conectividad de red
- Listener de Oracle ejecutándose

# Ajustar configuración del pool ORACLE_POOL_MIN=1 ORACLE_POOL_MAX=5 ORACLE_POOL_TIMEOUT=30

- Oracle Database: 11g, 12c, 18c, 19c, 21c
- Node.js: >=18.0.0
- Sistemas: Windows, Linux, macOS

- Validación de SQL para prevenir inyecciones básicas
- Gestión segura de credenciales vía variables de entorno
- Soporte para conexiones SSL/TLS de Oracle
- Separación de permisos entre consultas y comandos
- Fork el proyecto
- Crear branch para feature (git checkout -b feature/nueva-funcionalidad)
- Commit cambios (git commit -am 'Agregar nueva funcionalidad')
- Push al branch (git push origin feature/nueva-funcionalidad)
- Crear Pull Request

MIT License - verLICENSEpara más detalles.

Para reportar problemas o solicitar características:

- GitHub Issues:github.com/gcorroto/mcp-oracle-db/issues

- Oracle Database Documentation
-
node-oracledb Documentation
-
Model Context Protocol

Official MCP server for dbt (data build tool) providing integration with dbt Core/Cloud CLI, project metadata discovery, model information, and semantic layer querying capabilities.

Open source MCP server specializing in easy, fast, and secure tools for Databases.

Query and analyze data with MotherDuck and local DuckDB

Query Streams securely connects MCP clients to live databases through the Query Streams Cloud Network, with no VPNs, inbound ports, or complex setup.

Interact with the SingleStore database platform

Official Supabase MCP server for managing Supabase projects, databases, auth, storage, edge functions, and SQL workflows from AI agents.

A collection of tools for managing the platform, addressing data quality and reading and writing to Teradata Database.

Multi-database agent access (PostgreSQL, SQLite, MySQL, Oracle, SQL Server) with batch queries, pre-configured connections, and SQLGlot-enforced read-only safety

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.