oraclemcp について
oraclemcpは、AIエージェント向けにOracle Databaseへのアクセスを制御する純Rust製MCPサーバーです。SQL実行前のフェイルクローズ分類に加え、権限レベル、ロールバック、監査記録を備えています。
主な機能
- 01フェイルクローズのSQL分類
- 02READ_ONLYからADMINまでの権限階層
- 03DMLの既定ロールバックとコミット確認
- 04署名付きハッシュチェーン監査
- 05stdioとStreamable HTTPのトランスポート
- 06Oracle VECTOR検索のガバナンス
活用シーン
- 01読み取り専用プロファイルでのOracle検索
- 02プレビューと確認を経た書き込み
- 03特権データベース操作の監査
- 04Oracle 23aiでの制御されたベクトル検索
MCP 対応
Oracle Databaseへのアクセス用に、43個のガバナンス対象MCPツールと互換エイリアスを公開します。stdioとTLS/mTLS対応のStreamable HTTPをサポートします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm ghcr.io/muhdur/oraclemcp:0.11.0ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/muhdur/oraclemcp:0.11.0stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
AI エージェント向けの、ガバナンスが適用された最小権限の Oracle Database アクセスを、純粋な Rust で実現します。
oraclemcp は、AI エージェントにガバナンスが適用された最小権限の Oracle データベースアクセスを提供する Model Context Protocol サーバーです。エージェントが送信するすべての生のステートメントは、Oracle に到達する前に分類されます。読み取りツールでは読み取り専用と証明されたステートメントのみが許可され、読み取り以外の SQL は、プロファイルで許可された明示的な経路を通じてのみ実行されます。この経路では、デフォルトで DML をロールバックし、コミット前にプレビューに基づく許可を必須とします。セッションの権限昇格は明示的かつ一時的で、プロファイルの max_level を上限とします。エンジンに依存しない SQL ガードは PL/SQL の解析機能から独立しており、デフォルトのバイナリにはオフラインエンジンが組み込まれています。すべてのクレートで #![forbid(unsafe_code)] を使用しています。
Oracle とは関係のない独立したオープンソースプロジェクトです。Oracle 独自の MCP サーバーとの比較をご覧ください。
ドライバー
oraclemcp は、主要な接続経路として、独自の成熟した純粋な Rust 製 Oracle ドライバーを使用します。Oracle 公式の oracledb クレートは、友好的な合意のもとでクレート名を Oracle に譲ったもので、現在はベータ版のため、万一問題が発生した場合に限り、接続時に限定して使用するフォールバックとして提供されます。Oracle Instant Client、ODPI-C、C ツールチェーンは不要です。
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
フォールバックが発生するのは基本認証での接続に失敗した場合のみです。IAM、ウォレット、TCPS/PEM は常に driver-cx を使用し、フォールバックによって確立済みのセッションが移行することはありません。
概要
| ツール | 43 個のガバナンス対応 MCP ツールと 25 個の互換エイリアス。それぞれに実際の JSON Schema と MCP セーフティヒントを備えています |
| 安全性 | フェイルクローズの SQL 分類器 · 4 段階の権限レベル READ_ONLY → READ_WRITE → DDL → ADMIN · デフォルトで DML をロールバック · 署名付きハッシュチェーン監査 |
| 認証 | TCP 経由のユーザー名/パスワード · IAM / OCI ADB トークン · TLS/TCPS + PEM · Oracle ウォレット(cwallet.sso) |
| Oracle | 18c · 21c · 23ai — ガバナンス対応のネイティブ VECTOR 検索を含みます |
| コード | 純粋な Rust 製の 9 個のクレート + バイナリ · #![forbid(unsafe_code)] · 約3,300件のテスト + 差分ファザー |
| トランスポート | stdio(デフォルト)+ rustls による TLS/mTLS とオプションの OAuth に対応した Streamable HTTP |
クイックスタート
macOS と Linux では、次の1行でインストールまたは更新できます(ターミナルに貼り付けて実行する場合も、非インタラクティブなエージェント実行の場合も利用できます)。
curl -fsSL "https://raw.githubusercontent.com/MuhDur/oraclemcp/main/install.sh?$(date +%s)" | bash
SHA-256 ダイジェスト(cosign が存在する場合は cosign の署名と来歴も)を検証し、oraclemcp と短縮エイリアスの om を $HOME/.local にインストールします。Windows(install.ps1)、Docker(ghcr.io/muhdur/oraclemcp:latest)、cargo binstall oraclemcp も利用できます。エアギャップ環境でのオフラインインストール、検証方法、サービスのインストールについては、bash install.sh --help と docs/ に記載されています。npm/npx の配布経路はありません。
オンボーディングしてクライアントを接続します。
oraclemcp setup --discover # one READ_ONLY profile per tnsnames.ora entry — consent-gated, no secrets written to disk
oraclemcp doctor # offline diagnostics: driver, TNS/wallet, classifier, NLS
oraclemcp serve --profile db_ro --allow-no-auth # stdio (local dev)
stdio 経由で MCP クライアント(Claude Desktop など)に接続します。
{
"mcpServers": {
"oracle": {
"command": "oraclemcp",
"args": ["serve", "--profile", "db_ro", "--allow-no-auth"]
}
}
}
複数のローカル MCP クライアントは、書き込み可能なプロファイルを含め、同じ stdio 設定を同時に使用できます。サービスの状態が必要になると、クライアントは監査ログの書き込みとデータベースプールを管理する1つのローカルブローカーに自動的に接続します。各クライアントは、それぞれのセッションレベル、確認トークン、トランザクション、キャンセルを保持します。クライアントが60秒間接続しないと、ブローカーは終了します。HTTP でも、デフォルトでクライアントごとに分離されたステートフルセッションが提供されます。HTTP クライアントと stdio クライアントは、同じブローカーと状態のルートを共有します。各ローカルクライアントは、設定されたデータベースの認証情報をそれぞれ解決する必要があります。ブローカーの認証情報と異なる認証情報を持つクライアントは、セッションを開く前に ORACLEMCP_BROKER_CREDENTIAL_MISMATCH を受け取ります。
または、表示は1回限りのベアラーを使って認証済み HTTP を実行し、秘密情報を含まない1回限りのペアリング URL からローカルダッシュボードを開きます。
oraclemcp --json clients issue --label claude --scope oracle:read
oraclemcp serve --listen 127.0.0.1:7070 --client-credentials --profile db_ro
om dashboard
doctor の出力はエージェントのセッションに安全に貼り付けられます。接続文字列、ユーザー名、認証情報への参照、パスワード、ウォレットのパス、IAM トークン、サーバー DN は省略しつつ、構造化された障害クラスと ORA コードは保持します。
oraclemcp を選ぶ理由
- 設計上、フェイルクローズです。 エージェントが考案した
SELECTが、気付かないうちにDELETEになることはありません。読み取りツールでは、読み取り専用と証明されたSELECT/WITHとディクショナリのイントロスペクションのみが許可されます。読み取り以外の実行はoracle_executeに分離され、プロファイルの上限によって制限され、DML はデフォルトでロールバックされ、コミット前には明示的な確認が必要です。複数ステートメントのバッチ、文字列連結による動的 SQL、SELECT内にある未証明の関数呼び出しなどの禁止構文は、型付きエンベロープと安全な代替案の提案とともに、Oracle に触れる前に拒否されます。 - エージェントを第一に考えた UX。 すべてのツールには、実際の JSON Schema、タイトル、明示的な MCP アノテーション(
readOnlyHint、destructiveHint、idempotentHint、openWorldHint)が付属します。エラーは、機械的に安定したクラス、曖昧な入力に対する提案、次の手順のヒントを備えた構造化されたErrorEnvelopeであり、単なる文字列ではありません。引数なしのoracle_capabilitiesツールを使って、エージェントが利用可能な機能を確認できます。 - 純粋な Rust で、
unsafeはありません。 すべてのクレートで#![forbid(unsafe_code)]が指定されています。フェイルクローズの分類器は、実際のsqlparserAST 分類器であり、差分 cargo-fuzz ターゲットも備えています。 - 2つのトランスポート。 stdio(デフォルト)と Streamable HTTP(
--listen)に対応し、フェイルクローズの認証デフォルト、オプションの OAuth ベアラー強制、ネイティブな rustls TLS/mTLS を備えています。
比較
Oracle は SQLcl に公式の MCP を組み込んで提供していますが、こちらは独立したプロジェクトです。AI エージェントをデータベースに安全につなげられるかを左右する、エージェントとデータの間にあるガードという観点で、根拠に基づく率直な比較を示します。
| Oracle SQLcl MCP | oraclemcp | |
|---|---|---|
| デフォルトの動作 | 読み取り専用ではありません | 読み取り専用、フェイルクローズ |
| 書き込み/DDL の制御 | サーバー内にゲートがありません。DB 権限と非本番レプリカに依存します | サーバー内で制御します。分類器+READ_ONLY→ADMIN の段階的なレベル設定+プレビュー→確認トークン+デフォルトでロールバック |
| 安全境界 | 権限付与の管理です。誤った権限付与や巧妙なプロンプトによって書き込みが可能になります | サーバー自体です。権限付与にかかわらず強制されます |
| SQL の処理 | 自由形式で、/* LLM in use */ タグが付けられます | 自由形式ですが、Oracle に渡す前に分類されます |
| 監査 | DB 側のログテーブル(DBTOOLS$MCP_LOG) | 署名付きのハッシュチェーン HMAC 監査+判定証明書 |
| 実行環境 | Java。JVM と SQLcl のインストールが必要です | Rust 製の静的バイナリ 1 つで完結。JVM、C ツールチェーン、Instant Client は不要です |
SQLcl-MCP の各項目はOracle の公式ドキュメント(最小権限のユーザーを構成し、非本番レプリカを優先し、DBTOOLS$MCP_LOG で監査すること)に基づいています。oraclemcp の各項目は、このリポジトリで強制されます。Oracle は公式のサポート対象オプションです。また、Oracle が管理する Autonomous MCP は、ユーザーごとの ID を用いた、厳選されたレポートを提供する別の方式を採用しており、アクセスを厳格に制限した読み取り専用の BI に適しています。
安全モデル
ガードによってリクエストが拒否された場合は、生成された拒否カタログを参照し、型付きの安全な次のアクションを確認してください。ガードを迂回する方法が推奨されることはありません。
中核となる不変条件は、フェイルクローズの SQL ガードです。「永久に読み取り専用」ということではありません。操作レベルは READ_ONLY < READ_WRITE < DDL < ADMIN の段階になっており、oracle_execute、oracle_compile_object、oracle_create_or_replace、oracle_patch_source、oracle_set_session_level を通じて利用できます。読み取り専用はデフォルトであり、未構成のプロファイルまたは protected プロファイルの上限です。プロファイルの max_level では、ADMIN まで引き上げることができます。レベルを引き上げる際は、必ず以下のガードが適用されます。
- 読み取り以外の文を実行する前に、プレビュー → 確認トークンによる段階的な昇格を行います。
- 一時的で、TTL によって期限が定められた昇格期間を設けます。
- 現在のレベルで、分類器が引き続きすべての文を制御します。
- DML はデフォルトでロールバックされ、
protectedプロファイルは変更不可能な上限でREAD_ONLYに固定されます。また、OAuth スコープでは有効なレベルを引き下げることしかできません。 - 特権アクションごとに、署名付きの追記専用 HMAC-SHA256 ハッシュチェーン監査記録を作成します。
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
解析できない、または分類できない文はフェイルクローズで拒否されます。文には、分類されたバイト列と監査記録に結び付けられた判定証明書を付与できます。この証明書が依拠するルーチン純粋性の法則は、proofs/purity-core/PurityCore.lean に仕様が定義されており、適合性テストによって Rust 分類器との整合性が固定されています。
ガバナンス対象の側面
データベースセッションは、複数の独立した制御が適用されるガバナンス対象として扱われます。それぞれに実行可能な検証スクリプトがあります。
| 側面 | 適用される制御 | 検証 |
|---|---|---|
| コスト | 呼び出しごとの max_query_cost と、プリンシパルごとの永続的な予算。上限を超える見積もりは実行前に拒否されます | cost_gate.sh |
| 時間 | as_of フラッシュバック読み取り、SCN 間/DB 間の oracle_diff、過去の実行計画タイムライン | time_diff.sh |
| データ送信 | 結果がサーバーから出る前に適用されるプロファイルスコープの結果マスキングと、マスキング証明書(ADR 0008) | served_egress.sh |
| 証明 | 判定証明書と、監査ヘッドの Rekor への非同期アンカリング(ADR 0010) | verdict_certificate.sh |
| ポリシー | プロファイルごとの拒否/制限のみの SQL ポリシー。ベース分類器を厳しくすることはできますが、緩和することはできません(ADR 0009) | sql_policy.sh |
| 稼働中の DB | CQN 変更通知、oracle_orient の鮮度/ドリフト、Arrow IPC 出力 | living_db.sh |
| ベクトル検索 | ポリシー/マスキング/監査の全経路を通じた、上限付きでフェイルクローズする 23ai oracle_semantic_search | governed_rag.sh |
| フリート | MCP から参照可能な複数のプロファイルを一度にマッピングまたは比較します。到達不能なターゲットは、型付きの UNREACHABLE/FAIL_CLOSED レーンになります | fleet.sh |
| 可逆ワークスペース | ネイティブの SAVEPOINT チェックポイント、保留中の DML、oracle_undo_to、元に戻す操作を考慮する oracle_preview_dml | reversible.sh |
| エディション | 許可リストによるエディションベースの再定義、永続化された提案、ADMIN のみが実行できるマージ | editions.sh |
| インシデントの記録 | om incident capture/replay — オフラインで再分類される、編集済みの決定論的バンドル(ADR 0011) | incident.sh |
| 診断 | oracle_top_queries(無料の V$SQLSTATS)と、最小権限アカウントでも適切に機能を縮退する読み取り専用の oracle_db_health スイート(ADR 0005) | バージョンマトリックスのレーン |
エージェントに表示される内容は、アクティブなレベルと有効な上限によって異なります。READ_ONLY では、有効なプロファイル/OAuth の上限で READ_WRITE が許可されている場合、tools/list に oracle_execute と execute_approved が含まれます。これらが表示されても、書き込み権限は付与されません。その他の上位レベルのツールは、セッションが上限の範囲内で昇格するまで非表示のままです。まだ表示されていないツールへの呼び出しは、レベル未満の他のステートメントと同じ型付きの ErrorEnvelope で拒否されます。
ツール
以下の表は、サーバーのツールレジストリ(tools/list が提供するものと同じ記述子)から、scripts/docs_generate.sh が生成しています(oraclemcp robot-docs tools --markdown でレンダリング)。手動で編集しないでください。レジストリを編集し、bash scripts/docs_generate.sh --write を実行してください。
| ツール | タイトル | 目的 | 表示されるレベル | 破壊的 |
|---|---|---|---|---|
oracle_list_profiles | Oracle プロファイル一覧 | 接続文字列、ユーザー名、認証情報の参照先を公開せずに、設定済みの接続プロファイルを一覧表示します。 | READ_ONLY | いいえ |
oracle_connection_info | Oracle 接続情報 | アクティブなプロファイル、その有効な MCP アクセス(動作レベル、プロファイルの max_level、保護状態、現在書き込みが許可されているかどうか)、および Oracle の接続状態を説明します。 | READ_ONLY | いいえ |
oracle_switch_profile | Oracle プロファイル切り替え | 名前を指定して、この MCP サーバーを別の設定済みプロファイルに再接続し、そのプロファイルの有効な MCP アクセスを報告します。 | READ_ONLY | いいえ |
oracle_set_session_level | Oracle セッションレベル設定 | アクティブなプロファイルの上限内で一時的にセッションの動作レベルを引き上げる操作をプレビューまたは適用するか、READ_ONLY に戻します。 | READ_ONLY | はい |
oracle_query | Oracle クエリ | 位置指定バインドを使用して、読み取り専用の SELECT を実行します。ページ分割に対応し、行数とバイト数に上限があります。 | READ_ONLY | いいえ |
oracle_semantic_search | Oracle セマンティック検索 | oracle_query と同じポリシー、セマンティック解決、マスキング、監査の経路を使用して、範囲を制限したフェイルクローズ方式の 23ai ベクトル検索を実行します。 | READ_ONLY | いいえ |
oracle_diff | Oracle 差分 | 読み取り専用と確認された SELECT を、2 つの Oracle SCN 間、または 2 つのデータベース間で比較します。 | READ_ONLY | いいえ |
oracle_preview_sql | Oracle SQL プレビュー | SQL を実行せずに分類し、正確な SQL、型指定されたバインド、コミット/保留モード、出力上限、タイムアウトを確認情報に紐付けます。 | READ_ONLY | いいえ |
oracle_execute | Oracle 実行 | 分類器とアクティブなプロファイルのゲートを通じて、読み取り以外の SQL 文を 1 つ実行します。DML はデフォルトでロールバックされます。 | READ_ONLY | はい |
oracle_checkpoint | Oracle チェックポイント | 名前付きチェックポイント(ネイティブの Oracle SAVEPOINT)をこのセッションに設定し、取り消し可能な作業領域を開きます。hold=true と一致するプレビュー確認情報を指定した oracle_execute は DML をロールバックせず保留し、oracle_undo_to で取り消せます。 | READ_WRITE | はい |
oracle_undo_to | Oracle 指定位置まで取り消し | 取り消し可能な作業領域を元に戻します。ROLLBACK TO SAVEPOINT により、そのチェックポイントの後に実行された保留中のすべての文を破棄し、その上に積まれたチェックポイントを解放したうえで、トランザクションを開いたままにします。 | READ_WRITE | はい |
oracle_preview_dml | Oracle DML プレビュー | DML 文を 1 つドライランします。サーバーは専用のセーブポイントで囲んで実行し、変更された行を読み取った後、そのセーブポイントまでロールバックして結果を提示します。コミットされるものも、残されるものもありません。 | READ_WRITE | はい |
oracle_compile_object | Oracle オブジェクトのコンパイル | アクティブな DDL プロファイルのゲートを通じて、PL/SQL/ビューオブジェクトを 1 つプレビューまたはコンパイルします。デフォルトはプレビューで、実行には返された確認トークンが必要です。 | DDL | はい |
oracle_create_or_replace | Oracle の作成または置換 | 分類器とアクティブな DDL プロファイルのゲートを通じて、CREATE OR REPLACE 文を 1 つプレビューまたは適用します。 | DDL | はい |
oracle_patch_source | Oracle ソースのパッチ | 保存されたソースオブジェクト 1 つに対して、old_text を new_text に完全一致で置換する操作をプレビューまたは適用します。プレビューでは現在のソースを再取得し、実行では既存の DDL 確認ゲートを使用します。 | DDL | はい |
oracle_list_schemas | Oracle スキーマ一覧 | このセッションから参照できるオブジェクトを所有するスキーマを、必要に応じて名前で絞り込んで一覧表示します。 | READ_ONLY | いいえ |
oracle_schema_inspect | Oracle スキーマ検査 | 現在のスキーマ、1 つの所有者、またはアクセス可能なすべてのスキーマ内のオブジェクトを、必要に応じて型や名前で絞り込んで一覧表示します。 | READ_ONLY | いいえ |
oracle_search_objects | Oracle オブジェクト検索 | detail_level を指定して、読み取り専用のオブジェクト検索と検査を一元的に行います。 | READ_ONLY | いいえ |
oracle_orient | Oracle 状況把握 | 範囲を制限した状況把握の根拠を返します。デフォルトでは、アクティブなプロファイルのキャッシュ可能なスナップショットを 1 つ返します。fleet=true の場合は、MCP から参照できるすべてのプロファイルを個別にマッピングし、スキーマ、バージョン、鮮度、ドリフト、および型付きの UNREACHABLE/FAIL_CLOSED レーン状態を返します。 | READ_ONLY | いいえ |
oracle_describe | Oracle の説明 | テーブル/ビューの列と制約のメタデータを説明します。 | READ_ONLY | いいえ |
oracle_describe_index | Oracle インデックスの説明 | インデックス 1 つのメタデータ、インデックス対象の列、および関数ベースの式を説明します。 | READ_ONLY | いいえ |
oracle_describe_trigger | Oracle トリガーの説明 | トリガー 1 つのタイミング、イベント、対象テーブル、ステータス、および本体を説明します。 | READ_ONLY | いいえ |
oracle_describe_view | Oracle ビューの説明 | ビュー 1 つの定義メタデータと列を説明します。 | READ_ONLY | いいえ |
oracle_get_ddl | Oracle DDL の取得 | DBMS_METADATA.GET_DDL を使用して、オブジェクトの DDL を取得します(オブジェクト型は許可リストで指定)。 | READ_ONLY | いいえ |
oracle_get_source | Oracle ソースの取得 | ALL_SOURCE からオブジェクトのソース全文または指定した行範囲を取得するか、ALL_VIEWS.TEXT からビュー定義を取得します。文字数に上限があります。 | READ_ONLY | いいえ |
oracle_sample_rows | Oracle 行サンプル | テーブルまたはビューから任意の先頭行を、厳格な行数上限付きで読み取ります。 | READ_ONLY | いいえ |
oracle_read_clob | Oracle CLOB の読み取り | キーを指定して、CLOB/NCLOB/テキスト値を 1 つ読み取ります。文字数に上限があります。 | READ_ONLY | いいえ |
oracle_compile_errors | Oracle コンパイルエラー | 現在のスキーマ、所有者、またはオブジェクト 1 つのコンパイルエラーを取得します(ALL_ERRORS)。 | READ_ONLY | いいえ |
oracle_search_source | Oracle ソース検索 | ALL_SOURCE 全体から検索語を全文検索します(行数と行長に上限があります)。 | READ_ONLY | いいえ |
oracle_plscope_inspect | Oracle PL/Scope 検査 | ALL_IDENTIFIERS/ALL_STATEMENTS にデータがある場合、PL/SQL オブジェクト 1 つの PL/Scope 識別子と SQL 文のメタデータを検査します。 | READ_ONLY | いいえ |
oracle_explain_plan | Oracle 実行計画の説明 | 検証済みの SELECT に対して、診断目的の書き込みを伴う EXPLAIN PLAN を明示的に実行します。PLAN_TABLE に書き込み、READ_WRITE と allow_plan_table_write が必要です。読み取り専用スタンバイでは無効です。 | READ_WRITE | はい |
oracle_top_queries | Oracle 上位クエリ | 無償のライブカーソルキャッシュ(V$SQLSTATS)を対象に、経過時間/CPU/バッファ取得数/ディスク読み取り数で順位付けした上位 SQL を読み取り専用で取得します。ライブ呼び出しでは、正確な sql_id または範囲を制限した sql_text で絞り込めます。 | READ_ONLY | いいえ |
oracle_plan_timeline | Oracle 実行計画のタイムライン | 1 つの SQL ID について、AWR スナップショットから読み取り専用で過去のオプティマイザー実行計画と相対コストのタイムラインを取得します。 | READ_ONLY | いいえ |
oracle_db_health | Oracle データベースの健全性 | 読み取り専用の DBA 健全性チェック一式を実行します。 | READ_ONLY | いいえ |
oracle_plsql_parse | Oracle PL/SQL の解析 | オフラインの plsql-intelligence ローワーを使用して PL/SQL ソースを解析し、宣言数と診断数を返します。 | READ_ONLY | いいえ |
oracle_plsql_analyze | Oracle PL/SQL の分析 | ローカルプロジェクトルートに対してオフラインの plsql-intelligence エンジンを実行し、doctor の要約を返します。 | READ_ONLY | いいえ |
oracle_plsql_what_breaks | Oracle PL/SQL の影響予測 | Oracle に触れることなく、PL/SQL ChangeSet による無効化と再コンパイルの影響を予測します。 | READ_ONLY | いいえ |
oracle_plsql_lineage | Oracle PL/SQL の系譜 | ローカルの PL/SQL プロジェクト内で、論理オブジェクト ID を起点にオフラインの依存関係系譜をたどります。 | READ_ONLY | いいえ |
oracle_lineage | Oracle 系譜 | 実行時に検証される COLUMN 系譜です。ソースから導出された owner.object.column のエッジを、保護された Oracle カタログと照合し、検証済み、欠落、または型不一致のドリフトとして示します。 | READ_ONLY | いいえ |
oracle_plsql_sast | Oracle PL/SQL SAST | ローカルの PL/SQL プロジェクトに対して、オフラインの plsql-sast ルールハーネスを実行し、検出結果とスキップされたルールの根拠を返します。 | READ_ONLY | いいえ |
oracle_plsql_doc | Oracle PL/SQL ドキュメント | ソースからドキュメントコメントを抽出するか、既存の plsql-doc DocSet をレンダリングします。 | READ_ONLY | いいえ |
oracle_plsql_live_snapshot | Oracle PL/SQL ライブスナップショット | Oracle のライブディクショナリの行セットを抽出し、plsql-intelligence CatalogSnapshotBuilder で正規化します。 | READ_ONLY | いいえ |
oracle_plsql_blast_radius | Oracle PL/SQL 影響範囲 | ライブカタログのスナップショットを抽出し、提案された ChangeSet に対して plsql-cicd の変更影響予測を実行します。 | READ_ONLY | いいえ |
広告されるすべてのツール記述子には、人が読めるタイトルと明示的な MCP アノテーションが含まれています。これらのヒントはクライアント向けの参考情報であり、強制適用の境界は引き続きフェイルクローズ型分類器と運用レベルゲートです。oracle_query と oracle_explain_plan は outputSchema も広告し、クエリ結果では Oracle NUMBER セルをデフォルトで文字列として扱います(numbers_as_float=true を明示的に指定すると浮動小数点数になります)。tools/* に加えて、initialize は resources、prompts、completions(プロトコル 2025-11-25)を広告します。resources/list では oracle://capabilities と oracle://tools が公開され、oracle://schema/{owner} および oracle://object/{owner}/{type}/{name} の読み取りテンプレートは、同じ安全なディスパッチ経路を通ります。 |
互換性エイリアス
より短い Oracle MCP ツール群から移行する場合に備えて、サーバーは互換性エイリアスを広告します。これらは保護された oracle_* ツールにルーティングされ、分類器、検証、運用レベルの動作を共有します。execute_approved、deploy_ddl、read_patch_preview は単なる名前変更ではなく、ラッパーです。
| エイリアス | ルーティング先 |
|---|---|
current_database | oracle_connection_info |
switch_database | oracle_switch_profile |
enable_writes | oracle_set_session_level |
disable_writes | oracle_set_session_level |
query | oracle_query |
preview_sql | oracle_preview_sql |
execute_approved | oracle_execute |
compile_object | oracle_compile_object |
compile_with_warnings | oracle_compile_object |
create_or_replace | oracle_create_or_replace |
patch_package | oracle_patch_source |
patch_view | oracle_patch_source |
read_patch_preview | oracle_patch_source |
deploy_ddl | oracle_create_or_replace |
list_objects | oracle_schema_inspect |
list_schemas | oracle_list_schemas |
get_schema | oracle_schema_inspect |
describe_table | oracle_describe |
describe_index | oracle_describe_index |
describe_trigger | oracle_describe_trigger |
describe_view | oracle_describe_view |
get_ddl | oracle_get_ddl |
get_object_source | oracle_get_source |
get_errors | oracle_compile_errors |
get_clob | oracle_read_clob |
設定
接続プロファイルは profiles.toml に保存されます。シークレットがディスクに書き込まれることはありません。認証情報は env:、file:、または keyring: を通じて実行時に解決される参照情報です。読み取り専用の最小プロファイルは次のとおりです。
[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.
HTTP TLS/mTLS/OAuth リスナー、署名付き監査チェーン、結果のマスキングポリシー、フリート/モニタープロファイル、TCPS/ウォレット、IAM/DRCP/プロキシ認証、呼び出しごとのタイムアウト/SDU 上限など、フィールドの完全なリファレンスは docs/configuration.md にあります。
ドキュメント
- インストールマニュアル — 検証済みインストーラー、エアギャップ環境へのインストール、更新、アンインストール、サービス、ダッシュボードのペアリング、リリースチャネル。
- 設定リファレンス — すべてのプロファイル、認証、トランスポート、監査、マスキングの各フィールド。
- 運用とデプロイ — コンテナー化されたデプロイ、最小権限アカウント、ネットワーク構成、サービス管理(systemd/launchd/Windows)、エアギャップ環境へのインストール、オペレーター向けランブック。
- TNS 検出オンボーディング · ツールチェーン · アップグレード用ランブック と 現場での堅牢化に関する注記。
- アーキテクチャ決定:
docs/adr/· 形式的証明:proofs/purity-core/.
ソースからビルドする
このブランチは nightly-2026-05-11 に固定されており、安定した MSRV はありません(この固定は asupersync 経由で推移的に適用され、Windows では windows_by_handle が必要です。詳しくは docs/toolchain.md を参照してください)。上記の検証済みリリースアーカイブの利用を推奨します。ソースからビルドするのは、次のことを行う場合に限ってください。
rustup toolchain install nightly-2026-05-11 --component rustfmt --component clippy
cargo +nightly-2026-05-11 install oraclemcp
ライブデータベースへのアクセスには、純粋な Rust 製のシンドライバーが組み込まれています。Oracle Instant Client、ODPI-C、C ツールチェーンは不要です。ネットサービス名で接続する場合は、必要に応じて TNS_ADMIN を設定してください。デフォルトのビルドにはオフラインの PL/SQL エンジンが含まれます。--no-default-features を指定すると省略されます。
ライセンス
Apache-2.0 OR MIT のライセンスで提供されています。Docker イメージおよびクレートに Oracle Instant Client は再配布されません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。