oraclemcp

io.github.MuhDur由 GitHub 帳號 MuhDur 發布v0.11.0更新於 Oct 24, 2026

Engine-free, governed Oracle Database MCP server with a fail-closed SQL guard (unofficial).

已驗證STDIO僅桌面資料庫安全與監控

概覽

AI 產生的概覽

在本機執行的 MCP 伺服器,讓 AI 助理以受控管、最小權限的方式存取 Oracle 資料庫,預設唯讀並採失敗即拒絕的 SQL 防護。

可以做什麼
檢視與切換連線設定,查詢連線狀態與目前有效存取層級,並在設定上限內暫時提升工作階段層級,提升與非唯讀語句須先預覽再確認。執行帶繫結參數與列數上限的唯讀查詢、受控管的向量搜尋、跨 SCN 或跨資料庫差異比對,以及不執行僅分類的 SQL 預覽。瀏覽結構與物件:列出結構、檢查物件、描述資料表、檢視表、索引與觸發程序、取得 DDL 與原始碼、抽樣列、讀取 CLOB、搜尋原始碼與編譯錯誤。執行診斷:執行計畫、高負載 SQL、計畫時間軸、資料庫健康檢查,以及對照 Oracle 目錄核驗的欄位級血緣。
適用情境
當助理需要瀏覽、查詢或診斷 Oracle 資料庫(18c、21c 或 23ai),並希望由伺服器本身強制唯讀預設、對寫入、DDL 與管理操作設閘時使用。適合需要可稽核、最小權限資料庫存取而非自由 SQL 的團隊。
執行需求
以本機程序透過 stdio 執行(也支援 Streamable HTTP)。需要網路可達的 Oracle 資料庫,以及包含連線設定的 profiles.toml;憑證透過 env:、file: 或 keyring: 參照(例如 credential_ref 為 env:ORACLE_APP_PASSWORD)。支援使用者名稱密碼、IAM/OCI 權杖、TLS/TCPS 加 PEM 以及 Oracle 錢包。無需 Oracle Instant Client 或 C 工具鏈;README 說明僅從原始碼建置時需要 nightly Rust 工具鏈。
安裝前請注意
可寫設定會變更資料:非唯讀 SQL 經 oracle_execute 執行,DDL 工具會編譯或取代物件,執行計畫會寫入 PLAN_TABLE;DML 預設回滾,提交需要由預覽產生的確認權杖。若設定的 max_level 允許,可提升到 READ_WRITE、DDL 或 ADMIN,因此盡量使用唯讀或 protected 設定。憑證在執行時從 env:、file: 或 keyring: 參照解析;README 稱不會將密鑰寫入磁碟。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 oraclemcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

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.

oraclemcp is a Model Context Protocol server that gives an AI agent governed, least-privilege access to an Oracle database. Every raw statement the agent submits is classified before it can reach Oracle: read tools admit only statements proven read-only, and non-read SQL runs only through an explicit, profile-gated path that rolls DML back by default and requires a preview-derived grant before commit. Session elevation is explicit, temporary, and capped by profile max_level. The engine-free SQL guard remains independent of PL/SQL intelligence; the default binary embeds the offline engine. All crates use #![forbid(unsafe_code)].

An independent open-source project — not affiliated with Oracle. See how it compares to Oracle's own MCP servers.

Drivers

The maintained primary driver is oraclemcp-driver-cx, oraclemcp's pure-Rust thin Oracle driver. The pinned official Oracle oracledb beta also ships as a bounded connect-time fallback for compatible password connections. No Oracle Instant Client, ODPI-C, or C toolchain is required.

mermaid
flowchart LR    A["Connection request"] --> D["driver-cx<br/>pure-Rust · primary<br/>password · IAM · wallet · TCPS/PEM"]    D -->|"basic-password<br/>connect fails"| O["oracledb<br/>Oracle · beta<br/>connect-time fallback"]    D --> DB[("Oracle Database")]    O --> DB

Only a failed basic-password connect ever falls back; IAM, wallet, and TCPS/PEM always stay on driver-cx, and a fallback never migrates a live session.

The official alternate emits TIMESTAMP WITH TIME ZONE values as UTC (Z). Driver-cx retains numeric offsets for supported values. The official adapter refuses TSTZ binds because it cannot preserve their supplied offset.

