muhdur avatar

oraclemcp

muhdur/oraclemcp

A read-only Oracle Database connector built in pure Rust with a fail-closed SQL classifier that blocks destructive operations before they touch the database. Exposes schema introspection, DDL retrieval, compile errors, source search, and read-only queries through MCP tools. Non-read SQL like DML requires explicit session level elevation (capped by profile), rolls back by default, and needs a confirmation token before commit. Ships as both a native binary (requires Oracle Instant Client at runtime when built with live-db) and a Docker image with the client bundled. The classifier rejects multi-statement batches and unproven function calls outright, returning structured error envelopes with suggested alternatives. Runs over stdio or Streamable HTTP.

GitHub stars
4
tools
43
transport
STDIO
last updated
Sep 17, 2026

Tools

43 tools

Public tool metadata for what this MCP can expose to an agent.

oracle_list_profilesList configured connection profiles without exposing connect strings, usernames, or credential references.

List configured connection profiles without exposing connect strings, usernames, or credential references.

No parameter schema in public metadata yet.

oracle_connection_infoDescribe the active profile, its effective MCP access (operating level, profile max_level, protected status, and whether writes are permitted now), and Oracle connection state.

Describe the active profile, its effective MCP access (operating level, profile max_level, protected status, and whether writes are permitted now), and Oracle connection state.

No parameter schema in public metadata yet.

oracle_switch_profileReconnect this MCP server to another configured profile by name and report that profile's effective MCP access.

Reconnect this MCP server to another configured profile by name and report that profile's effective MCP access.

No parameter schema in public metadata yet.

oracle_set_session_levelPreview or apply a temporary session operating-level elevation within the active profile ceiling, or drop back to READ_ONLY.

Preview or apply a temporary session operating-level elevation within the active profile ceiling, or drop back to READ_ONLY.

No parameter schema in public metadata yet.

oracle_queryRun a read-only SELECT with positional binds; paginated and row/byte capped.

Run a read-only SELECT with positional binds; paginated and row/byte capped.

No parameter schema in public metadata yet.

oracle_semantic_searchRun a bounded, fail-closed 23ai vector search through the same policy, semantic-resolution, masking, and audit path as oracle_query.

Run a bounded, fail-closed 23ai vector search through the same policy, semantic-resolution, masking, and audit path as oracle_query.

No parameter schema in public metadata yet.

oracle_diffDiff one proven read-only SELECT across two Oracle SCNs, or across two databases.

Diff one proven read-only SELECT across two Oracle SCNs, or across two databases.

No parameter schema in public metadata yet.

oracle_preview_sqlClassify SQL without executing the candidate and bind the exact SQL, typed binds, commit/hold mode, output caps and timeout into any confirmation.

Classify SQL without executing the candidate and bind the exact SQL, typed binds, commit/hold mode, output caps and timeout into any confirmation.

No parameter schema in public metadata yet.

oracle_executeExecute one non-read SQL statement through the classifier and active profile gate; DML rolls back by default and returns observed_rows separately from any preview estimate.

Execute one non-read SQL statement through the classifier and active profile gate; DML rolls back by default and returns observed_rows separately from any preview estimate.

No parameter schema in public metadata yet.

oracle_checkpointEstablish a named checkpoint (a native Oracle SAVEPOINT) on this session, opening the reversible workspace: oracle_execute with hold=true and a matching preview confirmation leaves DML pending instead of rolling it back, and oracle_undo_to walks it back.

Establish a named checkpoint (a native Oracle SAVEPOINT) on this session, opening the reversible workspace: oracle_execute with hold=true and a matching preview confirmation leaves DML pending instead of rolling it back, and oracle_undo_to walks it back.

No parameter schema in public metadata yet.

oracle_undo_toUndo the reversible workspace: ROLLBACK TO SAVEPOINT <name> discards every held statement executed after that checkpoint and releases the checkpoints stacked above it, leaving the transaction open.

Undo the reversible workspace: ROLLBACK TO SAVEPOINT <name> discards every held statement executed after that checkpoint and releases the checkpoints stacked above it, leaving the transaction open.

No parameter schema in public metadata yet.

oracle_preview_dmlDry-run supported DML only when the current level admits it and a complete mutation closure proves reversible effects.

Dry-run supported DML only when the current level admits it and a complete mutation closure proves reversible effects.

No parameter schema in public metadata yet.

oracle_compile_objectPreview or compile one PL/SQL/view object through the active DDL profile gate; preview is the default and execution requires the returned confirmation token.

Preview or compile one PL/SQL/view object through the active DDL profile gate; preview is the default and execution requires the returned confirmation token.

No parameter schema in public metadata yet.

