MCP Hub
Back to servers

MCP Server for Oracle

A robust Model Context Protocol server for Oracle databases providing multi-database connectivity with granular security controls including readonly/readwrite modes and table-level allowlisting.

Tools
2
Updated
Dec 16, 2025

MCP Server for Oracle

smithery badge

A Model Context Protocol server that provides access to Oracle databases with fine-grained access control. Supports multiple databases, access modes, and table-level permissions.

Features

  • Multi-database support: Connect to multiple Oracle databases simultaneously
  • Access control: readonly, readwrite, full modes per database
  • Table-level permissions: Whitelist/blacklist with wildcards and regex
  • Read-only transaction protection: Database-level safety for readonly mode
  • Backward compatible: Works with single database environment variables

Components

Tools

ToolDescription
oracle_queryRead-only SELECT queries (always available)
oracle_executeWrite operations (only visible when writable databases exist)

Resources

  • oracle://connections: List of database connections with access modes
  • oracle://{db}/tables/{table}/schema: Table schema

Prompts

  • oracle_usage_guide: Dynamic guide based on configured databases

Configuration

Config File

Create ~/.mcp_oracle/databases.json:

{
  "databases": [
    {
      "name": "prod",
      "user": "...",
      "password": "...",
      "connectString": "...",
      "accessMode": "readonly"
    },
    {
      "name": "dev",
      "user": "...",
      "password": "...",
      "connectString": "...",
      "accessMode": "readwrite",
      "allowedTables": ["LOG_*", "TMP_*", "/^TEST_.*/"]
    }
  ]
}

Access Modes

ModeSELECTINSERT/UPDATE/DELETEDDL
readonly (default)
readwrite
full

Table Patterns

FormatExampleMatches
ExactLOG_TABLEOnly LOG_TABLE
WildcardLOG_*LOG_ prefix
Regex/^TEST_\d+$/TEST_ + digits

Environment Variables

VariableDescription
ORACLE_CONFIG_PATHCustom config file path
ORACLE_USERLegacy single-database user
ORACLE_PASSLegacy single-database password
ORACLE_CONNECTION_STRINGLegacy connection string
ORACLE_HOMEOracle client library path
TNS_ADMINTNS admin directory

Usage Example

User: "查询 prod 库中的用户表"
→ oracle_query(database="prod", sql="SELECT * FROM users")

User: "在 dev 库的 LOG_TEST 表插入一条记录"
→ oracle_execute(database="dev", sql="INSERT INTO LOG_TEST ...", confirm=true)

Security

  • readonly mode: Uses SET TRANSACTION READ ONLY for database-level protection
  • SQL validation: Validates statement type before execution
  • Table validation: Checks whitelist/blacklist before write operations
  • Confirmation required: Write operations require confirm=true

License

MIT License

Reviews

No reviews yet

Sign in to write a review