OCI Autonomous Database connectivity has an open post-ACCEPT authentication/TTC failure report (#54); this branch does not establish that a driver fix has resolved it. Token sources and wallet support do not prove ADB connectivity. Autonomous OCI token minting is also not implemented.

At a glance

Tools43 governed MCP tools + 25 compatibility aliases, each with a real JSON Schema and MCP safety hints
Safetyfail-closed SQL classifier · 4-level ladder READ_ONLY → READ_WRITE → DDL → ADMIN · DML rollback-by-default · signed, hash-chained audit
Authusername/password over TCP · pre-fetched IAM database tokens · TLS/TCPS + PEM · Oracle wallet (cwallet.sso); ADB limitation above
Oracle18c · 21c · 23ai — including governed native VECTOR search
Code9 pure-Rust crates + binary · #![forbid(unsafe_code)] · ~3,300 tests + a differential fuzzer
Transportsstdio (default) + Streamable HTTP with rustls TLS/mTLS and optional OAuth

Quick start

One line installs or updates on macOS and Linux (works pasted in a terminal or in a non-interactive agent run):

sh
curl -fsSL "https://raw.githubusercontent.com/MuhDur/oraclemcp/main/install.sh?$(date +%s)" | bash

It verifies a SHA-256 digest (plus cosign signature/provenance when cosign is present) and installs oraclemcp and the short om alias into $HOME/.local. Also available: Windows (install.ps1), Docker (ghcr.io/muhdur/oraclemcp:latest), and cargo binstall oraclemcp. Air-gapped offline install, verification postures, and service install are documented via bash install.sh --help and docs/. No npm/npx channel is offered.

Onboard and connect a client:

sh
oraclemcp setup --discover           # one READ_ONLY profile per tnsnames.ora entry — consent-gated, no secrets written to diskoraclemcp doctor                     # offline diagnostics: driver, TNS/wallet, classifier, NLSoraclemcp serve --profile db_ro --allow-no-auth    # stdio (local dev)

Wire it into an MCP client (e.g. Claude Desktop) over stdio:

json
{  "mcpServers": {    "oracle": {      "command": "oraclemcp",      "args": ["serve", "--profile", "db_ro", "--allow-no-auth"]    }  }}

Several local MCP clients can use this same stdio configuration concurrently, including write-capable profiles. When service state is needed, clients automatically attach to one local broker that owns the audit writer and database pools. Each client retains its own session level, confirmation tokens, transaction and cancellation. The broker exits after 60 seconds without clients. HTTP also gives each client an isolated stateful session by default. HTTP and stdio clients share that same broker and state root. Each local client must resolve its own configured database credentials. Credentials that differ from the broker's receive ORACLEMCP_BROKER_CREDENTIAL_MISMATCH before opening a session.

Or run authenticated HTTP with a shown-once bearer, and open the local dashboard through a secret-free one-time pairing URL:

sh
oraclemcp --json clients issue --label claude --scope oracle:readoraclemcp serve --listen 127.0.0.1:7070 --client-credentials --profile db_room dashboard

doctor output is safe to paste into agent sessions — it omits connect strings, usernames, credential references, passwords, wallet paths, IAM tokens, and server DNs while keeping structured failure classes and ORA codes.

Why oraclemcp

  • Fail-closed by construction. A SELECT an agent dreams up can never silently become a DELETE. Read tools admit only proven read-only SELECT/WITH and dictionary introspection. Non-read execution is isolated in oracle_execute, bounded by the profile ceiling, rollback-by-default for DML, and explicit-confirm-before-commit. Forbidden constructs (multi-statement batches, string-concat dynamic SQL, an unproven function call inside a SELECT) are rejected before touching Oracle, with a typed envelope and a suggested safe alternative.
  • Agent-first UX. Every tool ships a real JSON Schema, title, and explicit MCP annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint). Errors are structured ErrorEnvelopes with machine-stable classes, fuzzy suggestions, and next-step hints — never bare strings. A zero-arg oracle_capabilities tool lets an agent discover the surface.
  • Pure Rust, no unsafe. Every crate is #![forbid(unsafe_code)]; the fail-closed classifier is a real sqlparser AST classifier and carries a differential cargo-fuzz target.
  • Two transports. stdio (default) and Streamable HTTP (--listen) with fail-closed auth defaults, optional OAuth bearer enforcement, and native rustls TLS/mTLS.

How it compares

