库斯托mcp
从Claude和其他LLM查询Azure数据资源管理器
    
A. 模型上下文协议 服务器 Azure数据资源管理器 (摩擦)。
零配置。无头认证。多集群。
______________________________________________________________________
开始使用
一个命令。启动时没有配置文件、凭据和集群URL。
Claude Code
claude mcp add kusto -- uvx --from git+https://github.com/animeshkundu/kusto-mcp kusto-mcpClaude 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 failsLLM提供 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查询形状的覆盖范围。目前的计划是:
- 表参考表格(普通标识符、括号引用标识符和
external_table()). - 常见查询运算符(
where,project,summarize,join,union). - 函数和多语句形式(
let,datatable,database()/cluster()参考文献如今,重写仅适用于前导表引用,因此let绑定不会被重写。 - 故障覆盖率(管理命令拒绝、未知标识符、模式提示)。
每个阶段都添加了数据驱动的测试,以验证MCP发送给Kusto的确切查询文本。
为什么是库斯托?
| 功能 | 详细信息 |
|---|---|
| 零配置 | 没有CLI参数。没有环境变量。开始吧 |
| 多集群 | 查询同一会话中的不同集群。连接已缓存。 |
| 无头身份验证 | 适用于远程机器、SSH会话、容器——任何没有浏览器的地方。 |
| 自动校正的 | 查询错误包括表架构,因此LLM会自行修复。 |
| 结构化输出 | 带有列名和类型值的JSON,而不是不透明的字符串。 |
| 安全默认值 | 3分钟超时、管理命令阻塞、延迟部分故障。 |
发布
发布内容如下 自动的.当 version 在 pyproject.toml 被碰撞和推到 main,CI创建了一个带有内置轮和sdist的GitHub版本。
要发布新版本,请执行以下操作:
- 碰撞
version在pyproject.toml - 推至
main - 完成——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