Exasol MCP Server Tools#
Tools Providing Information About Custom Database Objects#
list_exasol_schemas#
- Description:
Lists database schemas. Visibility of schemas can be restricted in the settings. Can be hidden globally via
enable_list_toolsin the settings (see Tool Setup).- Returns:
Type:
list- Data:
name: name of the schemacomment: schema comment, if available
find_exasol_schemas#
- Description:
Finds database schemas by looking for the specified keywords in their names and comments. Visibility of schemas can be restricted in the settings. Can be hidden globally via
enable_find_toolsin the settings (see Tool Setup).- Returns:
Type:
list- Data:
name: name of the schemacomment: schema comment, if available
list_exasol_tables_and_views#
- Description:
Lists tables and views in the specified database schema. Visibility of tables and views can be restricted in the settings. Can be hidden globally via
enable_list_toolsin the settings (see Tool Setup).- Returns:
Type:
list- Data:
schema: name of the schema where the table or view is locatedname: name of the table or viewcomment: table or view comment, if available
find_exasol_tables_and_views#
- Description:
Finds tables and views by looking for the specified keywords in their names and comments. Optionally, limits the search to one specified schema. Visibility of tables and views can be restricted in the settings. Can be hidden globally via
enable_find_toolsin the settings (see Tool Setup).- Returns:
Type:
list- Data:
schema: name of the schema where the table or view is locatedname: name of the table or viewcomment: table or view comment, if available
list_exasol_custom_functions#
- Description:
Lists custom functions in the specified database schema. Visibility of functions can be restricted in the settings. Can be hidden globally via
enable_list_toolsin the settings (see Tool Setup).- Returns:
Type:
list- Data:
schema: name of the schema where the function is locatedname: name of the functioncomment: function comment, if available
find_exasol_custom_functions#
- Description:
Finds custom functions by looking for the specified keywords in their names and comments. Optionally, limits the search to one specified schema. Visibility of functions can be restricted in the settings. Can be hidden globally via
enable_find_toolsin the settings (see Tool Setup).- Returns:
Type:
list- Data:
schema: name of the schema where the function is locatedname: name of the functioncomment: function comment, if available
list_exasol_user_defined_functions#
- Description:
Lists User Defined Functions (UDF) in the specified database schema. Visibility of UDFs can be restricted in the settings. Can be hidden globally via
enable_list_toolsin the settings (see Tool Setup).- Returns:
Type:
list- Data:
schema: name of the schema where the UDF is locatedname: name of the UDFcomment: UDF comment, if available
find_exasol_user_defined_functions#
- Description:
Finds User Defined Functions (UDF) by looking for the specified keywords in their names and comments. Optionally, limits the search to one specified schema. Visibility of UDFs can be restricted in the settings. Can be hidden globally via
enable_find_toolsin the settings (see Tool Setup).- Returns:
Type:
list- Data:
schema: name of the schema where the UDF is locatedname: name of the UDFcomment: UDF comment, if available
list_exasol_preprocessors#
- Description:
Lists available SQL preprocessor scripts and reports which one is currently active in the session. Can be disabled in the settings (see Tool Setup).
- Returns:
Type:
dict- Data:
preprocessors: list of preprocessor scripts, each with:schema: name of the schema where the preprocessor is locatedname: name of the preprocessor scriptcomment: script comment, if available
current_preprocessor: fully-qualified name of the active preprocessor (e.g.MY_SCHEMA.MY_PREPROCESSOR), ornullif none is set
set_exasol_preprocessor#
- Description:
Activates a SQL preprocessor script at the session level. This setting is not persistent: the MCP server manages the database connection independently and may reconnect without notice, silently resetting the active preprocessor. Before running queries that depend on a preprocessor, the agent should verify the active setting with
list_exasol_preprocessorsand re-apply if necessary. Can be disabled in the settings (see Tool Setup).- Arguments:
schema_name: name of the schema containing the preprocessor scriptscript_name: name of the preprocessor script
- Returns:
Type:
stringData: fully-qualified name of the newly-activated preprocessor
describe_exasol_tables_and_views#
- Description:
Provides full available information about one or more specified tables and/or views. Pass the names of every table or view needed in a single call.
- Parameters:
schema_name: name of the schema containing the tables and/or viewstable_names: list of table and/or view names to describe
- Returns:
Type:
list- Data: one entry per requested name, in the order requested:
schema: name of the schema where the table or view is locatedname: name of the table or viewcomment: table or view comment, if availablecolumns: list of table or view columnsname: column namecomment: column comment, if availabletype: SQL type, e.g. “VARCHAR(2000)”
constraints: for tables only, list of table constraints if there are any:name: constraint nameconstraint_type: constraint type - either “PRIMARY KEY” or “FOREIGN_KEY”columns: comma separated list of columns the constraint is applied toreferenced_schema: schema referenced in the FOREIGN KEY constraintreferenced_table: table referenced in the FOREIGN KEY constraintreferenced_columns: comma separated list of columns in the referenced table in the FOREIGN KEY constraint
If any requested name is not found, the whole call fails with an error naming the missing table(s) or view(s).
summarize_exasol_table#
- Description:
Summarizes the content of a table or view. Returns the total row count and a configurable number of sample rows (default: 10). For each column returns:
most common distinct values in descending frequency order
number of distinct non-NULL values
presence of NULL values and their percentage
minimum and maximum values (numeric columns only)
Must be explicitly enabled in the settings (see Tool Setup).
- Parameters:
schema_name: name of the schematable_name: name of the table or viewsample_size(optional, default 10): number of sample rows to include, between 1 and 100top_values(optional, default 5): number of most common distinct values to return per column, between 1 and 100
- Returns:
Type:
dict- Data:
schema: name of the schema where the table or view is locatedname: name of the table or viewcomment: table or view comment, if availablerow_count: total number of rows in the table or viewcolumns: list of column statistics, each column contains:name: column namecomment: column comment, if availabletype: SQL type, e.g. “DECIMAL(18,0)”distinct_count: number of distinct non-NULL valuesmin: minimum value for numeric columns,nullotherwisemax: maximum value for numeric columns,nullotherwisetop_values: most common distinct values in descending frequency order; empty list if all values are NULLhas_nulls:trueif the column contains at least one NULL valuenull_percentage: percentage of NULL values rounded to whole percent
sample: sample rows, in the shape controlled by thequery_result_formatsetting (see Tool Setup) - by default{"columns": [...], "rows": [[...], ...]}, or a list of dicts with column names as keys ifquery_result_formatis set to"dict"
describe_exasol_custom_functions#
- Description:
Provides full available information about one or more specified custom functions. Pass the names of every function needed in a single call.
- Parameters:
schema_name: name of the schema containing the functionsfunc_names: list of function names to describe
- Returns:
Type:
list- Data: one entry per requested name, in the order requested:
input: list of input parametersname: parameter nametype: SQL type, e.g. “VARCHAR(2000)”
returns: returned SQL type
If any requested name is not found, the whole call fails with an error naming the missing function(s).
describe_exasol_user_defined_functions#
- Description:
Provides full available information about one or more specified User Defined Functions (UDFs). Pass the names of every UDF needed in a single call.
- Parameters:
schema_name: name of the schema containing the UDFsfunc_names: list of UDF names to describe
- Returns:
Type:
list- Data: one entry per requested name, in the order requested:
input: list of input parametersname: parameter nametype: SQL type, e.g. “VARCHAR(2000)”
dynamic_input: indication that the UDF accepts dynamic inputreturns: for return type UDF, returned SQL typeemits: for emit type UDF, the list of output columns:name: parameter nametype: SQL type
dynamic_output: for emit type UDF, indication that the UDF emits dynamic output
If any requested name is not found or fails to parse, the whole call fails with an error naming the problem UDF(s).
Tools Executing a Query#
execute_exasol_query#
- Description:
Executes the specified query, which must be a SELECT statement. The query should not modify the data. SELECT INTO command is not allowed. An optional
row_limitparameter can be used to preview a sample of results without fetching all rows. The query is then wrapped inSELECT * FROM (<query>) LIMIT <row_limit>. Ifrow_limitis omitted, the server’s configureddefault_row_limitsetting (see Tool Setup), if any, is applied instead.- Returns:
Type:
dictorlist, depending on thequery_result_formatsetting (see Tool Setup)- Data:
by default (
query_result_format="tabular"): a dict withcolumns(list of column names) androws(list of rows, each row a list of values in the same order ascolumns)if
query_result_formatis set to"dict": selected rows in a form of dictionaries, with column names as keys
profile_exasol_query#
- Description:
Runs the specified SELECT query with profiling enabled and returns a breakdown of the execution plan. Use this to understand why a query is slow.
- Returns:
Type:
dictorlist, depending on thequery_result_formatsetting (see Tool Setup)Data: the execution plan breakdown, in the shape controlled by
query_result_format(seeexecute_exasol_queryabove). Each row has the following columns:PART_NAME: name of the execution stepPART_INFO: additional information about the stepOBJECT_SCHEMA: schema of the database object involvedOBJECT_NAME: name of the database object involvedOBJECT_ROWS: number of rows processedDURATION: duration of the step in millisecondsCPU: CPU time in milliseconds
execute_exasol_write_query#
- Description:
Executes the specified DML or DDL query. Normally, this tool can be used only if the MCP Client supports elicitation. The user must review and approve the query execution. The elicitation also allows altering the query.
- Returns:
Type:
str or None- Data:
None if the query was executed it its original form, otherwise modified query
Tools for Reading, Writing and Deleting Files in BucketFS#
list_bucketfs_directories#
- Description:
Lists subdirectories of the specified BucketFS directory.
- Returns:
Type:
list- Data:
subdirectory paths relative to the bucket root or the root path provided in the settings
list_bucketfs_files#
- Description:
Lists files in the specified BucketFS directory.
- Returns:
Type:
list- Data:
file paths relative to the bucket root or the root path provided in the settings
find_bucketfs_files#
- Description:
Finds files in the specified BucketFS directory by looking for the provided keywords in their paths. Files are searched in the given directory and all its descendant subdirectories.
- Returns:
Type:
list- Data:
file paths relative to the bucket root or the root path provided in the settings
read_bucketfs_text_file#
- Description:
Reads the content of a BucketFS text file.
- Returns:
Type:
str- Data:
file content
write_text_to_bucketfs_file#
- Description:
Writes the provided text to a file in BucketFS. The new file will overwrite an existing file. Normally, this tool can be used only if the MCP Client supports elicitation. The user must confirm the operation via elicitation.
- Returns:
Type:
None
download_file#
- Description:
Downloads a file from a given url and saves it at the specified path in BucketFS. The new file will overwrite an existing file. Normally, this tool can be used only if the MCP Client supports elicitation. The user must confirm the operation via elicitation.
- Returns:
Type:
None
delete_bucketfs_file#
- Description:
Deletes BucketFS file at the specified path. Normally, this tool can be used only if the MCP Client supports elicitation. The user must confirm the operation via elicitation.
- Returns:
Type:
None
delete_bucketfs_directory#
- Description:
Deletes a BucketFS directory at the specified path. This operation will recursively delete all files and all subdirectories in this directory. Normally, this tool can be used only if the MCP Client supports elicitation. The user must confirm the operation via elicitation.
- Returns:
Type:
None
Tools Providing Information About Exasol SQL Dialect#
list_exasol_sql_types#
- Description:
Lists Exasol SQL types and their parameters. Can be hidden globally via
enable_dialect_toolsin the settings (see Tool Setup).- Returns:
Type:
list- Data:
type: SQL type, e.g. “DECIMAL(10,5)”create_params: type parameters to be specified when creating a table columnprecision: default precision where applicable
list_exasol_system_tables#
- Description:
Lists Exasol system tables in the SYS schema. Can be hidden globally via
enable_dialect_toolsin the settings (see Tool Setup).- Returns:
Type:
list- Data:
table name
describe_exasol_system_table#
- Description:
Provides full available information about the specified system table. Can be hidden globally via
enable_dialect_toolsin the settings (see Tool Setup).- Returns:
Type:
dict- Data:
schema: name of the schema - SYSname: name of the system tablecomment: table comment
list_exasol_statistics_tables#
- Description:
Lists Exasol statistics tables in the EXA_STATISTICS schema. Can be hidden globally via
enable_dialect_toolsin the settings (see Tool Setup).- Returns:
Type:
list- Data:
table name
describe_exasol_statistics_table#
- Description:
Provides full available information about the specified statistics table. Can be hidden globally via
enable_dialect_toolsin the settings (see Tool Setup).- Returns:
Type:
dict- Data:
schema: name of the schema - EXA_STATISTICSname: name of the statistics tablecomment: table comment
list_exasol_keywords#
- Description:
Lists Exasol keywords that start with a given letter. A tool argument specifies if the output should include keywords that are reserved words or not reserved words. Can be hidden globally via
enable_dialect_toolsin the settings (see Tool Setup).- Returns:
Type:
list- Data:
keyword
list_exasol_built_in_function_categories#
- Description:
Lists built-in function categories. Can be hidden globally via
enable_dialect_toolsin the settings (see Tool Setup).- Returns:
Type:
list- Data:
function category
list_exasol_built_in_functions#
- Description:
Lists built-in functions in the specified category. Can be hidden globally via
enable_dialect_toolsin the settings (see Tool Setup).- Returns:
Type:
list- Data:
function name
describe_exasol_built_in_function#
- Description:
Provides full available information about the specified built-in function. Returns a list that in most cases includes one data structure. However, in few cases, when a function with the same name works with different types of data, the tool returns multiple structures. Can be hidden globally via
enable_dialect_toolsin the settings (see Tool Setup).- Returns:
Type:
list- Data:
name: function namealias: alternative function name, if availabletypes: comma-separated list of categories the function belongs todescription: description of data returned by the functionpurpose: more detailed description of the function, if availablesyntax: call syntax, if availableusage: guidelines, restrictions and limitations, if applicableexample: one or more call examples
Error Handling#
If a database-backed tool (e.g. execute_exasol_query) fails because of an error
returned by the Exasol server or the underlying driver, the error message returned to
the client never includes internal connection details such as the DSN, database or OS
username, OS name, or driver/client version. For errors specific to the query itself
(for example a SQL syntax error or a reference to a non-existent object) the message
includes the original database error text, since that text does not carry any such
internal information. For all other database-level errors (for example connection or
authentication failures) a generic message is returned instead; full details are only
available in the server-side log.