Skip to main content
Glama
titan213

Oracle DB MCP Server

by titan213

Oracle DB MCP Server

A Model Context Protocol (MCP) server for Oracle Database connectivity. This server enables AI tools like Cursor, Claude Desktop, and other MCP-compatible clients to interact with Oracle databases.

Features

  • Multiple Database Connections: Configure and manage multiple named Oracle database connections

  • Thin & Thick Mode Support: Works with Oracle's thin driver (no client required) or thick mode (with Oracle Instant Client)

  • Query Execution: Execute SELECT queries with result formatting

  • DML Operations: Execute INSERT, UPDATE, DELETE with safety checks

  • PL/SQL Support: Execute PL/SQL blocks, create procedures/functions

  • Schema Browsing: List tables, views, procedures, describe table structures

  • Stored Procedures: Execute stored procedures with input/output parameters

  • Transaction Management: Commit and rollback support

  • Safety Features: Read-only mode, dangerous query detection, automatic warnings

Related MCP server: Oracle APEX MCP Server

Installation

No installation required. Configure your MCP client to run:

npx -y oracle-db-mcp

Local Installation

npm install -g oracle-db-mcp

Then run:

oracle-db-mcp

Configuration

Configuration File (connections.json)

Create a configuration file with your database connections:

{
  "oracleClient": {
    "mode": "thin"
  },
  "settings": {
    "defaultMaxRows": 100,
    "queryTimeout": 30
  },
  "connections": [
    {
      "name": "dev",
      "host": "dev-server.company.com",
      "port": 1521,
      "serviceName": "DEVDB",
      "username": "dev_user",
      "password": "dev_password",
      "mode": "readwrite"
    },
    {
      "name": "prod",
      "host": "prod-server.company.com",
      "port": 1521,
      "serviceName": "PRODDB",
      "username": "report_user",
      "passwordEnv": "PROD_DB_PASSWORD",
      "mode": "readonly"
    }
  ]
}

Connection Options

Each connection supports:

Option

Description

name

Unique identifier for the connection

host

Database server hostname

port

Port number (default: 1521)

serviceName

Oracle service name

sid

Oracle SID (alternative to serviceName)

connectionString

Full connection string (alternative to host/port/service)

username

Database username

password

Database password (direct)

passwordEnv

Environment variable containing password

mode

readonly or readwrite

privilege

Optional privileged connect: SYSDBA or SYSOPER (requires server opt-in)

Configuration File Locations

The server searches for configuration in this order:

  1. ORACLE_MCP_CONFIG environment variable

  2. ./config/connections.json

  3. ./connections.json

  4. ~/.oracle-mcp/connections.json

Environment Variables

For simple single-connection setup:

export ORACLE_CONNECTION_NAME=mydb
export ORACLE_HOST=localhost
export ORACLE_PORT=1521
export ORACLE_SERVICE=XEPDB1
export ORACLE_USER=scott
export ORACLE_PASSWORD=tiger
export ORACLE_MODE=readonly
# Opt-in to allow privileged connects (SYSDBA/SYSOPER). Default: false
export ORACLE_ALLOW_SYSDBA=false
# For privileged connection (if enabled):
export ORACLE_PRIVILEGE=SYSDBA

MCP Client Configuration

Cursor

Add to your Cursor MCP settings (.cursor/mcp.json):

{
  "mcpServers": {
    "oracle-db": {
      "command": "npx",
      "args": ["-y", "oracle-db-mcp"],
      "env": {
        "ORACLE_MCP_CONFIG": "/path/to/connections.json"
      }
    }
  }
}

Claude Desktop

Add to your Claude Desktop config:

{
  "mcpServers": {
    "oracle-db": {
      "command": "npx",
      "args": ["-y", "oracle-db-mcp"],
      "env": {
        "ORACLE_MCP_CONFIG": "/path/to/connections.json"
      }
    }
  }
}

Available Tools

Connection Management

Tool

Description

list_connections

List all configured connections with status

test_connection

Test connectivity and get database info

connect

Establish a connection

disconnect

Close a connection

Query Execution

Tool

Description

execute_query

Execute SELECT queries

execute_dml

Execute INSERT/UPDATE/DELETE

execute_plsql

Execute PL/SQL blocks or DDL

execute_procedure

