MCP Server for Oracle
MCP Server for Oracle
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,fullmodes per databaseTable-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
Tool | Description |
| Read-only SELECT queries (always available) |
| Write 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
Mode | SELECT | INSERT/UPDATE/DELETE | DDL |
| ✅ | ❌ | ❌ |
| ✅ | ✅ | ❌ |
| ✅ | ✅ | ✅ |
Table Patterns
Format | Example | Matches |
Exact |
| Only |
Wildcard |
|
|
Regex |
|
|
Environment Variables
Variable | Description |
| Custom config file path |
| Legacy single-database user |
| Legacy single-database password |
| Legacy connection string |
| Oracle client library path |
| TNS 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 ONLYfor database-level protectionSQL validation: Validates statement type before execution
Table validation: Checks whitelist/blacklist before write operations
Confirmation required: Write operations require
confirm=true
License
MIT License