A Model Context Protocol server for Azure Data Explorer. Zero config. Headless auth. Multi-cluster.
claude mcp add kusto -- uvx --from git+https://github.com/animeshkundu/kusto-mcp kusto-mcp
Add to claude_desktop_config.json:
{
"mcpServers": {
"kusto": {
"command": "uvx",
"args": ["--from", "git+https://github.com/animeshkundu/kusto-mcp", "kusto-mcp"]
}
}
}
That's it. No cluster URL, credentials, or tenant ID needed at startup. The LLM provides the cluster and database with each tool call.
Auth happens automatically on the first tool call. Tokens are cached persistently across server restarts.
az loginAll tools accept cluster and database as required parameters.
Internal tables are ingested into the cluster. External tables reference data stored outside the cluster and are queried via external_table(). Materialized views are queried like internal tables. When using table_kind='external', the server rewrites leading table references and direct join/union table tokens; use external_table() explicitly in subqueries or let bindings.
| Tool | Description |
|---|---|
list_tables | List tables by kind (internal, external, materialized_view, or all) |
execute_query | Run KQL; set table_kind='external' for external tables |
retrieve_table_schema | Get table schema; set table_kind='external' for external tables |
No CLI arguments required. Start the server and go.
Query different ADX clusters in the same session. Connections cached per cluster.
Azure CLI → device code chain. Works on remote/SSH machines without a browser.
Persistent cache across restarts. Authenticate once, query forever.
Query failures include the table schema so the LLM can self-correct without extra round trips.
3-minute timeouts, management command blocking, and deferred partial query failures.
pip install https://github.com/animeshkundu/kusto-mcp/releases/latest/download/kusto_mcp-0.2.0-py3-none-any.whl
pip install git+https://github.com/animeshkundu/kusto-mcp
uvx kusto-mcp
git clone https://github.com/animeshkundu/kusto-mcp
cd kusto-mcp
uv sync --dev
uv run pytest tests/ -v