Azure数据查询LLM工具

一个无配置、多集群支持的Azure Data Explorer (Kusto)查询工具,通过LLM(如Claude)实现自动化查询和认证。

  • by animeshkundu
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 animeshkundu/kusto-mcp

使用说明

库斯托mcp

从Claude和其他LLM查询Azure数据资源管理器

A. 模型上下文协议 服务器 Azure数据资源管理器 (摩擦)。
零配置。无头认证。多集群。


开始使用

一个命令。启动时没有配置文件、凭据和集群URL。

Claude Code
claude mcp add kusto -- uvx --from git+https://github.com/animeshkundu/kusto-mcp kusto-mcp
Claude Desktop

增添 claude_desktop_config.json:

{
  "mcpServers": {
    "kusto": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/animeshkundu/kusto-mcp", "kusto-mcp"]
    }
  }
}
pip
pip install git+https://github.com/animeshkundu/kusto-mcp

运作原理

You: "Show me the top 5 APIs by request count in the last hour"

Claude ──► kusto-mcp ──► Azure Data Explorer
                │
                ├─ Authenticates automatically (Azure CLI or device code)
                ├─ Caches connections per cluster
                ├─ Returns structured JSON
                └─ Includes schema hints if query fails

LLM提供 cluster, database,以及 query 每次工具调用。服务器处理其他所有事情——身份验证、连接、格式化、错误恢复。

认证

第一次调用工具时,身份验证是自动的。无需设置。

方法 何时 如何
Azure命令行界面 你跑了 az login 无声,无互动
设备代码 无CLI会话 服务器返回代码→ LLM要求您打开浏览器→ 完成了
缓存令牌 首次身份验证后 重启后持续,有效期约90天

对于单租户场景: kusto-mcp --tenant-id YOUR_TENANT_ID
本地ADX仿真器(http:// URL):无需身份验证。

工具

所有工具都需要 cluster 和 database 参数。LLM会自动提供这些。

表类型遵循Kusto语义:内部表被摄入集群,而外部表引用集群外部存储的数据,并通过以下方式查询 external_table() 与自己 .show external tables 元数据命令。物化视图的查询方式类似于内部表。

带有空格或特殊字符的KQL标识符必须使用括号引用,例如 ['table-name'] 或 ["table name"]对于外部表,使用括号括起来的标识符(例如, ['table-name']),服务器将把它们包装起来 external_table("table-name").

当 table_kind='external',服务器重写前导表引用和任何直接引用 join/union 表令牌。对于子查询或let绑定,请使用 external_table() 明确地。

工具 说明
list_tables 按种类列出表格(internal, external, materialized_view,或 all)
execute_query 运行KQL;集 table_kind='external' 用于外部桌子
retrieve_table_schema 获取表架构;集 table_kind='external' 用于外部桌子

KQL覆盖计划

我们正在扩大基于官方KQL参考的KQL查询形状的覆盖范围。目前的计划是:

  1. 表参考表格(普通标识符、括号引用标识符和 external_table()).
  2. 常见查询运算符(where, project, summarize, join, union).
  3. 函数和多语句形式(let, datatable, database()/cluster() 参考文献如今,重写仅适用于前导表引用,因此 let 绑定不会被重写。
  4. 故障覆盖率(管理命令拒绝、未知标识符、模式提示)。

每个阶段都添加了数据驱动的测试,以验证MCP发送给Kusto的确切查询文本。

为什么是库斯托?

功能 详细信息
零配置 没有CLI参数。没有环境变量。开始吧
多集群 查询同一会话中的不同集群。连接已缓存。
无头身份验证 适用于远程机器、SSH会话、容器——任何没有浏览器的地方。
自动校正的 查询错误包括表架构,因此LLM会自行修复。
结构化输出 带有列名和类型值的JSON,而不是不透明的字符串。
安全默认值 3分钟超时、管理命令阻塞、延迟部分故障。

发布

发布内容如下 自动的.当 version 在 pyproject.toml 被碰撞和推到 main,CI创建了一个带有内置轮和sdist的GitHub版本。

要发布新版本,请执行以下操作:

  1. 碰撞 version 在 pyproject.toml
  2. 推至 main
  3. 完成——CI处理其余部分

发展

git clone https://github.com/animeshkundu/kusto-mcp && cd kusto-mcp
uv sync --dev        # install deps
uv run pytest -v     # run tests
uv run kusto-mcp     # start server

许可证

麻省理工学院