Call stored procedures

Schema Browsing

Tool

Description

list_tables

List tables and views

describe_table

Get column, constraint, index info

list_procedures

List procedures, functions, packages

get_procedure_source

Get source code of PL/SQL objects

get_procedure_params

Get procedure parameters

explain_query

Get query execution plan

Transaction Management

Tool

Description

commit

Commit current transaction

rollback

Rollback current transaction

Safety Features

Read-Only Mode

Connections configured as readonly:

  • Block all DML operations (INSERT, UPDATE, DELETE)

  • Block PL/SQL execution

  • Allow only SELECT queries

Dangerous Query Detection

The server warns or blocks:

  • DROP statements

  • TRUNCATE statements

  • UPDATE/DELETE without WHERE clause

  • ALTER SYSTEM commands

Oracle Client Modes

Thin Mode (Default)

No Oracle client installation required. Works with:

  • Oracle Database 12.1 and later

  • Oracle Cloud databases

Thick Mode

Requires Oracle Instant Client. Enable in config:

{
  "oracleClient": {
    "mode": "thick",
    "path": "/path/to/instantclient"
  }
}

Required for:

  • Oracle Database versions before 12.1

  • Advanced features (LDAP, Kerberos, etc.)

  • Some data types (BFILE, etc.)

Development

Building from Source

git clone https://github.com/titan213/oracle-db-mcp
cd oracle-db-mcp
npm install
npm run build

Running in Development

npm run dev

Testing

npm test

License

MIT

Author

Gihan Sundarapperuma gihan213@gmail.com

Available Tools

16 tools
commitB

Commit the current transaction on a connection.

ParametersJSON Schema
NameRequiredDescriptionDefault
connectionYesName of the database connection

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description does not disclose that commit makes changes permanent, potential errors (e.g., no active transaction), or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence efficiently communicates core action, though could benefit from slight expansion without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Lacks details on return value, error handling, or confirmation; incomplete for an agent to fully understand behavior without additional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and description adds no additional meaning beyond the schema's 'Name of the database connection'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'Commit' and resource 'current transaction on a connection', clearly distinguishing from rollback and other transaction tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs rollback or other transaction-related tools, nor any prerequisites like being inside a transaction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

connectB

Establish a connection to a named Oracle database.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the database connection

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description only says 'establish a connection'. It fails to disclose side effects, failure modes, authentication requirements, or whether multiple connections are allowed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is front-loaded with the tool's core purpose. No unnecessary verbiage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple but the description lacks context about prerequisites, lifecycle (e.g., need to disconnect), and return values. No output schema exists to compensate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the parameter 'name' is adequately described in the schema. The description adds no additional meaning beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Establish a connection') and the resource ('named Oracle database'). It distinguishes from siblings like disconnect, commit, etc., which are different operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool (e.g., before executing queries) or when not to. No mention of alternatives or preconditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_tableA

Get detailed information about a table including columns, constraints, and indexes.

ParametersJSON Schema
NameRequiredDescriptionDefault
tableYesName of the table or view to describe
formatNoOutput format (default: markdown)markdown
schemaNoSchema name (defaults to current user's schema)
connectionYesName of the database connection to use
include_row_countNoWhether to get the row count (can be slow for large tables)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It mentions a parameter behavior (include_row_count can be slow) but does not disclose read-only nature, required permissions, or other behavioral traits. Partial coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys the tool's purpose. It is front-loaded with the key verb 'Get' and resource 'detailed information about a table'. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main outputs (columns, constraints, indexes) and acknowledges a performance aspect (row count slow). It is adequate for a metadata tool with 5 parameters and no output schema, though edge cases are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so each parameter is already documented in the schema. The description adds no extra meaning beyond 'detailed information', which is generic. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves detailed table information including columns, constraints, and indexes. It distinguishes from sibling tools like list_tables (which only lists) and execute_query (which runs queries).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for schema exploration but does not explicitly state when to use this tool versus alternatives like list_tables or get_procedure_params. No when-not or alternative guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

disconnectA

Close a connection to a named Oracle database.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the database connection to close

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It states 'Close a connection' but does not disclose side effects such as whether pending transactions are rolled back or what happens if the connection is already closed. This is adequate but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no extraneous information, achieving maximum conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema) and the context signals, the description is mostly complete. It does not specify behavior for edge cases like non-existent connections, but this is acceptable for a straightforward close operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers the single parameter 'name' with a clear description. The tool description adds no additional meaning beyond the schema, so it meets the baseline for 100% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Close' and the resource 'connection to a named Oracle database', which is specific and distinguishes it from sibling tools like 'connect' and 'list_connections'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use this tool (to close a database connection), but lacks explicit guidance on when not to use it or mention of alternatives beyond what sibling names implicitly provide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_dmlA

