Oracle MCP server has 12 tools with complete input schemas and descriptions, but quality is inconsistent. All tools have verb-noun naming (list_, get_, exec_, describe_) and documented parameters with types. However, descriptions are generic and lack LLM-optimization guidance (e.g., 'Get a list of all tables' vs 'Retrieve tables matching a pattern; use this to explore schema before querying'). Output schemas are not documented, callers cannot predict response structure. Error handling returns raw exception strings with no recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite clear risk stratification (READ_ONLY vs WRITE vs DESTRUCTIVE). Parameter descriptions lack format constraints and dependency hints. Baseline: avg tool description ~60 chars (below 194-char production median); no param descriptions exceed 80 chars; zero output schema documentation.
Perform comprehensive database health checks including tablespace usage, session status, wait events, and invalid objects
Get a description of a table in the oracle database
Execute create/drop/alter to the oracle database
Execute insert/update/delete/truncate to the oracle database
Execute PL/SQL code blocks including stored procedures, functions and anonymous blocks
Get the execution plan for a SQL query
No output schemas documented. Callers cannot predict response structure (CSV format, JSON, plain text, or structured objects). LLMs cannot plan downstream tool calls or extract fields reliably.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk stratification. exec_ddl_sql and exec_dml_sql are destructive/write operations but lack annotations to warn agents.
Error handling returns raw exception strings (e.g., 'Error occurred: <exception>') with no recovery guidance. LLMs cannot determine if error is retryable, user-fixable, or fatal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
Get detailed information about a database object
Get the slowest queries based on elapsed time
List database objects (tables, views, sequences, packages) in a schema
Get a list of all schemas in the oracle database
Get a list of all tables in the oracle database with optional filtering and pagination
Execute SELECT queries to read data from the oracle database
Parameter descriptions lack format constraints and dependency hints. E.g., 'pattern' param has no regex or length limit; 'query' param has no guidance on SQL dialect or size limits; no hint that exec_dml_sql requires a transaction context.
Descriptions are generic and lack LLM-optimization guidance. E.g., 'Get a list of all schemas' does not explain when to call this vs list_objects, or what to do with the result. Baseline production descriptions are 194 chars; these average ~60 chars.