Oracle ships an official MCP built into SQLcl; ours is independent. On the axis that decides whether you can safely point an AI agent at a database — the guard between the agent and your data — here is the honest, evidence-backed contrast:

Oracle SQLcl MCPoraclemcp
Default postureNot read-onlyRead-only, fail-closed
Write / DDL controlNo in-server gate — relies on DB grants + a non-prod replicaIn-server: classifier + READ_ONLY→ADMIN ladder + preview→confirm-token + rollback-by-default
Safety boundaryYour grant hygiene — a wrong grant or a clever prompt can writeThe server itself — enforced regardless of grants
SQL handlingFree-form, tagged /* LLM in use */Free-form, but classified before it reaches Oracle
AuditDB-side log table (DBTOOLS$MCP_LOG)Signed, hash-chained HMAC audit + verdict certificates
RuntimeJava — needs the JVM + a SQLcl installOne pure-Rust static binary — no JVM, C toolchain, or Instant Client

SQLcl-MCP rows reflect Oracle's own documentation (configure a minimum-privilege user, prefer a non-prod replica, audit via DBTOOLS$MCP_LOG); the oraclemcp rows are enforced in this repository. Oracle is the official, supported option, and its managed Autonomous MCP takes a different curated-report approach with per-user identity — strong for locked-down read-only BI.

Safety model

When a guarded request is refused, use the generated refusal catalogue for its typed safe next action; it never recommends bypassing the guard.

The core invariant is a fail-closed SQL guard — not "read-only forever." Operating levels form a ladder, READ_ONLY < READ_WRITE < DDL < ADMIN, surfaced through oracle_execute, oracle_compile_object, oracle_create_or_replace, oracle_patch_source, and oracle_set_session_level. Read-only is the default and the cap for unconfigured or protected profiles; a profile's max_level may permit escalation up to ADMIN. Every escalation is guarded:

  • a preview → confirmation-token step-up before any non-read statement runs,
  • a temporary, TTL-bounded elevation window,
  • the classifier still gating every statement at the current level,
  • DML rolling back by default, protected profiles pinned at READ_ONLY with an immutable ceiling, and OAuth scopes that can only lower the effective level,
  • a signed, append-only, HMAC-SHA256 hash-chained audit record for every privileged action.
mermaid
flowchart LR    A["Agent SQL"] --> C{"Fail-closed<br/>classifier"}    C -->|"proven READ_ONLY"| R["Read tools · rows returned"]    C -->|"forbidden / unparseable"| X["Refuse<br/>typed ErrorEnvelope"]    C -->|"non-read"| L{"Operating-level gate<br/>READ_ONLY → READ_WRITE → DDL → ADMIN"}    L -->|"above level / ceiling"| X    L -->|"within profile ceiling"| P["Preview → confirmation token"]    P --> E["Execute"]    E -->|"DML"| RB["Rollback by default<br/>commit only with grant"]    R --> AU[("Signed hash-chained audit")]    E --> AU

An unparseable or unclassifiable statement fails closed. Statements can emit a verdict certificate bound to the classified bytes and the audit record; the routine-purity law it relies on is specified in proofs/purity-core/PurityCore.lean and pinned to the Rust classifier by a conformance test.

Governed dimensions

A database session is treated as a governed surface with several independent controls, each with an executable proof script:

DimensionWhat it governsProof
Costper-call max_query_cost + durable per-principal budget; over-ceiling estimates refused pre-executioncost_gate.sh
Timeas_of flashback reads, cross-SCN/cross-DB oracle_diff, historical plan timelinestime_diff.sh
Egressprofile-scoped result masking applied before rows leave the server, with mask certificates (ADR 0008)served_egress.sh
Proofverdict certificates + async Rekor anchoring of audit heads (ADR 0010)verdict_certificate.sh
Policyper-profile deny/narrow-only SQL policy that can tighten but never widen the base classifier (ADR 0009)sql_policy.sh
Living DBCQN change notifications, oracle_orient freshness/drift, Arrow IPC outputliving_db.sh
Vector searchbounded, fail-closed 23ai oracle_semantic_search through the full policy/masking/audit pathgoverned_rag.sh
Fleetmap or compare several MCP-visible profiles at once; unreachable targets become typed UNREACHABLE/FAIL_CLOSED lanesfleet.sh
Reversible workspacenative SAVEPOINT checkpoints, held DML, oracle_undo_to, undo-aware oracle_preview_dmlreversible.sh
Editionsedition-based redefinition via an allowlist, persisted proposals, and an ADMIN-only mergeeditions.sh
Incident captureom incident capture/replay — redacted, deterministic bundles re-classified offline (ADR 0011)incident.sh
Diagnosticsoracle_top_queries (free V$SQLSTATS) and a read-only oracle_db_health suite that degrades cleanly on least-privilege accounts (ADR 0005)version-matrix lanes