Execute a DML statement (INSERT, UPDATE, DELETE) on an Oracle database. Only works on connections with readwrite mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesSQL DML statement to execute
commitNoWhether to commit the transaction (default: true)
connectionYesName of the database connection to use

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must fully disclose behavioral traits. It mentions the destructive nature (INSERT, UPDATE, DELETE) and the connection mode requirement, but fails to describe transaction behavior (e.g., default auto-commit via the commit parameter, which is only in schema), error handling, or return value. This is insufficient for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, consisting of two sentences that front-load the core purpose and then add a critical constraint. Every word is necessary and contributes to clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of an output schema, the description could explain what the tool returns (e.g., number of rows affected). It does not cover transaction details beyond the commit parameter hint, ignoring error scenarios or connection validation. It is adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description does not add any information beyond the schema descriptions for the three parameters (sql, commit, connection). It only provides general context about DML operations, which does not enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool executes DML statements (INSERT, UPDATE, DELETE) on an Oracle database, with a specific requirement for readwrite mode. This verb+resource combination is precise and distinguishes it from sibling tools like execute_query (for SELECT) and execute_plsql (for PL/SQL).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for data modification by listing INSERT, UPDATE, DELETE, and notes the readwrite mode requirement. However, it does not explicitly state when not to use this tool (e.g., for SELECT queries) or name alternative tools like execute_query. The guidance is clear but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_plsqlB

Execute a PL/SQL block or DDL statement (CREATE FUNCTION, CREATE PROCEDURE, etc.). Only works on connections with readwrite mode.

ParametersJSON Schema
NameRequiredDescriptionDefault
plsqlYesPL/SQL block or DDL statement to execute
commitNoWhether to commit after execution (default: true)
connectionYesName of the database connection to use

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behaviors; it mentions readwrite mode requirement but lacks details on side effects, return values, error handling, or DDL auto-commit behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with clear, front-loaded purpose and constraint. No extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, description is too brief for a tool that executes arbitrary code. Lacks return value, error conditions, and typical usage context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all 3 parameters; description adds marginal value by implying connection must be readwrite, but no extra syntax or semantics beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states action (execute) and resource (PL/SQL block or DDL statement). Distinguishes from siblings like execute_dml and execute_procedure by specifying the type of statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a constraint (readwrite mode) but does not explicitly differentiate from similar tools like execute_dml or execute_procedure. Missing when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_procedureC

Execute a stored procedure with input and output parameters.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoInput parameters as key-value pairs
procedureYesName of the stored procedure (can include schema: SCHEMA.PROCEDURE_NAME)
connectionYesName of the database connection to use
out_paramsNoOutput parameters with their types (e.g., {"result": "string", "count": "int"})

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It only says 'execute', which implies modification, but doesn't clarify if this is a read-only operation, whether it commits, or requires specific permissions. This is insufficient for a database mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence is concise, but it omits critical information, making it under-specified rather than efficiently informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (4 parameters, database execution, no output schema), the description lacks essential context about return values, error handling, and execution behavior. The tool is incomplete for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all 4 parameters, so the description adds minimal value beyond stating input and output parameters. The description doesn't elaborate on parameter syntax or constraints beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it executes stored procedures with input/output parameters, distinguishing it from sibling tools like execute_query or execute_dml. However, it doesn't explicitly contrast with these siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., execute_plsql, execute_query). Missing context about transactions, side effects, or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

execute_queryA