oracle_create_or_replacePreview or apply one CREATE OR REPLACE statement through the classifier and active DDL profile gate.

Preview or apply one CREATE OR REPLACE statement through the classifier and active DDL profile gate.

No parameter schema in public metadata yet.

oracle_patch_sourcePreview or apply an exact old_text to new_text replacement against one stored source object; preview refetches the current source and execute uses the existing DDL confirmation gate.

Preview or apply an exact old_text to new_text replacement against one stored source object; preview refetches the current source and execute uses the existing DDL confirmation gate.

No parameter schema in public metadata yet.

oracle_list_schemasList schemas that own objects visible to this session, optionally filtered by name.

List schemas that own objects visible to this session, optionally filtered by name.

No parameter schema in public metadata yet.

oracle_schema_inspectList objects in the current schema, one owner, or all accessible schemas, with optional type/name filters.

List objects in the current schema, one owner, or all accessible schemas, with optional type/name filters.

No parameter schema in public metadata yet.

oracle_search_objectsUnified read-only object search/inspection with a detail_level.

Unified read-only object search/inspection with a detail_level.

No parameter schema in public metadata yet.

oracle_orientReturn bounded orientation evidence: by default one cacheable snapshot for the active profile; fleet=true maps every MCP-visible profile independently with schema, version, freshness, drift, and typed UNREACHABLE/FAIL_CLOSED lane status.

Return bounded orientation evidence: by default one cacheable snapshot for the active profile; fleet=true maps every MCP-visible profile independently with schema, version, freshness, drift, and typed UNREACHABLE/FAIL_CLOSED lane status.

No parameter schema in public metadata yet.

oracle_describeDescribe a table/view's columns and constraint metadata.

Describe a table/view's columns and constraint metadata.

No parameter schema in public metadata yet.

oracle_describe_indexDescribe one index's metadata, indexed columns, and function-based expressions.

Describe one index's metadata, indexed columns, and function-based expressions.

No parameter schema in public metadata yet.

oracle_describe_triggerDescribe one trigger's timing, event, target table, status, and body.

Describe one trigger's timing, event, target table, status, and body.

No parameter schema in public metadata yet.

oracle_describe_viewDescribe one view's definition metadata and columns.

Describe one view's definition metadata and columns.

No parameter schema in public metadata yet.

oracle_get_ddlFetch an object's DDL via DBMS_METADATA.GET_DDL (allowlisted object types).

Fetch an object's DDL via DBMS_METADATA.GET_DDL (allowlisted object types).

No parameter schema in public metadata yet.

oracle_get_sourceFetch an object's full source text or inclusive line range from ALL_SOURCE, or fetch a view definition from ALL_VIEWS.TEXT, with a character cap.

Fetch an object's full source text or inclusive line range from ALL_SOURCE, or fetch a view definition from ALL_VIEWS.TEXT, with a character cap.

No parameter schema in public metadata yet.

oracle_sample_rowsRead arbitrary first rows of a table or view with a hard row cap.

Read arbitrary first rows of a table or view with a hard row cap.

No parameter schema in public metadata yet.

oracle_read_clobRead one CLOB/NCLOB/text value by key with a character cap.

Read one CLOB/NCLOB/text value by key with a character cap.

No parameter schema in public metadata yet.

oracle_compile_errorsRetrieve compile errors for the current schema, an owner, or one object (ALL_ERRORS).

Retrieve compile errors for the current schema, an owner, or one object (ALL_ERRORS).

No parameter schema in public metadata yet.

oracle_search_sourceFull-text search across ALL_SOURCE for a needle (row- and line-capped).

Full-text search across ALL_SOURCE for a needle (row- and line-capped).

No parameter schema in public metadata yet.

oracle_plscope_inspectInspect PL/Scope identifier and SQL statement metadata for one PL/SQL object when ALL_IDENTIFIERS/ALL_STATEMENTS are populated.

Inspect PL/Scope identifier and SQL statement metadata for one PL/SQL object when ALL_IDENTIFIERS/ALL_STATEMENTS are populated.

No parameter schema in public metadata yet.

oracle_explain_planExplicit diagnostic-write EXPLAIN PLAN for a vetted SELECT; writes PLAN_TABLE, requires READ_WRITE plus allow_plan_table_write, and is disabled on read-only standby.

Explicit diagnostic-write EXPLAIN PLAN for a vetted SELECT; writes PLAN_TABLE, requires READ_WRITE plus allow_plan_table_write, and is disabled on read-only standby.

No parameter schema in public metadata yet.

