Oracle数据库查询工具

MCP Oracle是一个为Oracle数据库构建的模型上下文协议服务器,提供7种工具用于查询和探索Oracle模式。

  • by oxk4rt
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 oxk4rt/mcp-oracle

使用说明

MCP Oracle

用于Oracle数据库的MCP(模型上下文协议)服务器 Bun+TypeScript公开了7个工具,用于从Claude Code或任何兼容MCP的客户端查询和探索Oracle模式。


需求


安装

git clone https://github.com/oxk4rt/mcp-oracle
cd mcp-oracle
bun install

配置

1.projects.json

定义项目、环境和连接参数。 切勿在此处包含凭据 --此文件已提交到Git。

{
  "env_aliases": {
    "integracion":   ["dsv", "dev", "desarrollo", "local"],
    "preproduccion": ["pre", "preprod"],
    "produccion":    ["pro", "prod"]
  },
  "projects": [
    {
      "code":           "TEST_LOCAL",
      "aliases":        ["TEST", "test"],
      "default_env":    "integracion",
      "default_schema": "OSCAR",
      "environments": {
        "integracion": {
          "host":    "localhost",
          "port":    1521,
          "service": "FREEPDB1"
        },
        "preproduccion": {
          "host":    "host-pre.example.com",
          "port":    1521,
          "service": "service_pre"
        },
        "produccion": {
          "host":    "host-pro.example.com",
          "port":    1521,
          "service": "service_pro"
        }
      }
    },
    {
      "code":           "TEST2_LOCAL",
      "aliases":        ["TEST2", "test2"],
      "default_env":    "integracion",
      "default_schema": "OSCAR2",
      "environments": {
        "integracion": {
          "host":    "localhost",
          "port":    1521,
          "service": "FREEPDB1"
        },
        "preproduccion": {
          "host":    "host-pre2.example.com",
          "port":    1521,
          "service": "service2_pre"
        },
        "produccion": {
          "host":    "host-pro2.example.com",
          "port":    1521,
          "service": "service2_pro"
        }
      }
    }
  ]
}

关键概念:

  • env_aliases --规范环境名称全局图→ 接受别名。为所有项目定义一次。
  • default_env --未指定时使用的环境(始终 integracion).
  • default_schema --没有时默认查询Oracle架构 schema 参数被传递给工具。
  • 添加新项目=在 projects MCP注册中的array+凭据。

2.MCP注册

通过Claude Code CLI注册服务器。凭据遵循以下模式 CODE__ENTORNO__USER/PASS (双下划线分隔符)。一次注册即可处理 所有项目和环境.

claude mcp add \
  -e MCP_ORACLE_PROJECTS_PATH='C:\path\to\mcp-oracle\projects.json' \
  -e ORACLE_CLIENT_PATH='C:\path\to\instantclient_23_0' \
  -e TEST_LOCAL__INTEGRACION__USER=usuario \
  -e TEST_LOCAL__INTEGRACION__PASS=password \
  -e TEST_LOCAL__PREPRODUCCION__USER=usuario \
  -e TEST_LOCAL__PREPRODUCCION__PASS=password \
  -e TEST_LOCAL__PRODUCCION__USER=usuario \
  -e TEST_LOCAL__PRODUCCION__PASS=password \
  -e TEST2_LOCAL__INTEGRACION__USER=usuario \
  -e TEST2_LOCAL__INTEGRACION__PASS=password \
  --scope user \
  -- oracle bun run 'C:\path\to\mcp-oracle\index.ts'

解析器会自动扫描所有与匹配的环境变量 CODE__ENTORNO__USER/PASS 模式并将其映射到中定义的相应项目和环境 projects.json.

如果您通过以下方式管理Claude MCP服务器 ~/.claude.json,等效块看起来像这样:

{
  "oracle": {
    "type": "stdio",
    "command": "bun",
    "args": [
      "run",
      "C:\\path\\to\\mcp-oracle\\index.ts"
    ],
    "env": {
      "MCP_ORACLE_PROJECTS_PATH": "C:\\path\\to\\mcp-oracle\\projects.json",
      "ORACLE_CLIENT_PATH": "C:\\path\\to\\instantclient_23_0",
      "TEST_LOCAL__INTEGRACION__USER": "usuario",
      "TEST_LOCAL__INTEGRACION__PASS": "password",
      "TEST_LOCAL__PREPRODUCCION__USER": "usuario",
      "TEST_LOCAL__PREPRODUCCION__PASS": "password"
    }
  }
}

这个确切的本地示例与下面记录的Docker Oracle Free设置相匹配。对于非本地环境,保持相同的形状,但相应地替换凭据和连接设置。


工具

工具 说明
list_projects 列出已配置的项目和环境。没有暴露凭据。
list_schemas 列出可用的Oracle架构/所有者。
list_tables 列出架构中的表(默认为 default_schema).
describe_table 显示表的列、类型、PK和FK约束。
execute_query 执行SELECT或CTE(WITH)查询。插入/更新/删除/DDL被拒绝。
get_relations 表或整个模式的PK/FK映射,通过 ALL_CONSTRAINTS.
get_join_path FK图BFS遍历以查找两个表之间的JOIN路径。

自然语言示例

List the tables in project TEST
Describe the PEDIDOS table in TEST
Show me the tables in TEST preproduccion
Show relations in the TEST schema
What's the join path between CLIENTES and PRODUCTOS in TEST?
Run: SELECT COUNT(*) FROM PEDIDOS WHERE ESTADO = 'PENDIENTE' in TEST dev

使用Docker Oracle Free进行本地开发

docker run -d \
  --name oracle-free \
  -p 1521:1521 \
  -e ORACLE_PASSWORD=password \
  container-registry.oracle.com/database/free:latest

projects.json 本地容器的连接:

{
  "code":           "TEST_LOCAL",
  "aliases":        ["TEST", "test"],
  "default_env":    "integracion",
  "default_schema": "MY_SCHEMA",
  "environments": {
    "integracion": {
      "host":    "localhost",
      "port":    1521,
      "service": "FREEPDB1"
    }
  }
}

许可证

麻省理工学院——见 许可证.