Oracle Database backend binding plugin for mcpg. Runs parameterised SQL/PL-SQL statements as MCP tools/resources with CEL-computed parameters bound as SQL parameters (never string-interpolated, injection-safe). Uses rust-oracle/ODPI-C with runtime Oracle Instant Client loading.
Four tools with clear names and reasonable descriptions, but significant schema and parameter documentation gaps. The `query` and `execute` tools have minimal input schemas (only 'arguments' object with no property details), making it impossible for LLMs to understand what parameters they accept. `list_tables` and `list_columns` have better-defined schemas with typed string parameters and descriptions. No output schemas documented for any tool. Error handling and recovery guidance absent. CEL parameter binding is a security strength (injection-safe), but this is not surfaced in descriptions to help LLMs understand the safety model.
Execute a parameterised SQL DML/DDL statement and return rows affected. Parameters are CEL-computed from tool arguments and bound as SQL parameters (never interpolated).
List columns from Oracle data dictionary (ALL_TAB_COLUMNS). Returns owner, table_name, column_name, data_type, data_length, nullable, and column_id. Supports optional owner and table name filters via catalog configuration.
List tables from Oracle data dictionary (ALL_TABLES). Returns owner, table_name, and tablespace_name. Supports optional owner and table name filters via catalog configuration.
Execute a parameterised SQL SELECT statement and return rows. Parameters are CEL-computed from tool arguments and bound as SQL parameters (never interpolated).
query and execute tools have opaque input schemas. Input schema shows only 'arguments: object' with no property definitions, type constraints, or parameter descriptions. LLMs cannot determine what parameters these tools accept or how to construct valid calls.
No output schemas documented for any tool. LLMs cannot plan downstream operations or extract required fields (e.g., does list_tables return column names? what is the structure of query results?). This forces agents to guess at response structure.
No error handling or recovery guidance. Tools lack descriptions of failure modes, retryability, or what the LLM should do if a query fails (e.g., 'ORA-00942: table or view does not exist'). Agents have no path forward on errors.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
CEL parameter binding (injection-safe) is mentioned in Cargo.toml but not surfaced in tool descriptions. LLMs do not know that parameters are bound safely and may avoid these tools due to perceived SQL injection risk.
query and execute descriptions lack guidance on when to use each. Both execute parameterized SQL; the distinction (SELECT vs DML/DDL) is buried in the description. LLMs may pick the wrong tool.