关于 oraclemcp
oraclemcp 是面向 AI Agent 的 Oracle Database MCP 服务,以纯 Rust 实现并在 SQL 到达数据库前进行失败即拒绝的分类。适合需要受控数据库访问的团队,支持分级权限、默认回滚和审计。
主要功能
- 01失败即拒绝的 SQL 分类
- 02READ_ONLY 至 ADMIN 权限阶梯
- 03DML 默认回滚并需确认提交
- 04签名哈希链审计
- 05stdio 与 Streamable HTTP 传输
- 06Oracle VECTOR 搜索
适用场景
- 01在只读配置下查询 Oracle 数据库
- 02通过预览和确认执行受控写入
- 03审计特权数据库操作
- 04对 Oracle 23ai 执行受治理的向量搜索
MCP 相关
提供 43 个受治理 MCP 工具及兼容别名,供 MCP 客户端访问 Oracle Database。支持 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工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
以纯 Rust 为 AI Agent 提供受控的 Oracle Database 访问,并遵循最小权限原则。
oraclemcp 是一个模型上下文协议服务,为 AI Agent 提供受控的 Oracle 数据库访问,并遵循最小权限原则。Agent 提交的每条原始语句都会在到达 Oracle 之前进行分类:读取工具只允许执行已证明为只读的语句;非只读 SQL 只能通过明确且受配置文件控制的路径执行,该路径默认会回滚 DML,并要求提供基于预览生成的授权才能提交。会话权限提升必须显式进行、仅在临时期限内有效,且受配置文件中的 max_level 限制。与 PL/SQL 智能分析相互独立的 SQL 防护引擎无需外部引擎;默认二进制文件内嵌离线引擎。所有 crate 均使用 #![forbid(unsafe_code)]。
这是一个独立的开源项目,与 Oracle 没有隶属关系。请参阅对比说明,了解它与 Oracle 自有 MCP 服务的区别。
驱动程序
oraclemcp 通过自有的成熟纯 Rust Oracle 驱动程序进行连接,这是主要连接路径。Oracle 官方的 oracledb crate(我们在友好协商中将其 crate 名称让给了 Oracle)目前仍处于 beta 阶段,因此仅作为有界的连接时备用方案,用于应对偶发的异常情况。无需安装 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、wallet 和 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 wallet(cwallet.sso) |
| Oracle | 18c · 21c · 23ai — 包括受控的原生 VECTOR 搜索 |
| 代码 | 9 个纯 Rust crate + 二进制文件 · #![forbid(unsafe_code)] · 约 3,300 个测试 + 差分模糊测试器 |
| 传输方式 | stdio(默认)+ Streamable HTTP,支持 rustls TLS/mTLS 和可选 OAuth |
快速开始
在 macOS 和 Linux 上,一行命令即可安装或更新(可粘贴到终端中运行,也可在非交互式 Agent 运行中使用):
curl -fsSL "https://raw.githubusercontent.com/MuhDur/oraclemcp/main/install.sh?$(date +%s)" | bash
该命令会验证 SHA-256 摘要(如果存在 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 配置,包括具备写入能力的配置文件。需要服务状态时,客户端会自动连接到同一个本地代理,由其管理审计写入器和数据库连接池。每个客户端都保留各自的会话级别、确认令牌、事务和取消状态。如果 60 秒内没有客户端连接,代理就会退出。默认情况下,HTTP 也会为每个客户端提供相互隔离的有状态会话。
HTTP 和 stdio 客户端共用同一个代理和状态根目录。每个本地客户端都必须解析各自配置的数据库凭据。若凭据与代理的凭据不同,在打开会话前会收到 ORACLEMCP_BROKER_CREDENTIAL_MISMATCH 错误。
也可以运行经过身份验证的 HTTP 服务,该服务会显示仅一次的 bearer 令牌;并通过不含密钥的一次性配对 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 的输出可安全粘贴到 Agent 会话中——其中不会包含连接字符串、用户名、凭据引用、密码、钱包路径、IAM 令牌或服务器 DN,同时会保留结构化故障类别和 ORA 代码。
为什么选择 oraclemcp
- 从设计上确保失败时关闭。 Agent 构造的
SELECT绝不会悄然变成DELETE。读取工具只接受已证实为只读的SELECT/WITH和字典查询。非读取执行通过oracle_execute隔离,受配置文件上限约束,DML 默认回滚,并且必须明确确认后才能提交。在触及 Oracle 之前,会拒绝禁止的结构(多语句批处理、字符串拼接式动态 SQL、SELECT中未经证实的函数调用),并返回类型化信封和建议的安全替代方案。 - 以 Agent 为先的 UX。 每个工具都提供真正的 JSON Schema、标题和明确的 MCP 注解(
readOnlyHint、destructiveHint、idempotentHint、openWorldHint)。错误均为结构化的ErrorEnvelope,包含机器稳定的类别、模糊匹配建议和后续步骤提示——绝不会只是裸字符串。Agent 可通过零参数的oracle_capabilities工具发现可用功能。 - 纯 Rust,不使用
unsafe。 每个 crate 都设有#![forbid(unsafe_code)];失败时关闭的分类器是基于sqlparserAST 的真实分类器,并配有差分 cargo-fuzz 测试目标。 - 两种传输方式。 stdio(默认)和 Streamable HTTP(
--listen),均采用失败时关闭的身份验证默认设置,支持可选的 OAuth bearer 强制验证,并原生支持 rustls TLS/mTLS。
对比
Oracle 在 SQLcl 中内置了官方 MCP;我们的方案则是独立的。在决定你能否安全地让 AI Agent 连接数据库的关键维度上——Agent 与数据之间的防护措施——以下是基于事实的客观对比:
| Oracle SQLcl MCP | oraclemcp | |
|---|---|---|
| 默认状态 | 非只读 | 只读,默认拒绝 |
| 写入 / DDL 控制 | 服务内没有防护关卡——依赖数据库授权和非生产副本 | 服务内:分类器 + READ_ONLY→ADMIN 级别阶梯 + 预览→确认令牌 + 默认回滚 |
| 安全边界 | 你的授权管理——错误授权或巧妙的提示词都可能导致写入 | 服务本身——无论授权如何,都会强制执行 |
| SQL 处理 | 自由格式,标记为 /* LLM in use */ | 自由格式,但 在到达 Oracle 之前会先经过分类 |
| 审计 | 数据库侧日志表(DBTOOLS$MCP_LOG) | 签名、哈希链式 HMAC 审计 + 判定证书 |
| 运行时 | Java——需要 JVM 和 SQLcl 安装 | 单个纯 Rust 静态二进制文件——无需 JVM、C 工具链或 Instant Client |
SQLcl-MCP 的相关内容依据 Oracle 官方文档(配置最小权限用户、优先使用非生产副本、通过 DBTOOLS$MCP_LOG 进行审计);oraclemcp 的相关内容则在此代码库中强制执行。Oracle 是官方支持的选项,其托管式 Autonomous MCP 采用不同的精选报告方案,并按用户身份区分——非常适合安全限制严格的只读 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 分类器绑定。
受治理的维度
数据库会话被视为一个受治理的界面,包含多个相互独立的控制项,每项都有可执行的验证脚本:
| 维度 | 管控内容 | 验证 |
|---|---|---|
| Cost | 每次调用的 max_query_cost + 按主体持久化的预算;超出上限的估算会在执行前被拒绝 | cost_gate.sh |
| Time | as_of 闪回读取、跨 SCN/跨数据库的 oracle_diff、历史执行计划时间线 | time_diff.sh |
| Egress | 按配置文件范围应用结果脱敏,再将行数据发送出服务端,并提供脱敏证书(ADR 0008) | served_egress.sh |
| Proof | 判定证书 + 审计头的异步 Rekor 锚定(ADR 0010) | verdict_certificate.sh |
| Policy | 按配置文件设置的 SQL 拒绝/仅收紧策略,可收紧但绝不放宽基础分类器(ADR 0009) | sql_policy.sh |
| Living DB | CQN 更改通知、oracle_orient 新鲜度/漂移、Arrow IPC 输出 | living_db.sh |
| Vector search | 通过完整策略/脱敏/审计流程,执行有界且失败时默认拒绝的 23ai oracle_semantic_search | governed_rag.sh |
| Fleet | 一次映射或比较多个 MCP 可见配置文件;无法访问的目标会成为带类型的 UNREACHABLE/FAIL_CLOSED 通道 | fleet.sh |
| Reversible workspace | 原生 SAVEPOINT 检查点、暂存的 DML、oracle_undo_to、支持撤销的 oracle_preview_dml | reversible.sh |
| Editions | 通过允许列表执行基于 Edition 的重定义、持久化提案,以及仅限 ADMIN 的合并 | editions.sh |
| Incident capture | om incident capture/replay — 脱敏、确定性的数据包,可在离线状态下重新分类(ADR 0011) | incident.sh |
| Diagnostics | oracle_top_queries(免费的 V$SQLSTATS)以及只读 oracle_db_health 套件,可在最低权限账户下正常降级(ADR 0005) | 版本矩阵通道 |
Agent 能看到的内容取决于当前级别和有效上限。在 READ_ONLY 下,如果有效配置文件/OAuth 上限允许 READ_WRITE,tools/list 会包含 oracle_execute 和 execute_approved;它们的可见性不代表授予写入权限。其他更高级别的工具会保持隐藏,直到会话在上限范围内提升级别。调用尚不可见的工具时,会被拒绝,并返回与任何其他低于级别的语句相同的类型化 ErrorEnvelope。
工具
下表由 scripts/docs_generate.sh 根据服务端的工具注册表生成,即 tools/list 返回的同一组描述符(通过 oraclemcp robot-docs tools --markdown 渲染)。请勿手动编辑;应修改注册表并运行 bash scripts/docs_generate.sh --write。
| Tool | 标题 | 用途 | 可见级别 | 是否具有破坏性 |
|---|---|---|---|---|
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 差异比较 | 在两个 Oracle SCN 之间或两个数据库之间,对一条经验证的只读 SELECT 进行差异比较。 | READ_ONLY | 否 |
oracle_preview_sql | Oracle SQL 预览 | 对 SQL 进行分类但不执行,并将确切的 SQL、类型化绑定变量、提交/保留模式、输出上限和超时绑定到任何确认中。 | READ_ONLY | 否 |
oracle_execute | Oracle 执行 | 通过分类器和当前配置档案的访问控制执行一条非只读 SQL 语句;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 语句进行试运行:服务在自己的保存点中执行该语句,读取其影响的行,然后回滚到该保存点并呈现结果——不会提交,也不会留下任何更改。 | READ_WRITE | 是 |
oracle_compile_object | Oracle 编译对象 | 通过当前 DDL 配置档案的访问控制预览或编译一个 PL/SQL/视图对象;默认仅预览,执行需要使用返回的确认令牌。 | DDL | 是 |
oracle_create_or_replace | Oracle 创建或替换 | 通过分类器和当前 DDL 配置档案的访问控制,预览或应用一条 CREATE OR REPLACE 语句。 | DDL | 是 |
oracle_patch_source | Oracle 修补源代码 | 针对一个已存储的源对象,将确切的 old_text 替换为 new_text;预览时会重新获取当前源代码,执行时使用现有的 DDL 确认控制。 | DDL | 是 |
oracle_list_schemas | Oracle 架构列表 | 列出拥有此会话可见对象的架构,可按名称筛选。 | READ_ONLY | 否 |
oracle_schema_inspect | Oracle 架构检查 | 列出当前架构、一个所有者或所有可访问架构中的对象,可按类型/名称筛选。 | READ_ONLY | 否 |
oracle_search_objects | Oracle 对象搜索 | 统一的只读对象搜索/检查,并指定 detail_level。 | READ_ONLY | 否 |
oracle_orient | Oracle 环境概览 | 返回有限的环境概览证据:默认返回当前配置档案的一个可缓存快照;fleet=true 会分别映射所有 MCP 可见配置档案,并提供架构、版本、新鲜度、漂移以及类型化的 UNREACHABLE/FAIL_CLOSED 通道状态。 | READ_ONLY | 否 |
oracle_describe | Oracle 描述对象 | 描述一个表/视图的列和约束元数据。 | READ_ONLY | 否 |
oracle_describe_index | Oracle 描述索引 | 描述一个索引的元数据、索引列和基于函数的表达式。 | READ_ONLY | 否 |
oracle_describe_trigger | Oracle 描述触发器 | 描述一个触发器的时机、事件、目标表、状态和主体。 | READ_ONLY | 否 |
oracle_describe_view | Oracle 描述视图 | 描述一个视图的定义元数据和列。 | 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/文本值,并限制字符数。 | READ_ONLY | 否 |
oracle_compile_errors | Oracle 编译错误 | 检索当前架构、一个所有者或一个对象的编译错误(ALL_ERRORS)。 | READ_ONLY | 否 |
oracle_search_source | Oracle 搜索源代码 | 在 ALL_SOURCE 中全文搜索指定内容(限制行数和行长度)。 | READ_ONLY | 否 |
oracle_plscope_inspect | Oracle PL/Scope 检查 | 当 ALL_IDENTIFIERS/ALL_STATEMENTS 中存在数据时,检查一个 PL/SQL 对象的 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)中的顶级 SQL,按经过时间/CPU/缓冲区获取次数/磁盘读取次数排名,只读;实时调用可按确切 sql_id 或受限的 sql_text 缩小范围。 | READ_ONLY | 否 |
oracle_plan_timeline | Oracle 执行计划时间线 | 从 AWR 快照读取一个 SQL ID 的历史优化器执行计划和相对成本时间线,只读。 | 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 变更影响预测 | 预测 PL/SQL ChangeSet 的失效和重新编译影响,不访问 Oracle。 | 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 静态应用程序安全测试 | 在本地 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,且没有稳定的最低支持 Rust 版本(此固定版本通过 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 镜像和 crate 不会重新分发 Oracle Instant Client。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。