oracle
MCP Server for working with large Oracle databases
claude mcp add --transport stdio danielmeppiel-oracle-mcp-server docker run -i --rm -e ORACLE_CONNECTION_STRING -e TARGET_SCHEMA -e CACHE_DIR -e THICK_MODE dmeppiel/oracle-mcp-server \
--env CACHE_DIR=".cache" \
--env THICK_MODE="" \
--env TARGET_SCHEMA="" \
--env READ_ONLY_MODE="1" \
--env ORACLE_CLIENT_LIB_DIR="" \
--env ORACLE_CONNECTION_STRING="<db-username>/${input:db-password}@<host>:1521/<service-name>"How to use
This MCP server provides contextual Oracle database schema information to AI assistants. It caches and serves table schemas, supports targeted lookups for individual tables, and can search for tables by name patterns. It also exposes relationship information via foreign keys and communicates vendor-specific details to MCP-enabled tools such as GitHub Copilot in VSCode, Claude, and ChatGPT. To use it, configure the MCP client (in your editor or tool) to point at the Oracle MCP server and enable agent mode so that Copilot can access the server’s tools through the chat interface. The recommended integration path is via Docker, which bundles the necessary Oracle client libraries and the MCP server runtime.
How to install
Prerequisites:
- Docker installed and running, or Python 3.12+ with uv (for local UV option)
- Oracle database access credentials
- Optional: Oracle Instant Client libraries if running in non-docker mode or enabling thick mode
Option A: Run via Docker (recommended)
- Ensure Docker is running.
- Create a configuration snippet in your editor (example shown in the README) and set environment variables, e.g., ORACLE_CONNECTION_STRING, TARGET_SCHEMA, CACHE_DIR, THICK_MODE, READ_ONLY_MODE.
- Start the container using the provided mcp_config (or run a similar docker command):
docker run -i --rm
-e ORACLE_CONNECTION_STRING="<db-username>/${input:db-password}@<host>:1521/<service-name>"
-e TARGET_SCHEMA=""
-e CACHE_DIR=".cache"
-e THICK_MODE=""
-e READ_ONLY_MODE="1"
dmeppiel/oracle-mcp-server
Option B: Run via UV (local installation)
- Prerequisites: Python 3.12+, Oracle instant client (for oracledb), and access to your Oracle DB.
- Install UV and clone the repository:
curl -LsSf https://astral.sh/uv/install.sh | sh
or via PowerShell on Windows
irm https://astral.sh/uv/install.ps1 | iex - Install dependencies in a virtual environment: uv venv source .venv/bin/activate # macOS/Linux .venv\Scripts\activate # Windows uv pip install -e .
- Run the MCP server locally: uv run main.py
- Configure the MCP client (as shown in the README) to point at your uv-based server: { "servers": { "oracle": { "command": "/path/to/your/.local/bin/uv", "args": ["run", "main.py"], "env": { "ORACLE_CONNECTION_STRING": "<db-username>/${input:db-password}@<host>:1521/<service-name>", "TARGET_SCHEMA": "", "CACHE_DIR": ".cache", "THICK_MODE": "", "ORACLE_CLIENT_LIB_DIR": "", "READ_ONLY_MODE": "1" } } } }
Note: Adjust ORACLE_CONNECTION_STRING, TARGET_SCHEMA, and cache/mode options to match your environment. Always use READ_ONLY_MODE=1 by default for security.
Additional notes
Tips and gotchas:
- The ORACLE_CONNECTION_STRING is the primary credential string; keep it secure and avoid exposing it in shared settings.
- TARGET_SCHEMA defaults to your user schema if left empty.
- CACHE_DIR determines where local schema caches are stored; leave it as .cache or point to a persistent directory for faster restarts.
- THICK_MODE enables a more feature-complete client setup (requires Oracle client libraries); use as needed.
- READ_ONLY_MODE is enabled by default (1) to prevent writes; set to 0 only if you truly need write access.
- If using Docker, ensure the container has network access to your Oracle DB and that the host/port in ORACLE_CONNECTION_STRING is reachable.
- For large Oracle databases, expect an initial caching period where the server builds the local schema cache; subsequent lookups will be fast.
Related MCP Servers
mcp-vegalite
MCP server from isaacwasserman/mcp-vegalite-server
github-chat
A Model Context Protocol (MCP) for analyzing and querying GitHub repositories using the GitHub Chat API.
nautex
MCP server for guiding Coding Agents via end-to-end requirements to implementation plan pipeline
pagerduty
PagerDuty's official local MCP (Model Context Protocol) server which provides tools to interact with your PagerDuty account directly from your MCP-enabled client.
futu-stock
mcp server for futuniuniu stock
mcp -boilerplate
Boilerplate using one of the 'better' ways to build MCP Servers. Written using FastMCP