oracle_top_queriesRead-only top-SQL ranked by elapsed/CPU/buffer-gets/disk-reads over the free live cursor cache (V$SQLSTATS); live calls may narrow by exact sql_id or bounded sql_text.

Read-only top-SQL ranked by elapsed/CPU/buffer-gets/disk-reads over the free live cursor cache (V$SQLSTATS); live calls may narrow by exact sql_id or bounded sql_text.

No parameter schema in public metadata yet.

oracle_plan_timelineRead-only historical optimizer plan and relative-cost timeline from AWR snapshots for one SQL ID.

Read-only historical optimizer plan and relative-cost timeline from AWR snapshots for one SQL ID.

No parameter schema in public metadata yet.

oracle_db_healthRead-only DBA health-check suite.

Read-only DBA health-check suite.

No parameter schema in public metadata yet.

oracle_plsql_parseParse PL/SQL source offline with the grammar parser and return declarations and diagnostics.

Parse PL/SQL source offline with the grammar parser and return declarations and diagnostics.

No parameter schema in public metadata yet.

oracle_plsql_analyzeRun the offline plsql-intelligence engine over a local project root and return doctor summaries.

Run the offline plsql-intelligence engine over a local project root and return doctor summaries.

No parameter schema in public metadata yet.

oracle_plsql_what_breaksPredict invalidation and recompilation impact for a PL/SQL ChangeSet without touching Oracle.

Predict invalidation and recompilation impact for a PL/SQL ChangeSet without touching Oracle.

No parameter schema in public metadata yet.

oracle_plsql_lineageRun offline dependency-lineage traversal from a logical object id in a local PL/SQL project.

Run offline dependency-lineage traversal from a logical object id in a local PL/SQL project.

No parameter schema in public metadata yet.

oracle_lineageLive-verified COLUMN lineage: cross-check source-derived owner.object.column edges against the guarded Oracle catalog and mark verified, missing, or type-mismatched drift.

Live-verified COLUMN lineage: cross-check source-derived owner.object.column edges against the guarded Oracle catalog and mark verified, missing, or type-mismatched drift.

No parameter schema in public metadata yet.

oracle_plsql_sastRun the offline plsql-sast rule harness over a local PL/SQL project and return findings plus skipped-rule evidence.

Run the offline plsql-sast rule harness over a local PL/SQL project and return findings plus skipped-rule evidence.

No parameter schema in public metadata yet.

oracle_plsql_docExtract doc comments from source or render an existing plsql-doc DocSet.

Extract doc comments from source or render an existing plsql-doc DocSet.

No parameter schema in public metadata yet.

oracle_plsql_live_snapshotExtract live Oracle dictionary rowsets and normalize them through plsql-intelligence CatalogSnapshotBuilder.

Extract live Oracle dictionary rowsets and normalize them through plsql-intelligence CatalogSnapshotBuilder.

No parameter schema in public metadata yet.

oracle_plsql_blast_radiusExtract a live catalog snapshot, then run the plsql-cicd change-impact predictor for a proposed ChangeSet.

Extract a live catalog snapshot, then run the plsql-cicd change-impact predictor for a proposed ChangeSet.

No parameter schema in public metadata yet.

Sponsors

Readme

oraclemcp: governed, least-privilege Oracle Database MCP server in pure Rust

CI crates.io license forbid(unsafe_code) ~3,300 tests nightly-2026-05-11

Governed, least-privilege Oracle Database access for AI agents — in pure Rust.


View the full README on GitHub

Details

Repository
github.com/muhdur/oraclemcp
Category
Databases
Package
ghcr.io/muhdur/oraclemcp:0.11.0
Transport
STDIO
Registry
MCP registry, active

Related Databases MCP servers

View all
1yugui923 avatarDB Connect MCPyugui923/db-connect-mcpMulti-database MCP server for PostgreSQL, MySQL, and ClickHouse4stars
2mimersql avatarMimer Mcpmimersql/mimer-mcpAn MCP server with Mimer SQL Database Connectivity3stars
3pilat avatarDataLinkpilat/mcp-datalinkMCP server for secure database access (PostgreSQL, MySQL, SQLite)3stars
4atarkowska avatarFastmcp Sqltoolsatarkowska/fastmcp-sqltoolsA MCP server provides SQL database access with support for PostgreSQL, MySQL, and SQLite.1stars
5stucchi avatarDB MCP Serverstucchi/db-mcp-serverDatabase MCP server for MySQL, PostgreSQL, MongoDB, and SQLite with SSH tunneling support.0stars
6amansingh63 avatarDBHub Analyticsamansingh63/dbhub-analyticsMCP server for Databricks, BigQuery, PostgreSQL, MySQL, SQL Server, SQLite, MariaDB0stars