Model Context Protocol server for Exasol database providing tools for schema exploration, query execution, and BucketFS file management
This is a well-structured database exploration and querying tool suite with comprehensive coverage of Exasol operations. The server demonstrates strong naming conventions (verb_object pattern throughout), detailed parameter descriptions with constraints, and explicit risk classifications. However, output schemas are largely undocumented in the visible code, and error handling guidance is minimal. The tool set is coherent and domain-focused, with good composition (separate tools for discovery vs. detail retrieval). Parameters generally have type information and descriptions, though some rely on implicit understanding of database concepts. The server is production-grade for database administrators but could improve LLM guidance around error recovery and output structure.
Will recursively delete all files and all subdirectories.
Deletes a file in BucketFS at the provided path. The path is relative to the root location.
Describes a builtin function including its syntax and parameters
Returns detailed information about specified custom functions
Returns detailed information about specified tables and views including columns and constraints
Returns detailed information about specified user-defined functions (scripts)
Output schemas not documented in tool definitions. While parameter inputs are well-typed (e.g., 'keywords: list[str]', 'sample_size: int'), the response structures are not visible in the source code. LLMs cannot predict what fields to expect (e.g., does list_exasol_schemas return [{name, owner, description}] or {schemas: [...]}?). This forces agents to reason blindly about response structure.
Error handling lacks recovery guidance. Tools like execute_exasol_query, execute_exasol_write_query, and delete_bucketfs_directory are destructive or expensive, but there is no visible error handling that guides LLMs on what to do if they fail (e.g., 'Query timeout: consider adding LIMIT or breaking into smaller queries.' or 'Insufficient permissions: contact DBA'). Raw error codes or exceptions leave agents without recourse.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | B | 77 | <=2025-11-25 | v2 |
| 2026-03-09 | C | 63 | - | v1 |
Downloads a file from a given url and saves it in the BucketFS. The file will overwrite an existing file.
The query must be a SELECT statement. Returns data selected by the query.
Executes DML or DDL query. Returns modified query in case it was altered by the user, otherwise none.
Performs a keyword search of files in a specified directory and all descendant subdirectories.
Searches for custom functions by keywords
Searches for schemas by keywords
Searches for tables and views by keywords
Searches for user-defined functions by keywords
Returns subdirectories of a specified directory.
Returns files in a specified directory.
Lists builtin function categories in Exasol
Lists builtin functions available in Exasol
Lists custom functions in a schema
Lists available SQL preprocessor scripts
Lists schemas in the database
Lists all SQL types available in Exasol
Lists tables and views in a schema
Lists user-defined functions (scripts) in a schema
Runs the query with profiling enabled and returns a breakdown of the execution plan. Use this to understand why a query is slow.
Reads the content of a text file at the provided path in BucketFS and returns it as a string. The path is relative to the root location.
Activates the specified SQL preprocessor script at the session level. This setting may be silently reset if the server reconnects to the database. Verify with list_exasol_preprocessors before running queries that depend on it.
Column statistics (distinct count, numeric min/max) and a row sample.
Writes a piece of text to a file in BucketFS. The path is relative to the root location.
Destructive operations (execute_exasol_write_query, delete_bucketfs_file, delete_bucketfs_directory) lack confirmation or dry-run support. Agents can execute irreversible actions without an intermediate verification step. A confirm_before_execute pattern would prevent accidental data loss.
Pagination is missing from tools returning lists. Tools like list_exasol_schemas, list_exasol_tables_and_views, list_exasol_builtin_functions do not expose limit, offset, or cursor parameters. If a schema has thousands of tables, the entire result set is returned, bloating the context window and potentially timing out.
Tool descriptions are minimal for discovery/reference tools. Tools like list_exasol_sql_types and list_exasol_builtin_function_categories have descriptions under 50 characters (e.g., 'Lists builtin function categories in Exasol'). These lack context on WHEN to call them. A better description would be: 'Lists all available Exasol SQL types (INT, VARCHAR, DECIMAL, etc.). Call this to see type options before creating tables or casting columns.'
download_file accepts a URL parameter but lacks validation or threat guidance. An LLM could be tricked into downloading malicious files. The description should explicitly state: 'Only download from trusted sources. The file is saved to BucketFS and can be executed if imported as a function.' Security considerations are absent.