Model Context Protocol server for Azure Data Explorer (ADX/Kusto) providing KQL query execution and database exploration for AI assistants
Server has 4 tools with clear verb-noun naming (execute_query, list_tables, get_table_schema, get_table_sample). All tools have descriptions (avg 150 chars, within baseline 194). Input schemas are present with type declarations. However, parameter descriptions are minimal (1-2 sentences), output schemas are not documented, and error handling lacks recovery guidance. No tool annotations (readOnlyHint, etc.) despite all being read-only. Missing pagination support for list_tables and get_table_sample despite potential for large result sets.
Executes a Kusto Query Language (KQL) query against the configured Azure Data Explorer database and returns the results as a list of dictionaries.
Retrieves a sample of rows from a specified table in the Azure Data Explorer database, useful for understanding data structure and content without querying the entire table.
Retrieves the schema information for a specified table in the Azure Data Explorer database, including column names, data types, and other schema-related metadata.
Retrieves a list of all tables available in the configured Azure Data Explorer database, including their names, folders, and database associations.
Output schemas not documented. LLMs cannot plan downstream calls or extract required fields (e.g., table names from list_tables, column types from get_table_schema). Baseline: 100% of A+ tools document return types.
No pagination support. list_tables and get_table_sample lack limit/offset parameters and total count. Large result sets will blow context window. Baseline: tools returning lists should accept page/offset and limit.
No tool annotations despite all tools being read-only. Missing readOnlyHint metadata prevents agents from understanding safety profile. Current spec (2026-07-28) supports tool annotations.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
Error handling lacks recovery guidance. No indication of retryable vs fatal errors, or what the LLM should do next (e.g., 'Try a simpler query' for execute_query timeout). Baseline: error responses must tell LLM what to do next.
Parameter descriptions are minimal (1-2 sentences). 'sample_size' lacks range constraints (e.g., '1-1000'). Baseline: average param annotation is 72 chars; these are ~30 chars. LLMs cannot infer valid ranges.