A server for full integration with Oracle Database. Requires Oracle Instant Client libraries.
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.
oracle_health_check
Verifica el estado de salud de la conexión Oracle DB.
oracle_query
Ejecuta consultas SQL SELECT con formato de tabla o JSON.
sql
, maxRows
, formatAsTable
, showMetadata
oracle_execute
Ejecuta comandos SQL (INSERT, UPDATE, DELETE, CREATE, etc.).
sql
, autoCommit
, showDetails
oracle_list_tables
Lista todas las tablas del esquema especificado.
owner
, showDetails
oracle_describe_table
Muestra la estructura completa de una tabla.
tableName
, owner
, showDetails
oracle_transaction
Ejecuta múltiples comandos SQL en una transacción.
commands
, rollbackOnError
oracle_info
Muestra información de configuración de la conexión.
Si está usando Oracle 9g o versiones anteriores, debe realizar estos pasos adicionales:
ORACLE_OLD_CRYPTO=true
C:\oracle\instantclient_19_26
)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"
}
}
}
}
npm install
cp config.example.env .env
# Editar .env con la configuración de su base de datos
npm run build
Variable | Descripción | Por Defecto |
---|---|---|
ORACLE_HOST | Host del servidor Oracle | localhost |
ORACLE_PORT | Puerto de Oracle | 1521 |
ORACLE_SERVICE_NAME | Nombre del servicio Oracle | XE |
ORACLE_USERNAME | Usuario de base de datos | hr |
ORACLE_PASSWORD | Contraseña de base de datos | hr |
ORACLE_CONNECTION_STRING | Connection string completo (alternativo) | - |
ORACLE_OLD_CRYPTO | OBLIGATORIO para Oracle 9g - Usar modo Thick | false |
ORACLE_CLIENT_LIB_DIR | OBLIGATORIO para Oracle 9g - Ruta a Instant Client 19.26 | - |
ORACLE_POOL_MIN | Conexiones mínimas del pool | 1 |
ORACLE_POOL_MAX | Conexiones máximas del pool | 10 |
ORACLE_POOL_TIMEOUT | Timeout del pool en segundos | 60 |
ORACLE_FETCH_SIZE | Filas a traer por lote | 100 |
ORACLE_STMT_CACHE_SIZE | Tamaño cache de statements | 30 |
Claude Desktop:
%APPDATA%\Claude\claude_desktop_config.json
~/Library/Application Support/Claude/claude_desktop_config.json
~/.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:
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
npm run start
npm run dev
npm run inspector
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';
Si obtiene el error "password verifier type 0x939 is not supported by node-oracledb in Thin mode" con Oracle 9g:
Solución OBLIGATORIA para Oracle 9g:
# 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
ORACLE_OLD_CRYPTO=true
ORACLE_CLIENT_LIB_DIR=C:\oracle\instantclient_19_26
ORACLE_OLD_CRYPTO=true
Descargar Oracle Instant Client:
Configurar la ruta:
ORACLE_CLIENT_LIB_DIR=/path/to/instantclient
Configuración básica (probar primero):
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 conexiones Thick (más compatibles con Oracle antiguo).
¿Cuándo es necesario?
¿Cómo saber si lo necesito?
ORACLE_OLD_CRYPTO=true
solamenteWindows:
C:\oracle\instantclient_XX_Y
ORACLE_CLIENT_LIB_DIR=C:\oracle\instantclient_XX_Y
Linux:
# 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
macOS:
# Descargar desde Oracle y extraer
export ORACLE_CLIENT_LIB_DIR=/opt/oracle/instantclient_XX_Y
Verificar:
# Ajustar configuración del pool
ORACLE_POOL_MIN=1
ORACLE_POOL_MAX=5
ORACLE_POOL_TIMEOUT=30
npm test
git checkout -b feature/nueva-funcionalidad
)git commit -am 'Agregar nueva funcionalidad'
)git push origin feature/nueva-funcionalidad
)MIT License - ver LICENSE para más detalles.
Para reportar problemas o solicitar características:
Interact with CrateDB using natural language for Text-to-SQL queries and documentation retrieval.
Inspect database schemas and execute queries on Google BigQuery.
A server for interacting with MongoDB databases and MongoDB Atlas.
Query and analyze data with MotherDuck and local DuckDB
Snowflake database integration with read/write capabilities and insight tracking
Token Metrics integration for fetching real-time crypto market data, trading signals, price predictions, and advanced analytics.
An AI-powered gateway for managing over 40 data sources like Alibaba Cloud and mainstream databases, featuring NL2SQL, code generation, and data migration.
Interact with and manage MySQL databases. Requires connection details configured via environment variables.
A modular server providing unified access to multiple astronomical datasets, including astroquery services and DESI data sources.
Interact with the microCMS headless CMS API, enabling AI assistants to manage content.