MCP Server - Oracle DB Context

MCP Server - Oracle DB Context

site icon
2025.03.28 22
Python数据库服务AI辅助开发数据库开发效率
Oracle MCP Server 是一个强大的模型上下文协议(MCP)服务器,专门为大型Oracle数据库提供上下文数据库模式信息。它使AI助手能够理解和处理包含数千张表的数据库,通过智能缓存和服务数据库模式信息,支持按需查找特定表模式、搜索匹配模式的表、理解表关系和获取数据库供应商信息等功能。
View on GitHub

Overview

产品定位

Oracle MCP Server 旨在解决处理大型Oracle数据库时的关键挑战,即为AI模型提供准确、相关的数据库模式信息,而不会因数万张表和关系而使其不堪重负。

核心功能

  • 智能模式缓存:构建和维护数据库模式的本地缓存,以最小化数据库查询
  • 目标模式查找:检索特定表的模式,而无需加载整个数据库结构
  • 表搜索:通过名称模式匹配查找表
  • 关系映射:理解表之间的外键关系
  • Oracle数据库支持:专为Oracle数据库构建
  • MCP集成:与VSCode中的GitHub Copilot、Claude、ChatGPT等支持MCP的AI助手无缝协作

适用场景

  • AI助手需要理解大型Oracle数据库结构的场景
  • 开发者在VSCode中使用GitHub Copilot进行数据库相关开发
  • 需要快速查找和理解数据库模式、关系和约束的数据库管理员

工具列表

  1. get_table_schema:获取特定表的详细模式信息
  2. get_tables_schema:一次获取多个表的模式信息
  3. search_tables_schema:按名称模式搜索表并检索其模式
  4. rebuild_schema_cache:强制重建模式缓存
  5. get_database_vendor_info:获取连接的Oracle数据库版本和模式信息
  6. search_columns:搜索包含特定术语列的表
  7. get_pl_sql_objects:获取PL/SQL对象信息
  8. get_object_source:检索PL/SQL对象的源代码
  9. get_table_constraints:获取表的所有约束
  10. get_table_indexes:获取表的所有索引
  11. get_dependent_objects:查找依赖于指定数据库对象的所有对象
  12. get_user_defined_types:获取数据库中用户定义类型的信息
  13. get_related_tables:获取通过外键与指定表相关的所有表

常见问题解答

  • 性能考虑:初始缓存构建可能需要5-10分钟,后续启动通常少于30秒
  • 系统要求:Python 3.12或更高版本,4GB+可用RAM,500MB+磁盘空间
  • 连接模式:支持Thin模式(默认)和Thick模式(需要Oracle Client库)

使用教程

使用依赖

  1. Python 3.12或更高版本
  2. Oracle数据库访问权限
  3. Oracle instant client(用于oracledb Python包)

安装教程

选项1:使用Docker(推荐)

# 在VSCode Insiders的settings.json中添加以下配置
"mcp": {
    "inputs": [
        {
            "id": "db-password",
            "type": "promptString",
            "description": "Oracle DB Password",
            "password": true,
        }
    ],
    "servers": {
        "oracle": {
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "-e",
                "ORACLE_CONNECTION_STRING",
                "-e",
                "TARGET_SCHEMA",
                "-e",
                "CACHE_DIR",
                "-e",
                "THICK_MODE",
                "dmeppiel/oracle-mcp-server"
            ],
            "env": {
                "ORACLE_CONNECTION_STRING":"<db-username>/${input:db-password}@<host>:1521/<service-name>",
                "TARGET_SCHEMA":"",
                "CACHE_DIR":".cache",
                "THICK_MODE":""
            }
        }
    }
}

选项2:使用UV(本地安装)

  1. 安装UV
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows
irm https://astral.sh/uv/install.ps1 | iex
  1. 项目设置
git clone https://github.com/yourusername/oracle-mcp-server.git
cd oracle-mcp-server
uv venv
source .venv/bin/activate  # Unix/macOS
.venv\Scripts\activate      # Windows
uv pip install -e .
  1. 配置VSCode设置
"mcp": {
    "inputs": [
        {
            "id": "db-password",
            "type": "promptString",
            "description": "Oracle DB Password",
            "password": true,
        }
    ],
    "servers": {
        "oracle": {
            "command": "/path/to/your/.local/bin/uv",
            "args": [
                "--directory",
                "/path/to/your/oracle-mcp-server",
                "run",
                "main.py"
            ],
            "env": {
                "ORACLE_CONNECTION_STRING":"<db-username>/${input:db-password}@<host>:1521/<service-name>",
                "TARGET_SCHEMA":"",
                "CACHE_DIR":".cache",
                "THICK_MODE":""
            }
        }
    }
}

调试方式

# 直接运行MCP服务器
uv run main.py

# 安装MCP Inspector进行测试
uv pip install mcp-cli
mcp dev main.py

# 或在Claude Desktop中安装
mcp install main.py

许可证

该项目遵循 MIT 开源许可条款,请参阅 MIT 了解完整条款。