The reason generated KQL fails is almost always a column that does not exist. Listing and schema are separate tools here, so an assistant can look before it writes — and external tables, which behave differently, have their own query path rather than being lumped in.
An MCP server for Azure Data Explorer (Kusto) clusters, exposing discovery, schema and query as separate tools across internal tables, external tables and materialized views.
- Everything in the cluster enumerated: internal tables, external tables and materialized views, each listed separately
- Column-level schema for an internal table, a materialized view or an external table, before a query is written
- Query execution against internal tables and materialized views
- Query execution against external tables, which take their own code path
- A local path for development: the Azure Data Explorer emulator needs only a cluster URL
Uv, plus your cluster URL passed on the launch command. Against a real cluster you also pass the tenant, the application id and the secret for the Entra application it authenticates as. Against the local Azure Data Explorer emulator, the cluster URL alone is enough.