Execute a SELECT query on an Oracle database. Returns results as a formatted table. Only SELECT statements are allowed.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesSQL SELECT query to execute
formatNoOutput format (default: markdown)markdown
max_rowsNoMaximum number of rows to return (default: 100)
connectionYesName of the database connection to use

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It discloses read-only nature and output format, but lacks details on error behavior, permissions, or side effects. Adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no fluff, front-loaded with key action and constraint. Every word serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Basic description for a simple read tool, but omits mention of max_rows or connection parameters (though schema covers). No output schema, so could elaborate on return format. Minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description does not add extra meaning beyond the schema for any parameter. The mention of 'formatted table' loosely relates to format but schema already defines it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool executes SELECT queries on Oracle, returns formatted tables, and explicitly restricts to SELECT only. This distinguishes it from siblings like execute_dml or execute_plsql.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states 'Only SELECT statements are allowed,' implying read-only queries, but does not explicitly compare to alternatives or provide when-not conditions. No explicit guidance for selecting this over other execution tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explain_queryC

Get the execution plan for a SQL query.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesSQL query to explain
connectionYesName of the database connection to use

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description does not disclose behavioral traits such as read-only nature, authentication needs, or output format. The agent cannot infer non-destructiveness from the description alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no unnecessary words. However, it is so brief that it sacrifices completeness for conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of output schema and annotations, the description should explain what an execution plan is and that the query is not executed. It lacks these details, making it incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters described. The description adds no extra meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves an execution plan for a SQL query. It uses a specific verb and resource, distinguishing it from siblings like execute_query which actually runs the query.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. It does not mention that the query is not executed, nor does it suggest scenarios where this is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_procedure_paramsB