What an agent sees depends on the active level and effective ceiling. At READ_ONLY, tools/list includes oracle_execute and execute_approved when the effective profile/OAuth ceiling permits READ_WRITE; their visibility grants no write authority. Other higher-level tools remain hidden until the session is elevated within the ceiling. A call to a not-yet-visible tool is refused with the same typed ErrorEnvelope as any other below-level statement.

Tools

The tables below are generated from the server's tool registry — the same descriptors tools/list serves — by scripts/docs_generate.sh (rendered from oraclemcp robot-docs tools --markdown). Do not hand-edit them; edit the registry and run bash scripts/docs_generate.sh --write.

ToolTitlePurposeVisible fromDestructive
oracle_list_profilesOracle List ProfilesList configured connection profiles without exposing connect strings, usernames, or credential references.READ_ONLYno
oracle_connection_infoOracle 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.READ_ONLYno
oracle_switch_profileOracle Switch ProfileReconnect this MCP server to another configured profile by name and report that profile's effective MCP access.READ_ONLYno
oracle_set_session_levelOracle Set Session LevelPreview or apply a temporary session operating-level elevation within the active profile ceiling, or drop back to READ_ONLY.READ_ONLYyes
oracle_queryOracle QueryRun a read-only SELECT with positional binds; paginated and row/byte capped.READ_ONLYno
oracle_semantic_searchOracle Semantic SearchRun a bounded, fail-closed 23ai vector search through the same policy, semantic-resolution, masking, and audit path as oracle_query.READ_ONLYno
oracle_diffOracle DiffDiff one proven read-only SELECT across two Oracle SCNs, or across two databases.READ_ONLYno
oracle_preview_sqlOracle Preview SQLClassify SQL without executing the candidate and bind the exact SQL, typed binds, commit/hold mode, output caps and timeout into any confirmation.READ_ONLYno
oracle_executeOracle 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.READ_ONLYyes
oracle_checkpointOracle 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.READ_WRITEyes
oracle_undo_toOracle Undo ToUndo the reversible workspace: ROLLBACK TO SAVEPOINT discards every held statement executed after that checkpoint and releases the checkpoints stacked above it, leaving the transaction open.READ_WRITEyes
oracle_preview_dmlOracle Preview DMLDry-run supported DML only when the current level admits it and a complete mutation closure proves reversible effects.READ_WRITEyes
oracle_compile_objectOracle 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.DDLyes
oracle_create_or_replaceOracle Create Or ReplacePreview or apply one CREATE OR REPLACE statement through the classifier and active DDL profile gate.DDLyes
oracle_patch_sourceOracle 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.DDLyes
oracle_list_schemasOracle List SchemasList schemas that own objects visible to this session, optionally filtered by name.READ_ONLYno
oracle_schema_inspectOracle Schema InspectList objects in the current schema, one owner, or all accessible schemas, with optional type/name filters.READ_ONLYno
oracle_search_objectsOracle Search ObjectsUnified read-only object search/inspection with a detail_level.READ_ONLYno
oracle_orientOracle 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.READ_ONLYno
oracle_describeOracle DescribeDescribe a table/view's columns and constraint metadata.READ_ONLYno
oracle_describe_indexOracle Describe IndexDescribe one index's metadata, indexed columns, and function-based expressions.READ_ONLYno
oracle_describe_triggerOracle Describe TriggerDescribe one trigger's timing, event, target table, status, and body.READ_ONLYno
oracle_describe_viewOracle Describe ViewDescribe one view's definition metadata and columns.READ_ONLYno
oracle_get_ddlOracle Get DDLFetch an object's DDL via DBMS_METADATA.GET_DDL (allowlisted object types).READ_ONLYno
oracle_get_sourceOracle 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.READ_ONLYno
oracle_sample_rowsOracle Sample RowsRead arbitrary first rows of a table or view with a hard row cap.READ_ONLYno
oracle_read_clobOracle Read CLOBRead one CLOB/NCLOB/text value by key with a character cap.READ_ONLYno
oracle_compile_errorsOracle Compile ErrorsRetrieve compile errors for the current schema, an owner, or one object (ALL_ERRORS).READ_ONLYno
oracle_search_sourceOracle Search SourceFull-text search across ALL_SOURCE for a needle (row- and line-capped).READ_ONLYno
oracle_plscope_inspectOracle PL/Scope InspectInspect PL/Scope identifier and SQL statement metadata for one PL/SQL object when ALL_IDENTIFIERS/ALL_STATEMENTS are populated.READ_ONLYno
oracle_explain_planOracle 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.READ_WRITEyes
oracle_top_queriesOracle 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_ONLYno
oracle_plan_timelineOracle Plan TimelineRead-only historical optimizer plan and relative-cost timeline from AWR snapshots for one SQL ID.READ_ONLYno
oracle_db_healthOracle Db HealthRead-only DBA health-check suite.READ_ONLYno
oracle_plsql_parseOracle Plsql ParseParse PL/SQL source offline with the grammar parser and return declarations and diagnostics.READ_ONLYno
oracle_plsql_analyzeOracle Plsql AnalyzeRun the offline plsql-intelligence engine over a local project root and return doctor summaries.READ_ONLYno
oracle_plsql_what_breaksOracle Plsql What BreaksPredict invalidation and recompilation impact for a PL/SQL ChangeSet without touching Oracle.READ_ONLYno
oracle_plsql_lineageOracle Plsql LineageRun offline dependency-lineage traversal from a logical object id in a local PL/SQL project.READ_ONLYno
oracle_lineageOracle 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.READ_ONLYno
oracle_plsql_sastOracle Plsql SastRun the offline plsql-sast rule harness over a local PL/SQL project and return findings plus skipped-rule evidence.READ_ONLYno
oracle_plsql_docOracle Plsql DocExtract doc comments from source or render an existing plsql-doc DocSet.READ_ONLYno
oracle_plsql_live_snapshotOracle Plsql Live SnapshotExtract live Oracle dictionary rowsets and normalize them through plsql-intelligence CatalogSnapshotBuilder.READ_ONLYno
oracle_plsql_blast_radiusOracle Plsql Blast RadiusExtract a live catalog snapshot, then run the plsql-cicd change-impact predictor for a proposed ChangeSet.READ_ONLYno

