Listing tables, reading a schema and sampling rows are the three calls that stop a model from inventing column names, and they are all here alongside the raw query tool. Access is whatever your Azure identity already has — there is no separate key to scope, so the cluster's own permissions on that identity are the boundary worth checking before you connect it.
A Python MCP server for Azure Data Explorer and Microsoft Fabric Eventhouse clusters. It signs in with your existing Azure identity and returns query results as structured JSON.
- `execute_query` — any KQL query against the configured database
- `list_tables` — every table in that database
- `get_table_schema` — the columns and types of one table
- `sample_table_data` — a preview of a table's rows, with a sample size you set
- `get_table_details` — table statistics and metadata including row counts and storage size
- A configurable tool list, so you can leave out the ones you never use and keep the context smaller
`ADX_CLUSTER_URL` and `ADX_DATABASE` are required. Authentication uses DefaultAzureCredential, so signing in with the Azure CLI is enough on a workstation; on AKS it prefers workload identity when `AZURE_TENANT_ID` and `AZURE_CLIENT_ID` are present, with the token file at `ADX_TOKEN_FILE_PATH`. `ADX_MCP_SERVER_TRANSPORT` selects stdio, http or sse, bound by `ADX_MCP_BIND_HOST` and `ADX_MCP_BIND_PORT`.
One command plus a key — docker run --rm -i -e ADX_CLUSTER_URL -e ADX_DATABASE -e AZURE_TENANT_ID -e AZURE_CLIENT_ID -e ADX_TOKEN_FILE_PATH adx-mcp-server, then supply credentials
