MCP-Oracle
MCP-Oracle
Español | Inglés
Servidor MCP (Model Context Protocol) que conecta un agente de IA a una base de datos Oracle.
Expone herramientas para explorar el esquema, leer el código fuente de PL/SQL y ejecutar SQL. Se inicia en modo solo lectura; las escrituras y las llamadas a procedimientos almacenados se habilitan con ORACLE_ALLOW_WRITE=true.
Utiliza el SDK oficial de Python (mcp) y python-oracledb. Si encuentra un Instant Client (o el directorio lib/ de un ORACLE_HOME), habilita el modo thick; de lo contrario, usa el modo thin. El modo thick es necesario para instancias antiguas (10g/11g) cuyo verificador de contraseña no es compatible con el modo thin.
Este proyecto no es el conjunto oficial de MCP de Oracle (oracle/mcp). Ese repositorio está dirigido a Oracle Cloud y otros productos de Oracle. Este servidor se comunica directamente con el listener de tu base de datos.
Herramientas
Herramienta | Descripción | Escritura |
| Lista las tablas visibles. | No |
| Columnas, tipos, nulabilidad, comentarios y clave primaria. | No |
| Restricciones PK, FK y únicas para una tabla. | No |
| Código fuente de un PACKAGE, PROCEDURE, FUNCTION, TRIGGER o VIEW. | No |
| Ejecuta | No |
|
| Sí |
| Llama a un procedimiento PL/SQL almacenado + commit. | Sí |
run_query y execute_dml aceptan variables de enlace (:name) para que no concatenes valores en el SQL.
Related MCP server: Oracle DB MCP Server
Requisitos
Python 3.9+
Acceso a una instancia de Oracle (usuario, contraseña, host, puerto y
service_name)Para Oracle 10g/11g (o cuando el modo thin falla): Oracle Instant Client o el directorio
lib/de unORACLE_HOME
Uso local vs producción
Este README cubre el uso local: Cursor o Claude Desktop inician server.py en tu máquina a través de stdio (no abre un puerto HTTP).
Si el MCP debe seguir ejecutándose en un servidor y los clientes se conectan a través de la red:
Instalación
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtCopia la plantilla de entorno y completa tus valores:
cp .env.example .envEl servidor no carga .env automáticamente. Esas variables deben pasarse en la configuración del cliente MCP (Cursor, Claude Desktop, etc.). El archivo .env es una referencia local; no lo confirmes en el repositorio.
Variables de entorno
Variable | Requerido | Por defecto | Descripción |
| Sí | — | Usuario de la base de datos |
| Sí | — | Contraseña |
| Si |
| Host del listener |
| Si |
| Puerto del listener |
| Si | — | Nombre del servicio (p. ej. |
| No | — | Si se define, reemplaza host/puerto/service_name. Útil para un alias TNS o Easy Connect Plus |
| No |
|
|
| No |
| Número máximo de filas devueltas por |
| No |
| Carpeta de Instant Client o |
Modo thick vs thin
Al iniciar, el servidor comprueba ORACLE_CLIENT_LIB_DIR (o ~/oracle/instantclient). Si esa carpeta existe, llama a oracledb.init_oracle_client() y usa el modo thick.
Ejemplos:
# Instant Client (zip / RPM)
ORACLE_CLIENT_LIB_DIR=/Users/your_user/oracle/instantclient
# ORACLE_HOME 19c
ORACLE_CLIENT_LIB_DIR=/apps/oracle/product/19c/libSi no hay un cliente nativo, se ejecuta en modo thin (Oracle 12.1+ en la mayoría de los casos).
Uso con Cursor
En Cursor, añade el servidor a la configuración de MCP (por ejemplo ~/.cursor/mcp.json o la configuración del proyecto):
{
"mcpServers": {
"oracle-mcp": {
"command": "/Users/your_user/Development/oracle-mcp/.venv/bin/python",
"args": ["/Users/your_user/Development/oracle-mcp/server.py"],
"env": {
"ORACLE_USER": "my_user",
"ORACLE_PASSWORD": "my_password",
"ORACLE_HOST": "127.0.0.1",
"ORACLE_PORT": "1521",
"ORACLE_SERVICE_NAME": "ORCLPDB1",
"ORACLE_ALLOW_WRITE": "false",
"ORACLE_MAX_ROWS": "200"
}
}
}
}Usa la ruta absoluta al Python de .venv para que el cliente encuentre mcp y oracledb.
Reinicia Cursor (o recarga los servidores MCP) y confirma que oracle-mcp aparece en la lista de herramientas.
Uso con Claude Desktop
En claude_desktop_config.json:
{
"mcpServers": {
"oracle-mcp": {
"command": "/Users/your_user/Development/oracle-mcp/.venv/bin/python",
"args": ["/Users/your_user/Development/oracle-mcp/server.py"],
"env": {
"ORACLE_USER": "my_user",
"ORACLE_PASSWORD": "my_password",
"ORACLE_HOST": "127.0.0.1",
"ORACLE_PORT": "1521",
"ORACLE_SERVICE_NAME": "ORCLPDB1",
"ORACLE_ALLOW_WRITE": "false",
"ORACLE_MAX_ROWS": "200"
}
}
}
}Ejecución manual
Localmente, el servidor habla MCP a través de stdio (no abre un puerto HTTP). En un servidor de producción, el transporte es HTTP; consulta Uso local vs producción.
source .venv/bin/activate
export ORACLE_USER=my_user
export ORACLE_PASSWORD=my_password
export ORACLE_HOST=127.0.0.1
export ORACLE_PORT=1521
export ORACLE_SERVICE_NAME=ORCLPDB1
python server.pySin un cliente MCP conectado a stdin/stdout no verás un prompt interactivo; eso es lo esperado.
Seguridad
Por defecto
ORACLE_ALLOW_WRITE=false:execute_dmlycall_procedurefallan conPermissionError.run_queryrechaza sentencias que comiencen conINSERT,UPDATE,DELETE,MERGE,DROP,ALTER,TRUNCATE,CREATE,GRANToREVOKE.execute_dmlsolo aceptaINSERT,UPDATE,DELETEoMERGE.Prefiere variables de enlace (
:id) en lugar de interpolar valores en el SQL.Conéctate con un usuario de privilegios mínimos cuando solo necesites explorar el esquema.
No confirmes
.envni credenciales en unmcp.jsonversionado.
Dependencias
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityBmaintenanceProvides flexible access to Oracle databases for AI assistants like Claude, supporting SQL queries across multiple schemas with comprehensive database introspection capabilities.69510MIT
- AlicenseAqualityCmaintenanceEnables AI tools to interact with Oracle databases through query execution, schema browsing, stored procedure calls, and transaction management. Supports multiple database connections with safety features like read-only mode and dangerous query detection.16MIT
- AlicenseNot gradedqualityBmaintenanceEnables Claude Code to execute read-only queries and DML operations on Oracle and PostgreSQL databases, and to list or describe database tables.151MIT
- FlicenseNot gradedqualityBmaintenanceProvides AI assistants with secure, structured access to Oracle Database through MCP, enabling SQL execution, metadata exploration, and stored procedure execution.
Related MCP Connectors
Read-only bank access for your AI agent. Connects Claude, ChatGPT, Cursor, Gemini, Codex.
Run SOQL queries to explore and retrieve Salesforce data. Access accounts, contacts, opportunities…
Runtime permission, approval, and audit layer for AI agent tool execution.
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/VasquezNodier/mcp-oracle'
If you have feedback or need assistance with the MCP directory API, please join our Discord server