Every advertised tool descriptor includes a human title plus explicit MCP annotations; these hints are advisory for clients, while the fail-closed classifier and operating-level gate remain the enforcement boundary. oracle_query and oracle_explain_plan also advertise outputSchema, and query results keep Oracle NUMBER cells as strings by default (opt into numbers_as_float=true explicitly). Beyond tools/*, initialize advertises resources, prompts, and completions (protocol 2025-11-25): resources/list exposes oracle://capabilities and oracle://tools, and read templates for oracle://schema/{owner} and oracle://object/{owner}/{type}/{name} route through the same safe dispatch path.

Compatibility aliases

For migrations from shorter Oracle MCP tool surfaces, the server advertises compatibility aliases that route to the guarded oracle_* tools and share their classifier, validation, and operating-level behavior. execute_approved, deploy_ddl, and read_patch_preview are wrappers rather than plain renames.

AliasRoutes to
current_databaseoracle_connection_info
switch_databaseoracle_switch_profile
enable_writesoracle_set_session_level
disable_writesoracle_set_session_level
queryoracle_query
preview_sqloracle_preview_sql
execute_approvedoracle_execute
compile_objectoracle_compile_object
compile_with_warningsoracle_compile_object
create_or_replaceoracle_create_or_replace
patch_packageoracle_patch_source
patch_vieworacle_patch_source
read_patch_previeworacle_patch_source
deploy_ddloracle_create_or_replace
list_objectsoracle_schema_inspect
list_schemasoracle_list_schemas
get_schemaoracle_schema_inspect
describe_tableoracle_describe
describe_indexoracle_describe_index
describe_triggeroracle_describe_trigger
describe_vieworacle_describe_view
get_ddloracle_get_ddl
get_object_sourceoracle_get_source
get_errorsoracle_compile_errors
get_cloboracle_read_clob

Deprecated argument aliases remain accepted until their removal version. Send only one spelling of each argument; canonical-plus-alias and two-alias requests are refused, even when values are equal. A lone alias emits _meta.deprecations.

ToolDeprecated argumentCanonical argumentRemoval
oracle_switch_profiledbprofile0.14.0
oracle_set_session_leveltarget_levellevel0.14.0
oracle_set_session_leveltokenconfirm0.14.0
oracle_set_session_levelconfirmation_tokenconfirm0.14.0
oracle_querylimitmax_rows0.14.0
oracle_queryexport_to_resourceexport0.14.0
oracle_querystreamstreaming0.14.0
oracle_diffdb_aprofile_a0.14.0
oracle_diffdb_bprofile_b0.14.0
oracle_diffkeyskey0.14.0
oracle_diffkey_columnskey0.14.0
oracle_preview_sqldbms_outputcapture_dbms_output0.14.0
oracle_preview_sqlmax_dbms_output_linesdbms_output_max_lines0.14.0
oracle_preview_sqlmax_dbms_output_charsdbms_output_max_chars0.14.0
oracle_executetokenconfirm0.14.0
oracle_executeconfirmation_tokenconfirm0.14.0
oracle_executedbms_outputcapture_dbms_output0.14.0
oracle_executemax_dbms_output_linesdbms_output_max_lines0.14.0
oracle_executemax_dbms_output_charsdbms_output_max_chars0.14.0
oracle_undo_tocheckpointname0.14.0
oracle_preview_dmldbms_outputcapture_dbms_output0.14.0
oracle_preview_dmlmax_dbms_output_linesdbms_output_max_lines0.14.0
oracle_preview_dmlmax_dbms_output_charsdbms_output_max_chars0.14.0
oracle_preview_dmlwitness_sqlwitness0.14.0
oracle_preview_dmllimitmax_rows0.14.0
oracle_compile_objectobject_namename0.14.0
oracle_compile_objectenable_warningswarnings0.14.0
oracle_compile_objecttokenconfirm0.14.0
oracle_compile_objectconfirmation_tokenconfirm0.14.0
oracle_create_or_replacesqlsource_code0.14.0
oracle_create_or_replaceddlsource_code0.14.0
oracle_create_or_replacetokenconfirm0.14.0
oracle_create_or_replaceconfirmation_tokenconfirm0.14.0
oracle_patch_sourceobject_namename0.14.0
oracle_patch_sourcesearch_textold_text0.14.0
oracle_patch_sourcereplacementnew_text0.14.0
oracle_patch_sourcetokenconfirm0.14.0
oracle_patch_sourceconfirmation_tokenconfirm0.14.0
oracle_list_schemaslimitmax_rows0.14.0
oracle_schema_inspectlimitmax_rows0.14.0
oracle_search_objectsobject_typeobject_types0.14.0
oracle_search_objectsdetaildetail_level0.14.0
oracle_search_objectslimitmax_rows0.14.0
oracle_orientlimitmax_rows0.14.0
oracle_describetablename0.14.0
oracle_describetable_namename0.14.0
oracle_describelimitmax_rows0.14.0
oracle_describe_indexindex_namename0.14.0
oracle_describe_triggertrigger_namename0.14.0
oracle_describe_viewview_namename0.14.0
oracle_get_ddlobject_namename0.14.0
oracle_get_sourceobject_namename0.14.0
oracle_sample_rowstablename0.14.0
oracle_sample_rowstable_namename0.14.0
oracle_sample_rowslimitmax_rows0.14.0
oracle_read_clobtablename0.14.0
oracle_read_clobtable_namename0.14.0
oracle_read_clobclob_colclob_column0.14.0
oracle_read_clobpk_colpk_column0.14.0
oracle_read_clobpk_valpk_value0.14.0
oracle_compile_errorsobject_namename0.14.0
oracle_compile_errorslimitmax_rows0.14.0
oracle_search_sourcelimitmax_rows0.14.0
oracle_plscope_inspectobject_namename0.14.0
oracle_plscope_inspectlimitmax_rows0.14.0
oracle_db_healthcheckshealth_type0.14.0
oracle_db_healthcheckhealth_type0.14.0
switch_databasedbprofile0.14.0
enable_writestokenconfirm0.14.0
enable_writesconfirmation_tokenconfirm0.14.0
enable_writesdbprofile0.14.0
disable_writesdbprofile0.14.0
querylimitmax_rows0.14.0
queryexport_to_resourceexport0.14.0
querystreamstreaming0.14.0
preview_sqldbms_outputcapture_dbms_output0.14.0
preview_sqlmax_dbms_output_linesdbms_output_max_lines0.14.0
preview_sqlmax_dbms_output_charsdbms_output_max_chars0.14.0
execute_approvedconfirmtoken0.14.0
execute_approvedconfirmation_tokentoken0.14.0
execute_approveddbms_outputcapture_dbms_output0.14.0
execute_approvedmax_dbms_output_linesdbms_output_max_lines0.14.0
execute_approvedmax_dbms_output_charsdbms_output_max_chars0.14.0
compile_objectobject_namename0.14.0
compile_objectenable_warningswarnings0.14.0
compile_objecttokenconfirm0.14.0
compile_objectconfirmation_tokenconfirm0.14.0
compile_with_warningsobject_namename0.14.0
compile_with_warningstokenconfirm0.14.0
compile_with_warningsconfirmation_tokenconfirm0.14.0
create_or_replacesqlsource_code0.14.0
create_or_replaceddlsource_code0.14.0
create_or_replacetokenconfirm0.14.0
create_or_replaceconfirmation_tokenconfirm0.14.0
patch_packageobject_namename0.14.0
patch_packagesearch_textold_text0.14.0
patch_packagereplacementnew_text0.14.0
patch_packagetokenconfirm0.14.0
patch_packageconfirmation_tokenconfirm0.14.0
patch_viewobject_namename0.14.0
patch_viewsearch_textold_text0.14.0
patch_viewreplacementnew_text0.14.0
patch_viewtokenconfirm0.14.0
patch_viewconfirmation_tokenconfirm0.14.0
read_patch_previewobject_namename0.14.0
deploy_ddlsqlddl0.14.0
deploy_ddlsource_codeddl0.14.0
deploy_ddltokenconfirm0.14.0
deploy_ddlconfirmation_tokenconfirm0.14.0
list_objectslimitmax_rows0.14.0
list_schemaslimitmax_rows0.14.0
get_schemalimitmax_rows0.14.0
describe_tabletablename0.14.0
describe_tabletable_namename0.14.0
describe_tablelimitmax_rows0.14.0
describe_indexindex_namename0.14.0
describe_triggertrigger_namename0.14.0
describe_viewview_namename0.14.0
get_ddlobject_namename0.14.0
get_object_sourceobject_namename0.14.0
get_errorsobject_namename0.14.0
get_errorslimitmax_rows0.14.0
get_clobtablename0.14.0
get_clobtable_namename0.14.0
get_clobclob_colclob_column0.14.0
get_clobpk_colpk_column0.14.0
get_clobpk_valpk_value0.14.0

Configuration

Connection profiles live in profiles.toml. No secrets are written to disk — credentials are references resolved at runtime through env:, file:, or keyring:. A minimal read-only profile:

toml
[profiles.db_ro]connect_string = "//db.example.com:1521/FREEPDB1"username       = "APP_RO"credential_ref = "env:ORACLE_APP_PASSWORD"# default_level defaults to read_only and is the ceiling for this profile;# set max_level to permit explicit, TTL-bounded elevation up to ADMIN.

The full field reference — HTTP TLS/mTLS/OAuth listeners, the signed audit chain, result-masking policy, fleet/monitor profiles, TCPS/wallet and IAM/DRCP/proxy auth, and per-call timeout/SDU budgets — is in docs/configuration.md.

Documentation

Build from source

This branch is pinned to nightly-2026-05-11 and has no stable MSRV (the pin arrives transitively through asupersync, and Windows needs windows_by_handle; see docs/toolchain.md). Prefer the verified release archive above; build from source only when you intend to:

sh
rustup toolchain install nightly-2026-05-11 --component rustfmt --component clippycargo +nightly-2026-05-11 install oraclemcp

Live database access uses the maintained primary oraclemcp-driver-cx driver and requires no Oracle Instant Client, ODPI-C, or C toolchain. Set TNS_ADMIN for net-service-name connections when needed.

The release workflow builds every archive and the single ghcr.io/muhdur/oraclemcp image with the offline PL/SQL-intelligence engine included. The default source build includes it too; custom --no-default-features builds omit it. There is no separate engine image.

License

Licensed under Apache-2.0 OR MIT. The Docker image and crates do not redistribute Oracle Instant Client.

來源:README.md,提交 6867ca0

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

2
  1. v0.11.0最新Sep 18, 2026
  2. v0.10.0Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分