Oracle ADB MCP Server
Connects to Oracle Autonomous Database via OCI Bastion tunneling to enable AI-powered database exploration. Supports schema introspection, automatic ERD generation, and read-only SQL query execution through natural language interfaces.
README
Oracle ADB MCP Server — Setup Guide
How the tunnel works
This server connects to Oracle ADB through your existing ossh tunnel.
Two modes are supported — pick whichever suits your workflow:
| Mode | What you do | What the server does |
|---|---|---|
| manual (default) | Run your ossh command in a terminal before calling connect |
Checks localhost:1522 is reachable, then connects |
| auto | Nothing — just call connect |
Spawns the ossh command itself, then connects, kills it on disconnect |
Your ossh command (for reference):
ssh -o 'ProxyCommand=ossh proxy -V -U%r --overlay-bastion --region us-ashburn-1
--compartment <ocid.compartment> -- ssh stb-internal.bastion<region>.oci.oracleiaas.com
-p 22 -A -s proxy:ocid.bastion.oc1.iad.<key> 192.168.111.2
-L 1522:ocidwdata.adb.<region>.oraclecloud.com:1522
-t watch -n 90 date'
Prerequisites
- Python 3.11+ ✅ (you have 3.14)
osshin your system PATH ✅- Wallet zip at
C:\scripts\oci_01.zip✅
Step 1 — Install dependencies
Open PowerShell and run:
cd C:\scripts
python -m venv mcp-oracle-env
mcp-oracle-env\Scripts\activate
pip install -r oracle-mcp\requirements.txt
Step 2 — Edit config.py
Open C:\scripts\oracle-mcp\config.py and fill in:
# "manual" or "auto" — see table above
TUNNEL_MODE = "manual"
# Only needed if TUNNEL_MODE = "auto"
OCI_REGION = "us-ashburn-1"
COMPARTMENT_OCID = "ocid1.compartment.oc1..<your-compartment-ocid>"
BASTION_SESSION_OCID = "ocid1.bastion.oc1.iad.<your-static-session-key>"
ADB_PRIVATE_IP = "192.168.111.2"
ADB_HOSTNAME = "<your-adb-hostname>.adb.us-ashburn-1.oraclecloud.com"
# Always required
ADB_SERVICE_NAME = "<your_db_name>_medium" # see Step 3 below
DB_USERNAME = "<your_db_username>"
DB_PASSWORD = "<your_db_password>"
# Leave as "" if you didn't set a password when downloading the wallet
WALLET_PASSWORD = ""
Step 3 — Find your ADB service name
The service name is inside your wallet zip:
Expand-Archive C:\scripts\oci_01.zip -DestinationPath C:\scripts\wallet_preview -Force
type C:\scripts\wallet_preview\tnsnames.ora
You'll see entries like mydb_high, mydb_medium, mydb_low, mydb_tp.
Use mydb_medium for general use — good balance of speed and concurrency.
Step 4 — Register with Cline (VS Code)
- Open VS Code with the Cline extension installed
- Click the Cline icon in the sidebar → MCP Servers → Edit Config
- Add the following:
{
"mcpServers": {
"oracle-adb": {
"command": "C:\\scripts\\mcp-oracle-env\\Scripts\\python.exe",
"args": ["C:\\scripts\\oracle-mcp\\server.py"]
}
}
}
- Save the file — Cline will pick up the server automatically.
Also works with Claude Desktop. Config file is at:
C:\Users\mh026488\AppData\Roaming\Claude\claude_desktop_config.jsonUse the same JSON block above.
Step 5 — Connect and use
Manual tunnel mode (default)
- Open a PowerShell terminal and run your ossh command — leave it running
- In Cline, say:
Connect to the Oracle database - The server verifies the tunnel is up and connects
Auto tunnel mode
- Set
TUNNEL_MODE = "auto"in config.py - In Cline, say:
Connect to the Oracle database - The server launches ossh, waits for the tunnel, then connects
- When you say
disconnect, the tunnel is killed cleanly
Example prompts once connected
Show me all tables starting with AP_
Generate an ERD for the AP invoicing tables
Explain the AP_INVOICES table — row count, columns, sample data
Search for all columns containing EMPLOYEE across the schema
Query the top 10 suppliers by invoice count
Troubleshooting
| Problem | Fix |
|---|---|
No listener on localhost:1522 |
You're in manual mode but haven't run your ossh command yet |
ossh tunnel exited unexpectedly |
Check BASTION_SESSION_OCID and COMPARTMENT_OCID in config.py match your command |
ORA-01017 invalid credentials |
Check DB_USERNAME / DB_PASSWORD in config.py |
Wallet error / SSL error |
Verify WALLET_ZIP_PATH is C:\scripts\oci_01.zip and WALLET_PASSWORD is correct |
Service name not found |
Check ADB_SERVICE_NAME matches an entry in tnsnames.ora (Step 3) |
| Tunnel drops after a while | Normal — the watch -n 90 date keepalive in your ossh command handles this; in auto mode it's included automatically |
File layout
C:\scripts\
├── oracle-mcp\
│ ├── server.py # MCP entrypoint
│ ├── connection.py # ossh tunnel + wallet + DB connection
│ ├── schema.py # Table/column introspection
│ ├── relationships.py # Heuristic FK inference
│ ├── diagram.py # Mermaid ERD generation
│ ├── query.py # Read-only SQL executor
│ ├── config.py # ← EDIT THIS
│ └── requirements.txt
├── oci_01.zip # Your wallet ✅
└── mcp-oracle-env\ # Python venv (created in Step 1)
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.