About Oraclemcp
Oraclemcp is an MCP server published by omandotkom in the AI category: a Model Context Protocol (MCP) server for Oracle databases, written in Go. Enables LLMs to inspect schemas and execute read-only queries.
The repository has 1 stars and 0 forks, with the last commit 9 months ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.
Install
git clone https://github.com/omandotkom/oraclemcpThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Tools (5)
get-constraint-columnsGet the columns that make up a constraint
Parameters not published.
get-table-schemaGet column definitions for a specific table
Parameters not published.
list-constraintsList all constraints for a table (PK, FK, Unique, Check)
Parameters not published.
list-tablesList all accessible tables (excluding system schemas)
Parameters not published.
sql-selectExecute arbitrary `SELECT` or `WITH` queries (limited to 1000 rows)
Parameters not published.
Ask AI
Ask AI about Oraclemcp
Powered by Claude · Grounded in docs
Security checks
Static checks derived from the repository 5 days ago. Heuristics on the source, not an audit.
- ✓README presentThe repository ships documentation.
- !License declaredNo license file. Legally you have no right to use it in a product.
- !Tests presentNo tests found. Behaviour changes may go unnoticed between versions.
- ✓Dependencies pinnedA lockfile pins dependency versions.
- ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
- !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.
README
Oracle MCP Server (Go)
This is a Model Context Protocol (MCP) server for Oracle databases, written in Go. It allows LLMs (like Claude) to interact with your Oracle database to inspect schemas, view PL/SQL source code, and execute read-only queries.
It uses the standard Stdio transport, meaning it is designed to be run directly by an MCP client (like Claude Desktop or an MCP-enabled IDE extension).
🔒 Security Note
This server is strictly READ-ONLY. It is designed with data safety as the top priority.
✅ What This Server CAN Do:
- Execute
SELECTqueries against your data - Read Oracle's data dictionary views (
ALL_*,DBA_*,V$*) - View PL/SQL source code from
ALL_SOURCE - Retrieve DDL scripts using
DBMS_METADATA.GET_DDL - Generate execution plans (stores temporary data in
PLAN_TABLE, then cleans up)
❌ What This Server CANNOT Do:
- No INSERT, UPDATE, DELETE — Cannot modify any table data
- No CREATE, ALTER, DROP — Cannot change database schema
- No EXECUTE — Cannot run stored procedures or functions
- No GRANT, REVOKE — Cannot change privileges
- No TRUNCATE, MERGE — Cannot perform any data manipulation
🛡️ How We Ensure Read-Only Safety:
- Query Validation: The
sql-selecttool explicitly validates that queries start withSELECTorWITHbefore execution - Dictionary Views Only: All other tools query Oracle's read-only data dictionary views
- No DDL Execution: DDL is only retrieved as text, never executed
- Temporary Data Cleanup: Any temporary data (like execution plans) is immediately deleted after use
Note: For additional security, you can connect with a database user that only has
SELECTprivileges on the required dictionary views. This provides defense-in-depth at the database level.
Features
📊 Table & Schema Tools
| Tool | Description |
|---|---|
sql-select |
Execute arbitrary SELECT or WITH queries (limited to 1000 rows) |
list-tables |
List all accessible tables (excluding system schemas) |
get-table-schema |
Get column definitions for a specific table |
list-constraints |
List all constraints for a table (PK, FK, Unique, Check) |
get-constraint-columns |
Get the columns that make up a constraint |
🔧 PL/SQL Objects Tools
| Tool | Description |
|---|---|
list-objects |
List Oracle objects by type (PROCEDURE, FUNCTION, PACKAGE, TYPE, etc.) |
get-object-source |
Get PL/SQL source code for procedures, functions, packages, types, triggers |
describe-object |
Get comprehensive info about any Oracle object (like SQL*Plus DESCRIBE) |
📅 Scheduler Jobs Tools
| Tool | Description |
|---|---|
list-jobs |
List all Oracle Scheduler jobs |
get-job-details |
Get detailed information about a specific job |
🔗 Dependencies Tools
| Tool | Description |
|---|---|
list-dependencies |
List what objects depend on or are used by a given object |
👁️ Views Tools
| Tool | Description |
|---|---|
list-views |
List all views accessible to the current user |
get-view-definition |
Get the SQL definition of a view |
📇 Index Tools
| Tool | Description |
|---|---|
list-indexes |
List all indexes, optionally filtered by table |
get-index-columns |
Get the columns that make up an index |
🔢 Sequence Tools
| Tool | Description |
|---|---|
list-sequences |
List all sequences accessible to the current user |
⚡ Trigger Tools
| Tool | Description |
|---|---|
list-triggers |
List all triggers, optionally filtered by table |
🏷️ Type Tools
| Tool | Description |
|---|---|
list-types |
List all user-defined types (object types, collection types) |
get-type-attributes |
Get the attributes (fields) of a user-defined type |
🔄 Synonym Tools
| Tool | Description |
|---|---|
list-synonyms |
List all synonyms accessible to the current user |
🔍 Search & Analysis Tools
| Tool | Description |
|---|---|
search-source |
Search for text within PL/SQL source code to find where tables, columns, or variables are used |
search-columns |
Search for column names across all tables (find all tables with a specific column) |
get-ddl |
Get the full SQL CREATE script (DDL) for any object using DBMS_METADATA |
explain-plan |
Get the execution plan for a SQL query to analyze performance |
get-table-stats |
Get optimizer statistics for a table (row count, last analyzed, size) |
list-invalid-objects |
List all database objects with INVALID status that need recompilation |
📝 Documentation Tools
| Tool | Description |
|---|---|
get-table-comments |
Get comments/documentation for a table and its columns |
get-table-relationships |
Get all foreign key relationships for a table (incoming and outgoing) |
📊 Monitoring Tools
| Tool | Description |
|---|---|
list-sessions |
List active database sessions (requires V$SESSION privilege) |
get-job-run-history |
Get execution history of a scheduler job (status, duration, errors) |
Prerequisites
- Go (1.18+): To build the application.
- Oracle Database: Access to an Oracle instance.
- No Instant Client Required: Uses
go-ora, a pure Go driver.
Configuration
The application requires the following environment variables:
ORACLE_USER: Database username.ORACLE_PASSWORD: Database password.ORACLE_CONNECT_STRING:host:port/service_name.
Building
Quick Build
go build -o mcp_oracle.exe .
Build & Release to GitHub
To create a new release with the executable uploaded to GitHub:
# Interactive mode - prompts for version
.\release.ps1
# Specify version directly
.\release.ps1 -Version "v1.2.0"
# Create as draft release
.\release.ps1 -Version "v1.2.0" -Draft
Prerequisites for releasing:
- GitHub CLI (
gh) installed and authenticated - Run
gh auth loginif not already authenticated
Usage with Claude Desktop
To use this with the Claude Desktop app, add the following to your configuration file (typically %APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"oracle-db": {
"command": "c:/path/to/your/mcp_oracle.exe",
"args": [],
"env": {
"ORACLE_USER": "your_user",
"ORACLE_PASSWORD": "your_password",
"ORACLE_CONNECT_STRING": "localhost:1521/XEPDB1"
},
"disabled": false,
"autoApprove": [
"sql-select",
"list-tables",
"get-table-schema",
"list-constraints",
"get-constraint-columns",
"list-objects",
"get-object-source",
"describe-object",
"list-jobs",
"get-job-details",
"list-dependencies",
"list-views",
"get-view-definition",
"list-indexes",
"get-index-columns",
"list-sequences",
"list-triggers",
"list-types",
"get-type-attributes",
"list-synonyms",
"search-source",
"search-columns",
"get-ddl",
"explain-plan",
"get-table-stats",
"list-invalid-objects",
"get-table-comments",
"get-table-relationships",
"list-sessions",
"get-job-run-history"
]
}
}
}
Make sure to replace the paths and credentials with your actual values.
Usage with VS Code (Extension)
If you are developing a VS Code extension that acts as an MCP client:
- Spawn the
mcp_oracle.exeprocess. - Set the environment variables in the process options.
- Communicate via
stdinandstdoutusing the MCP JSON-RPC protocol.
Tool Examples
Query Data
Tool: sql-select
Arguments: {"query": "SELECT * FROM employees WHERE department_id = 10"}
List All Procedures
Tool: list-objects
Arguments: {"object_type": "PROCEDURE", "owner": "HR"}
Get Source Code
Tool: get-object-source
Arguments: {"object_name": "CALCULATE_SALARY", "object_type": "PROCEDURE", "owner": "HR"}
List Jobs
Tool: list-jobs
Arguments: {"owner": "MYSCHEMA"}
Find Dependencies
Tool: list-dependencies
Arguments: {"object_name": "MY_PACKAGE", "direction": "used_by"}
Get Table Constraints
Tool: list-constraints
Arguments: {"table_name": "EMPLOYEES", "owner": "HR"}
Manual Testing (CLI)
You can verify the server starts by running it, but it will hang waiting for JSON-RPC input on stdin.
$env:ORACLE_USER="user"
$env:ORACLE_PASSWORD="password"
$env:ORACLE_CONNECT_STRING="localhost:1521/xe"
.\mcp_oracle.exe
MCP Protocol
This server implements the Model Context Protocol (MCP) specification:
- Transport: Stdio (stdin/stdout)
- Protocol: JSON-RPC 2.0
- Discovery: Supports
tools/listfor automatic tool discovery - Execution: Supports
tools/callfor tool execution
When an AI agent connects, it will automatically discover all available tools via the tools/list method.
README fetched from the repository 5 days ago. The original is authoritative.