Get the parameters of a stored procedure or function.

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaNoSchema name (defaults to current user's schema)
procedureYesName of the procedure or function
connectionYesName of the database connection to use

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It only states 'Get' without disclosing any side effects, authentication needs, or error states. The behavioral disclosure is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no unnecessary words. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and sibling tool context, the description does not explain return format or how the output relates to other tools. It is incomplete for an introspection tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers all three parameters with descriptions (100% coverage). The description adds no additional meaning beyond what the schema already provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get') and the resource ('parameters of a stored procedure or function'). It is specific and distinguishes itself from sibling tools like execute_procedure and get_procedure_source.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like execute_procedure or describe_table. The description lacks context about prerequisites or typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_procedure_sourceB

Get the source code of a stored procedure, function, or package.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the procedure/function/package
typeNoType of the object (default: PROCEDURE)PROCEDURE
schemaNoSchema name (defaults to current user's schema)
connectionYesName of the database connection to use

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description does not disclose behavioral traits such as read-only nature, required privileges, side effects, or response format. Only states the basic purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, minimal waste. Front-loaded with the purpose. Could be more structured but appropriate for its length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Missing information about return format, error handling, and behavior when object not found. No output schema to compensate. Incomplete for a tool with 4 parameters and no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds no additional meaning beyond what's in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it retrieves source code for stored procedures, functions, or packages. The verb 'get' and resource 'source code' are specific. Distinguishes from siblings like get_procedure_params.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., get_procedure_params, describe_table). No mentions of prerequisites or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_connectionsA

List all configured Oracle database connections with their status (connected/disconnected) and mode (readonly/readwrite).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the key output fields (status, mode) and implies a read-only operation, which is sufficient for a list tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is concise, front-loaded, and contains no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with no parameters and no output schema; the description covers the purpose and returned fields completely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so baseline is 4. The description adds no redundant parameter info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists all configured Oracle database connections with status and mode, distinguishing it from sibling tools like connect, disconnect, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says when to use (to list connections), and the sibling tools provide context for alternatives, though it lacks explicit when-not-to-use statements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_proceduresB

List stored procedures, functions, and packages in a schema.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by object type
filterNoLIKE pattern to filter object names
schemaNoSchema name (defaults to current user's schema)
connectionYesName of the database connection to use

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must carry full burden. It does not disclose pagination, permissions, default schema behavior, or any side effects. Only states a simple list action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no wasted words. Efficient but could include more context without being verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Description lacks details about output format (e.g., list of names/types), no explanation of filtering behavior, and does not leverage sibling tool context to set expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description adds no extra meaning beyond what the schema already provides for each parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it lists stored procedures, functions, and packages in a schema. Verb 'list' and resource are specific, and it distinguishes from sibling tools like get_procedure_params or execute_procedure.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, no prerequisites mentioned, and no context about when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tablesB

List tables and views in a database schema.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoLIKE pattern to filter table names (e.g., 'MTX%')
schemaNoSchema name (defaults to current user's schema)
connectionYesName of the database connection to use
include_viewsNoWhether to include views (default: true)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description bears full responsibility. It only states the basic action without disclosing resource cost, permission requirements, or error behavior (e.g., what happens if the schema does not exist).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the purpose. It is concise with no wasted words, though it could be slightly expanded without being verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks details about the output format (e.g., list of names vs. full metadata) and fails to contextualize usage relative to sibling tools like describe_table or execute_query. It is minimally viable but leaves gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 4 parameters have descriptions in the input schema (100% coverage), so the tool description adds no extra meaning beyond what the schema provides. Baseline is appropriate at 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List tables and views in a database schema' clearly states the action (list), the target (tables and views), and the context (database schema). It distinguishes among siblings like list_procedures and list_connections.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus siblings like describe_table or execute_query. There is no mention of prerequisites, conditions, or typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rollbackB

Rollback the current transaction on a connection.

ParametersJSON Schema
NameRequiredDescriptionDefault
connectionYesName of the database connection

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden for disclosing behavior. It only states 'rollback' but does not describe side effects, such as the impact on connection state or whether locks are released.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that is front-loaded and contains no filler. Every word is necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a simple tool, but lacks context about transaction state, error conditions, and when rollback is applicable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the only parameter 'connection' has a clear description. The tool description adds no extra meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (rollback) and the resource (current transaction on a connection). It is specific and distinguishes from sibling tools like commit and disconnect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., commit, disconnect). The description does not mention prerequisites or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_connectionA

Test connectivity to a named Oracle database connection. Returns database version and schema information if successful.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the database connection to test

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Describes return value on success but does not mention failure behavior (e.g., error handling), side effects, or that it is read-only. Basic disclosure but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, no fluff. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, description clarifies return value (version and schema info). For a simple test tool (1 param, readonly), mostly complete, but lacks detail on error handling and non-existent connections.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, baseline 3. The description adds no extra meaning beyond the schema; the tool description restates that it uses a named connection. Adequate but no added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states verb 'test', resource 'connectivity to a named Oracle database connection', and return value 'database version and schema information'. Distinguishes from siblings like connect (which establishes a session) and list_connections (which lists available connections).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for verifying connection working before actions, but lacks explicit when-to-use vs alternatives or exclusions. Still clear from context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 16 tool updatesv1.0.0
    • First observedcommit
    • First observedconnect
    • First observeddescribe_table
    • First observeddisconnect
    • First observedexecute_dml
    • First observedexecute_plsql
    • First observedexecute_procedure
    • First observedexecute_query
    • First observedexplain_query
    • First observedget_procedure_params
    • First observedget_procedure_source
    • First observedlist_connections
    • First observedlist_procedures
    • First observedlist_tables
    • First observedrollback
    • First observedtest_connection

TDQS

A3.6/5.0

Scored across 16 tools

Disambiguation5/5

Each tool has a distinct purpose: connection management, querying, DML, PL/SQL, procedures, table metadata, and transaction control. There is no overlap or ambiguity between tool functions.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (e.g., list_tables, describe_table, execute_query). Even single-word tools like commit and rollback are standard for atomic operations and do not break consistency.

Tool Count4/5

With 16 tools, the set is slightly above the ideal 3-15 range but each tool earns its place by covering core database operations without redundancy. The count is still well-scoped for the domain.

Completeness4/5

The tool surface covers connection lifecycle, queries, DML, DDL (via execute_plsql), procedures, execution plans, and transactions. Minor gaps like explicit table creation DDL are mitigated by execute_plsql, and user management is out of scope.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Provides flexible access to Oracle databases for AI assistants like Claude, supporting SQL queries across multiple schemas with comprehensive database introspection capabilities.
    6
    55 npm
    10
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables integration with Oracle Database and Oracle APEX 20.2, allowing LLMs to execute SQL/PL/SQL, manage database objects, and inspect APEX application metadata. It supports full database CRUD operations, object dependency analysis, and detailed page-level inspection of APEX environments.
    3
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Provides AI assistants with secure, structured access to Oracle Database through MCP, enabling SQL execution, metadata exploration, and stored procedure execution.
    -