MCP DB Wizard
官方一个用于Oracle的MCP服务器,不会让你被解雇。该MCP服务器不提供SQL提示符,也无法告诉你如何登录Oracle。只有选定的对象和SQL语句可用。
你可以用 DB Wizard MCP 做什么?
- 调用经过审核的 PL/SQL 例程 — 让助手调用经过验证的包过程,如
synuser_js_admin_getadmintoolinfo,返回记录、集合以及所有 OUT 参数。 - 获取单行表数据 — 通过主键使用
synuser_activity_log_get_by_pk请求一行数据,并以 JSON 对象形式返回。 - 插入、更新或删除表数据 — 指示助手通过生成的
synuser_activity_log_insert工具(及其_update和_delete变体)修改行。 - 获取下一个序列值 — 请求
synuser_job_id_nextval的下一个数字,而不暴露任何其他序列操作。 - 运行预先批准的 SQL 语句 — 让助手执行一个已命名且经过测试的 SQL 文件,带有类型化绑定参数,绝不编写临时查询文本。
文档
一个不会让你被解雇的 Oracle MCP 服务器
配置就是全部的安全模型
代理可访问
synuser_activity_log_get_by_pk表 — 按主键取一行,以 JSON 对象形式返回synuser_activity_log_insert表 — 支持 _update 和 _delete,基于同一选择范围synuser_js_admin_getadmintoolinfoPL/SQL 例程 — 记录、集合以及每个 OUT 参数synuser_job_id_nextval序列 — 下一个值,仅此而已
从结构上不可访问
- 调用方传入的 SQL 文本 — 参数都是绑定值
- DDL — create、alter、drop
- 任何你未选择的对象
- 配置中未提及的任何 schema
- Oracle 密码 — 它存放在环境变量中
一个能写 SQL 的代理就能写 DROP TABLE。一个持有名为 check_flight_availability 工具的代理可以查询航班可用性,因为它面前的全部代码就只做这件事。
治理发生在代码存在之前
最小权限原则说起来容易,验证起来难。在这里,配置决定生成什么:未被选择的对象没有工具、没有方法、没有类。它从二进制文件中缺席,而不是靠运行中的进程来守护,因此任何提示词都无法触达它。
你的业务规则已经在 PL/SQL 里了
几十年的校验、引用逻辑和审计行为都封装在包中。MCPDBWizard 按原样调用这些例程 — 记录、集合、引用游标以及每个 OUT 参数都会返回 — 而不是让语言模型在 SELECT 中重新发明规则。
每次调用都是命名工具,而不是查询
请求以 synuser_activity_log_get_by_pk(entry_id) 形式到达,遵循严格 schema — 拼写错误的参数在触碰数据库之前就会被拒绝。这样更容易记录日志、限流、事后审查,也更容易向审计人员解释。
两类受众,两类记录
代理记录谁调用了哪个工具以及是否被允许;每个服务器记录工具做了什么以及结果如何。参数名称始终记录;值仅在您开启时记录,因为值是由模型选择的。
Oracle 12c 到 26ai
包括此后新增的类型:原生 JSON、BOOLEAN 和 VECTOR,以及基于 JSON 关系二元视图的文档 CRUD。任何无法诚实跨越 JSON 的内容 — SDO_GEOMETRY、BFILE — 会被整体跳过,日志会说明跳过了什么以及原因。
账户、令牌和授权矩阵
多个账户、多个配置,每个授权一次勾选。两个团队需要对同一 schema 使用不同工具,那就是两份配置,而不是一份配置加一条规则 — 这保证了第一板块中的承诺始终成立。
- 01
选择对象
将 Design 页面连接到 Oracle,勾选您愿意暴露的 PL/SQL 包,加上您自己编写并测试过的 SQL 语句,以及您希望直接可访问的表和序列。该选择会保存为配置文件 — properties 或 JSON 格式,可版本化,且不包含密码。
PL/SQL 优先,因为这才是重点:勾选您愿意暴露的包和过程,每个都会成为一个带类型化参数的工具。
然后是您自己的 SQL — 您编写并测试过的语句,绑定参数以内联方式标注类型。代理运行这些语句;它不会自行拼装。
最后是表,按操作而非按表进行治理 — 新选中的表默认为只读,create、update 和 delete 由您勾选决定。 - 02
生成、编译、运行
Runtime 页面仅为这些对象生成 Java 代码,编译它,并在回环地址上以独立服务器方式启动。任何您未选择的内容没有工具、没有方法、没有类 — 它从二进制文件中缺席,而不仅仅是被拒绝。docker run -d --name mcpdbwizard \ -p 8080:8080 \ -e MCPDBWIZARD_ORACLE_HOST=db.example.com \ -e MCPDBWIZARD_ORACLE_PORT=1521 \ -e MCPDBWIZARD_ORACLE_SID=/PDB1 \ -e MCPDBWIZARD_ORACLE_USER=appuser \ -e DB_PASS_FILE=/run/secrets/oracle \ -v mcpdbwizard-demo:/data \ ghcr.io/srmadscience/mcpdbwizard:2.0.4 - 03
将您的 MCP 客户端指向代理
代理通过 Streamable HTTP 在 8080 端口连接,使用发放给其账户的令牌。代理是唯一知道调用者身份的组件 — 它检查账户、授权和限流,然后转发。{ "mcpServers": { "payroll": { "url": "http://localhost:8080/mcp/alice/payroll", "headers": { "Authorization": "Bearer <id>.<secret>" } } } }
快速入门 包含完整路径,包括发放令牌和授权配置。