Token导航 LogoToken导航TokenDH.com
Oracle Ddl Rag MCP logo
搜索检索stdio官方级别未说明来源级核验

Oracle Ddl Rag MCP

MCP Server

一个为AI代码助手提供Oracle数据库结构智能的MCP服务器,通过语义搜索提供已验证的数据表关联、字段定义和枚举值,防止SQL幻觉。

工具数

6

提示词数

0

GitHub Stars

0

资源数

0
搜索PythonClaudeClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

keepprogress

提供方

keepprogress

最后核验

2026/5/17 20:21

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uv run scripts/ingest_schema.py --dsn localhost:1521/ORCL --user your_user

详细介绍

Oracle DDL RAG MCP 伺服器

一個 MCP(模型上下文協定)伺服器,為 AI 程式碼助手(Claude Code、Gemini CLI、GitHub Copilot)提供 Oracle 資料庫結構智慧。透過語意搜尋提供已驗證的資料表關聯、欄位定義和列舉值,防止 SQL 幻覺。

問題

當 AI 助手為大型資料庫(400+ 資料表)撰寫 SQL 時,經常會:

  • 幻覺資料表關聯和 JOIN 條件
  • 猜錯 STATUS/TYPE 欄位的值
  • 引用不存在的欄位
  • 在比較中使用錯誤的欄位類型

解決方案

此 MCP 伺服器提供 6 個工具,讓 AI 助手在撰寫 SQL 前驗證資料庫結構:

工具用途
search_db_schema用自然語言查詢尋找相關資料表
get_table_schema取得資料表的完整欄位定義
get_enum_values取得 STATUS/TYPE 欄位的有效值
get_join_pattern取得兩個資料表之間正確的 JOIN 條件
find_join_path尋找經過中繼資料表的多跳 JOIN 路徑
search_columns依名稱/描述在所有資料表中搜尋欄位

安全性:憑證永不暴露

┌─────────────────┐     ┌─────────────────────┐     ┌──────────────┐
│   AI 助手       │ ←→  │    MCP 伺服器       │ ←→  │   本地資料   │
│  (Claude 等)    │     │   (無資料庫存取)    │     │   ChromaDB   │
└─────────────────┘     └─────────────────────┘     │   SQLite     │
                                                    └──────────────┘
                                                           ↑
                                                    離線資料注入
                                                    (使用憑證)
                                                           ↓
                                                    ┌──────────────┐
                                                    │    Oracle    │
                                                    │    資料庫    │
                                                    └──────────────┘
  • 資料庫憑證只在離線注入時使用
  • MCP 伺服器只讀取預建的本地資料
  • AI 助手永遠看不到連線字串或密碼

快速開始

1. 安裝 UV(如果尚未安裝)

# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

2. 複製並安裝相依套件

cd oracle-ddl-rag-mcp
uv sync

3. 注入您的資料庫結構(一次性)

uv run scripts/ingest_schema.py --dsn localhost:1521/ORCL --user your_user

系統會提示您輸入密碼(不會儲存)。

4. 設定 Claude Code

加入到您的 Claude Code MCP 設定:

Windows (%APPDATA%\Claude\claude_desktop_config.json):

{
  "mcpServers": {
    "oracle-ddl": {
      "command": "uv",
      "args": ["run", "oracle-ddl-mcp"],
      "cwd": "C:/Developer/oracle-ddl-rag-mcp"
    }
  }
}

macOS/Linux (~/.config/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "oracle-ddl": {
      "command": "uv",
      "args": ["run", "oracle-ddl-mcp"],
      "cwd": "/path/to/oracle-ddl-rag-mcp"
    }
  }
}

5. 重新啟動 Claude Code

重新啟動後,Claude Code 就能使用這 6 個資料庫結構工具。

工具使用範例

search_db_schema

「尋找與客戶訂單相關的資料表」
→ 回傳:ORDERS、ORDER_ITEMS、CUSTOMERS 及相似度分數

get_table_schema

「取得 ORDERS 資料表的結構」
→ 回傳:所有欄位的類型、註解、主鍵、關聯

