Oracle数据库MCP服务器

为AI应用程序提供与Oracle数据库交互的SQL查询执行和结果格式化服务,适用于本地开发环境。

  • by kutsushitaneko
  • Python
  • 本地部署
  • 8 星标
  • 更新于
在 GitHub 查看 kutsushitaneko/mcp-server-for-oracle-database

使用说明

MCP Server for Oracle Database(极めて実験的)

Oracle Database使用MCP(Model Context Protocol)服务器的实验实现。此服务器包含:AI应用程序Oracle Database对于…;对于SQL用于执行查询并检索其结果。MCP服务器在本地运行。Cursor 屋脊Cline 等的MCP 我们的目标是从客户端调用,提供无缝的数据库体验。

机能

  • Oracle Database到SQL查询执行
  • 获取表结构
  • 安全措施(查询长度限制,危险关键字检查)
    • 只实施了最小限度的安全对策。仅在无法从外部访问的本地环境中使用。
  • 结果的格式化功能(因为是叫LLM来的,所以可能是多余的)

必要条件

  • Python 3.11以上
  • Oracle Database访问权限
  • 设置所需的环境变量(.env文件)
  • uv(快速Python包管理器)

※测试Windows 11 只去。Linux/Mac 的情况下,请适当地重读目录路径的表记等。

安装,安装

  1. 克隆存储库:
git clone [repository-url]
cd mcp-server-for-oracle-database
  1. 创建并启用虚拟环境:
uv venv .venv
source .venv/bin/activate
.venv\Scripts\activate
  1. 安装依赖包:
uv pip install -r requirements.txt
  1. 设置环境变量: .env创建文件并设置以下信息:
ORACLE_USER=your_username
ORACLE_PASSWORD=your_password
ORACLE_DSN=your_dsn

提供的工具

执行跟踪

SQL执行查询(仅限SELECT语句)并格式化并返回结果。

  • 参数:

    • query: SQL查询(仅限SELECT语句)
    • params: 绑定变量
    • max_length: 応答の最大文字数
    • max_rows: 要检索的最大行数

    ※LLM中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。如果有很好地向客户端传达参数使用方法的方法,请告诉我。 ※读的是LLM 所以格式可能是多余的。

list_tables

显示数据库的表列表。

  • 参数:
    • max_rows: 要检索的最大表数(integer型,默认值:50)
    • name_pattern: 表名模式(例如'%EMP%')(可选)
    • order_by: 排列顺序('TABLE_NAME'或'CREATED'、默认值:'TABLE_NAME')
    • include_system_tables: 是否包括系统表(默认值:False)
    • use_all_tables: ALL_TABLES是否引用(默认值:False)
    • owner: 表所有者True必须)

describe_table

显示表的结构。sqlplus 的,之describe 的规格化距离的幂函数。

  • 参数:
    • table_name: 表名称

oracle_query_assistant

execute_oracle(Oracle Database中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。

  • 参数
    • query_type: SQL 类型(当前仅限“选择”)

使用方法

MCP客户端注册:

Claude Desktop 屋脊Cursor 的,之MCP 在配置文件中添加以下内容。

{
  "mcpServers": {
    "ORACLE": {
      "command": "仮想環境の Python 実行ファイルへの絶対パス(...\\mcp-server-for-autonomous-database\\.venv\\Scripts\\python.exe)",
      "args": [
        "MCPサーバーの絶対パス(....\\mcp-server-for-oracle-database\\oracledb_mcp_server.py)"
      ]
    }
  }
}

※变更构成文件后MCP需要重新启动客户端。Claude Desktop 中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。

Claude Desktop 屋脊Cursor 等的MCP 请在客户端尝试各种各样的方法。

示例1:显示表结构

xxxx テーブルの構造をしらべて
xxxx のスキーマは

示例2:获取表中的数据

xxxx テーブルのデータを取得して

示例3:SQL 执行

この SQL を試してみて

安全性

  • SELECT 不接受语句以外的语句(不能执行DDL/DML)
    • SELECT INTO 打开UNION ALL 不接受
  • 限制查询长度(默认值:1)MB)
  • 检查危险关键字
  • 输入值清晰度
  • 验证只读查询