get_enum_values

「ORDERS.STATUS 有哪些有效值?」
→ 回傳:['DRAFT', 'PENDING', 'APPROVED', 'CANCELLED'] 及其含義

get_join_pattern

「如何 JOIN ORDERS 和 CUSTOMERS?」
→ 回傳:「ORDERS.CUSTOMER_ID = CUSTOMERS.ID」及 SQL 範例

find_join_path

「尋找從 ORDER_ITEMS 到 CUSTOMERS 的路徑」
→ 回傳:ORDER_ITEMS → ORDERS → CUSTOMERS 及所有 JOIN 條件

search_columns

「尋找包含 email 的欄位」
→ 回傳:CUSTOMERS.EMAIL、USERS.EMAIL_ADDRESS 等

嵌入模型設定

伺服器會自動偵測要使用哪個嵌入模型:

條件使用的模型
設定了 OPENAI_API_KEY 環境變數OpenAI text-embedding-3-small (512 維)
沒有 API 金鑰本地 all-MiniLM-L6-v2 (384 維)

使用 OpenAI 嵌入(品質較佳):

export OPENAI_API_KEY=sk-...
uv run scripts/ingest_schema.py --dsn localhost:1521/ORCL --user scott

手動列舉值覆寫

對於沒有 CHECK 約束的欄位,可在 data/manual_overrides.yaml 中新增值:

ORDERS:
  STATUS:
    - code: "0"
      meaning: 草稿 - 訂單尚未提交
    - code: "1"
      meaning: 待處理 - 等待審核
    - code: "2"
      meaning: 已核准 - 準備處理
    - code: "9"
      meaning: 已取消

CUSTOMERS:
  IS_ACTIVE:
    - code: "Y"
      meaning: 活躍客戶
    - code: "N"
      meaning: 非活躍客戶

更新此檔案後需重新執行注入。

專案結構

oracle-ddl-rag-mcp/
├── pyproject.toml              # UV/Python 專案設定
├── src/
│   └── oracle_ddl_rag/
│       ├── server.py           # MCP 伺服器入口點
│       ├── config.py           # 設定(無憑證)
│       ├── tools/              # 6 個 MCP 工具實作
│       ├── extractors/         # Oracle DDL 提取
│       ├── storage/            # ChromaDB + SQLite
│       ├── graph/              # NetworkX 路徑尋找
│       └── embeddings/         # OpenAI/本地嵌入服務
├── scripts/
│   └── ingest_schema.py        # 離線資料注入
├── data/
│   ├── chroma_db/              # 向量嵌入(已加入 gitignore)
│   ├── metadata.db             # SQLite 快取(已加入 gitignore)
│   └── manual_overrides.yaml   # 手動列舉定義
└── tests/

更新資料庫結構

當資料庫結構變更時,重新執行注入:

# 增量更新(保留現有資料)
uv run scripts/ingest_schema.py --dsn localhost:1521/ORCL --user scott

# 完整重建(清除並重建)
uv run scripts/ingest_schema.py --dsn localhost:1521/ORCL --user scott --clear

疑難排解

搜尋結果顯示「找不到資料表」

  • 確認注入已成功完成
  • 檢查 data/chroma_db/data/metadata.db 是否存在
  • 嘗試使用 --clear 旗標重新執行注入

Oracle 連線錯誤

  • 確認已安裝 Oracle Instant Client
  • 檢查 DSN 格式:host:port/service_name
  • 確認與資料庫的網路連線

OpenAI 嵌入錯誤

  • 確認 OPENAI_API_KEY 設定正確
  • 檢查 API 金鑰有嵌入權限
  • 取消設定環境變數以改用本地模型

系統需求

  • Python 3.11+
  • Oracle 資料庫(僅供注入使用)
  • UV 套件管理器
  • 選用:OpenAI API 金鑰(可獲得更好的嵌入品質)

授權

MIT

目录标签

目录标签

搜索PythonClaude数据库结构本地部署语义搜索AI代码助手SQL验证Oracle

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

6

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP